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 ¶
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 ConvertRule ¶ added in v0.0.31
func ConvertRule(r *spb.VNameRewriteRule) (Rule, error)
ConvertRule compiles a VNameRewriteRule proto into a Rule that can be applied to strings.
func (Rule) Apply ¶
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.
func (Rule) MarshalJSON ¶ added in v0.0.49
MarshalJSON implements the json.Marshaler interface.
func (Rule) ToProto ¶ added in v0.0.49
func (r Rule) ToProto() *spb.VNameRewriteRule
ToProto returns an equivalent VNameRewriteRule proto.
func (*Rule) UnmarshalJSON ¶ added in v0.0.49
UnmarshalJSON implements the json.Unmarshaler interface.
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 LoadRules ¶ added in v0.0.31
LoadRules loads and parses the vname mapping rules in path. If path == "", this returns nil without error (no rules).
func ParseProtoRules ¶ added in v0.0.49
ParseProtoRules reads a wire-encoded *spb.VNameRewriteRules.
func ParseRules ¶
ParseRules reads Rules from JSON-encoded data in a byte array.
func ReadRules ¶ added in v0.0.31
ReadRules 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 ¶
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 ¶
ApplyDefault acts as r.Apply, but returns v there is no matching rule.
func (Rules) ToProto ¶ added in v0.0.49
func (r Rules) ToProto() *spb.VNameRewriteRules
ToProto returns an equivalent VNameRewriteRules proto.