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  }