(s string, allowAll bool)
| 217 | } |
| 218 | |
| 219 | func parse(s string, allowAll bool) (ref Ref, ok bool) { |
| 220 | i := strings.Index(s, "-") |
| 221 | if i < 0 { |
| 222 | return |
| 223 | } |
| 224 | name := s[:i] // e.g. "sha1", "sha224" |
| 225 | hex := s[i+1:] |
| 226 | meta, ok := metaFromString[name] |
| 227 | if !ok { |
| 228 | if allowAll || testRefType[name] { |
| 229 | return parseUnknown(name, hex) |
| 230 | } |
| 231 | return |
| 232 | } |
| 233 | if len(hex) != meta.size*2 { |
| 234 | ok = false |
| 235 | return |
| 236 | } |
| 237 | dt, ok := meta.ctors(hex) |
| 238 | if !ok { |
| 239 | return |
| 240 | } |
| 241 | return Ref{dt}, true |
| 242 | } |
| 243 | |
| 244 | var testRefType = map[string]bool{ |
| 245 | "fakeref": true, |
no test coverage detected