github.com/TrueBlocks/trueblocks-core/src/apps/chifra@v0.0.0-20241022031540-b362680128f7/pkg/parser/selector.go (about) 1 package parser 2 3 import ( 4 "errors" 5 6 "github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/base" 7 ) 8 9 var errInvalidSelector = errors.New("expected valid four byte selector") 10 11 // Selector captures four byte function selector (e.g. 0xcdba2fd4) 12 // It's capture method makes sure that the hex value is a valid selector. 13 type Selector struct { 14 Value string 15 } 16 17 func (s *Selector) Capture(values []string) error { 18 literal := values[0] 19 if valid, _ := base.IsValidHex("", literal, 4); !valid { 20 return errInvalidSelector 21 } 22 23 s.Value = literal 24 return nil 25 }