Documentation ¶
Index ¶
- Constants
- Variables
- func KeysMatchPath(examine map[string][]string, lookFor []string) []string
- func PopulateFields(protoMessage proto.Message, fieldValues map[string][]string) error
- func PopulateOneField(protoMessage proto.Message, fieldPath string, fieldValues []string) error
- func PopulateSingularFields(protoMessage proto.Message, fieldValues map[string]string) error
Constants ¶
const ( // CharsField contains the characters allowed in a field name (URL path or body) CharsField = `-_.0-9a-zA-Z` // CharsLiteral contains the the characters allowed in a URL path literal segment. CharsLiteral = `-_.~0-9a-zA-Z%` // RegexURLPathSingleSegmentValue contains the regex expression for matching a single URL // path segment (i.e. `/` is not allowed). Since gorilla/mux hands uses the decoded paths to // match, we can just accept any characters. RegexURLPathSingleSegmentValue = ".+" // RegexURLPathSingleSegmentValue contains the regex expression for matching multiple URL // path segments (i.e. `/` is allowed). Since gorilla/mux hands uses the decoded paths to // match, we can just accept any characters. RegexURLPathMultipleSegmentValue = ".+" )
Variables ¶
var ( // CharsFieldPath contains the characters allowed in a dotted field path. CharsFieldPath string // RegexField contains the regex expression for matching a single (not nested) field name. RegexField string // RegexField contains the regex expression for matching a dotted field path. RegexFieldPath string // RegexLiteral contains the regex expression for matching a URL path literal segment. RegexLiteral string )
Functions ¶
func KeysMatchPath ¶
KeysMatchPath returns the keys in `examine` that match any of the elements in `lookFor`, interpreting the latter as dotted-field paths. This means a match occurs when (a) the two are identical, or (b) when any element of `lookFor` is a prefix of the `examine` key and is followed by a period. For example: KeysMatchPath(map[string][]string{"loc": nil, "loc.lat": nil, "location":nil},
[]string{"loc"}) == []string{"loc","loc.lat"}
func PopulateFields ¶
PopulateFields sets the fields within protoMessage to the values provided in fieldValues. The fields and values are provided as a map of field paths to lists of string representations of their values. The field paths can refer to fields nested arbitrarily deep within protoMessage. `fieldValues` contains the list of values applicable to the field: a single value of singular fields, or ordered values for a repeated field. This returns an error if any field path is not valid or if any value can't be parsed into the correct data type for the field.
func PopulateOneField ¶
PopulateOneField finds in protoMessage the field identified by fieldPath (which could refer to an arbitrarily nested field using dotted notation) and sets it to `value`. It returns an error if the fieldPath does not properly reference a field, or if `fieldValues` could not be parsed into a list of the data type expected for the field. `fieldValues` is a slice to allow passing a series of repeated field entries.
func PopulateSingularFields ¶
PopulateSingularFields sets the fields within protoMessage to the values provided in fieldValues. The fields and values are provided as a map of field paths to the string representation of their values. The fields paths can refer to fields nested arbitrarily deep within protoMessage. This returns an error if any field path is not valid or if any value can't be parsed into the correct data type for the field.
Types ¶
This section is empty.