github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/builtins/core/ranges/regexp.go (about)

     1  package ranges
     2  
     3  import (
     4  	"regexp"
     5  )
     6  
     7  type rfRegexp struct {
     8  	rxStart *regexp.Regexp
     9  	rxEnd   *regexp.Regexp
    10  }
    11  
    12  func (rf *rfRegexp) Start(b []byte) bool { return rf.rxStart.Match(b) }
    13  func (rf *rfRegexp) End(b []byte) bool   { return rf.rxEnd.Match(b) }
    14  func (rf *rfRegexp) SetLength(_ int)     { /* do nothing */ }
    15  
    16  func newRegexp(r *rangeParameters) (err error) {
    17  	rf := new(rfRegexp)
    18  
    19  	rf.rxStart, err = regexp.Compile(r.Start)
    20  	if err != nil {
    21  		return err
    22  	}
    23  
    24  	rf.rxEnd, err = regexp.Compile(r.End)
    25  	if err != nil {
    26  		return err
    27  	}
    28  
    29  	r.Match = rf
    30  
    31  	return nil
    32  }