Add identifier grammar
Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)master
							parent
							
								
									9a43b8f696
								
							
						
					
					
						commit
						21db8e8597
					
				|  | @ -19,6 +19,9 @@ | |||
| //	digest-algorithm-separator      := /[+.-_]/
 | ||||
| //	digest-algorithm-component      := /[A-Za-z][A-Za-z0-9]*/
 | ||||
| //	digest-hex                      := /[0-9a-fA-F]{32,}/ ; At least 128 bit digest value
 | ||||
| //
 | ||||
| //      identifier                      := /[a-f0-9]{64}/
 | ||||
| //      short-identifier                := /[a-f0-9]{6,64}/
 | ||||
| package reference | ||||
| 
 | ||||
| import ( | ||||
|  |  | |||
|  | @ -68,6 +68,25 @@ var ( | |||
| 	ReferenceRegexp = anchored(capture(NameRegexp), | ||||
| 		optional(literal(":"), capture(TagRegexp)), | ||||
| 		optional(literal("@"), capture(DigestRegexp))) | ||||
| 
 | ||||
| 	// IdentifierRegexp is the format for string identifier used as a
 | ||||
| 	// content addressable identifier using sha256. These identifiers
 | ||||
| 	// are like digests without the algorithm, since sha256 is used.
 | ||||
| 	IdentifierRegexp = match(`([a-f0-9]{64})`) | ||||
| 
 | ||||
| 	// ShortIdentifierRegexp is the format used to represent a prefix
 | ||||
| 	// of an identifier. A prefix may be used to match a sha256 identifier
 | ||||
| 	// within a list of trusted identifiers.
 | ||||
| 	ShortIdentifierRegexp = match(`([a-f0-9]{6,64})`) | ||||
| 
 | ||||
| 	// anchoredIdentifierRegexp is used to check or match an
 | ||||
| 	// identifier value, anchored at start and end of string.
 | ||||
| 	anchoredIdentifierRegexp = anchored(IdentifierRegexp) | ||||
| 
 | ||||
| 	// anchoredShortIdentifierRegexp is used to check if a value
 | ||||
| 	// is a possible identifier prefix, anchored at start and end
 | ||||
| 	// of string.
 | ||||
| 	anchoredShortIdentifierRegexp = anchored(ShortIdentifierRegexp) | ||||
| ) | ||||
| 
 | ||||
| // match compiles the string to a regular expression.
 | ||||
|  |  | |||
|  | @ -487,3 +487,67 @@ func TestReferenceRegexp(t *testing.T) { | |||
| 	} | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| func TestIdentifierRegexp(t *testing.T) { | ||||
| 	fullCases := []regexpMatch{ | ||||
| 		{ | ||||
| 			input: "da304e823d8ca2b9d863a3c897baeb852ba21ea9a9f1414736394ae7fcaf9821", | ||||
| 			match: true, | ||||
| 		}, | ||||
| 		{ | ||||
| 			input: "7EC43B381E5AEFE6E04EFB0B3F0693FF2A4A50652D64AEC573905F2DB5889A1C", | ||||
| 			match: false, | ||||
| 		}, | ||||
| 		{ | ||||
| 			input: "da304e823d8ca2b9d863a3c897baeb852ba21ea9a9f1414736394ae7fcaf", | ||||
| 			match: false, | ||||
| 		}, | ||||
| 		{ | ||||
| 			input: "sha256:da304e823d8ca2b9d863a3c897baeb852ba21ea9a9f1414736394ae7fcaf9821", | ||||
| 			match: false, | ||||
| 		}, | ||||
| 		{ | ||||
| 			input: "da304e823d8ca2b9d863a3c897baeb852ba21ea9a9f1414736394ae7fcaf98218482", | ||||
| 			match: false, | ||||
| 		}, | ||||
| 	} | ||||
| 
 | ||||
| 	shortCases := []regexpMatch{ | ||||
| 		{ | ||||
| 			input: "da304e823d8ca2b9d863a3c897baeb852ba21ea9a9f1414736394ae7fcaf9821", | ||||
| 			match: true, | ||||
| 		}, | ||||
| 		{ | ||||
| 			input: "7EC43B381E5AEFE6E04EFB0B3F0693FF2A4A50652D64AEC573905F2DB5889A1C", | ||||
| 			match: false, | ||||
| 		}, | ||||
| 		{ | ||||
| 			input: "da304e823d8ca2b9d863a3c897baeb852ba21ea9a9f1414736394ae7fcaf", | ||||
| 			match: true, | ||||
| 		}, | ||||
| 		{ | ||||
| 			input: "sha256:da304e823d8ca2b9d863a3c897baeb852ba21ea9a9f1414736394ae7fcaf9821", | ||||
| 			match: false, | ||||
| 		}, | ||||
| 		{ | ||||
| 			input: "da304e823d8ca2b9d863a3c897baeb852ba21ea9a9f1414736394ae7fcaf98218482", | ||||
| 			match: false, | ||||
| 		}, | ||||
| 		{ | ||||
| 			input: "da304", | ||||
| 			match: false, | ||||
| 		}, | ||||
| 		{ | ||||
| 			input: "da304e", | ||||
| 			match: true, | ||||
| 		}, | ||||
| 	} | ||||
| 
 | ||||
| 	for i := range fullCases { | ||||
| 		checkRegexp(t, anchoredIdentifierRegexp, fullCases[i]) | ||||
| 	} | ||||
| 
 | ||||
| 	for i := range shortCases { | ||||
| 		checkRegexp(t, anchoredShortIdentifierRegexp, shortCases[i]) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue