vnameutil

package
v0.0.22 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 20, 2016 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Overview

Package vnameutil provides utilities for generating consistent VNames from common path-like values (e.g., filenames, import paths).

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Rule

type Rule struct {
	*regexp.Regexp // A pattern to match against an input string
	*spb.VName     // A template to populate with matches from the input
}

A Rule associates a regular expression pattern with a VName template. A Rule can be applied to a string to produce a VName.

func (Rule) Apply

func (r Rule) Apply(input string) (*spb.VName, bool)

Apply reports whether input matches the regexp associated with r. If so, it returns a VName whose fields have values taken from r.VName, with submatches populated from the input string.

Submatch replacement is done using regexp.ExpandString, so the same syntax is supported for specifying replacements.

type Rules

type Rules []Rule

Rules are an ordered set of rewriting rules. Applying a group of rules tries each rule in sequence, and returns the result of the first one that matches.

func ParseRules

func ParseRules(data []byte) (Rules, error)

ParseRules parses Rules from JSON-encoded data in the following format:

[
  {
    "pattern": "re2_regex_pattern",
    "vname": {
      "corpus": "corpus_template",
      "root": "root_template",
      "path": "path_template"
    }
  }, ...
]

Each pattern is an RE2 regexp pattern. Patterns are implicitly anchored at both ends. The template strings may contain markers of the form @n@, that will be replaced by the n'th regexp group on a successful input match.

func (Rules) Apply

func (r Rules) Apply(input string) (*spb.VName, bool)

Apply applies each rule in to the input in sequence, returning the first successful match. If no rules apply, returns (nil, false).

func (Rules) ApplyDefault

func (r Rules) ApplyDefault(input string, v *spb.VName) *spb.VName

ApplyDefault acts as r.Apply, but returns v there is no matching rule.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL