Documentation
¶
Index ¶
- Variables
- func AbsFilenameToUrl(filename string) (string, error)
- func AddEscapes(str string, escape rune, escapeRunes string) string
- func CleanMultiplePathSeps(str string, sep rune) string
- func ContainsRune(rs []rune, ru rune) bool
- func CtxErrorStr(rd iorw.ReaderAt, filename string, pos int, msg string, contextSize int) string
- func CtxString(rd iorw.ReaderAt, pos int, contextSize int) (string, error)
- func DetectEnvVar(str, name string) bool
- func EscapeFilename(str string) string
- func ExpandIndexEscape(r iorw.ReaderAt, i int, truth bool, fn func(rune) bool, escape rune) int
- func ExpandIndexesEscape(rd iorw.ReaderAt, index int, truth bool, fn func(rune) bool, escape rune) (int, int)
- func ExpandLastIndexEscape(r iorw.ReaderAt, i int, truth bool, fn func(rune) bool, escape rune) int
- func ImproveExpandIndexEscape(r iorw.ReaderAt, i int, escape rune) int
- func IndexLineColumn(rd iorw.ReaderAt, index int) (int, int, error)
- func IndexLineColumn2(b []byte, index int) (int, int)
- func IsQuoted(s string) bool
- func IsScFatalError(err error) bool
- func LineColumnIndex(rd iorw.ReaderAt, line, column int) (int, error)
- func ParseFields(s string, fieldSep rune) ([]string, error)
- func RemoveEscapes(str string, escape rune) string
- func RemoveEscapes2(rs []rune, escapable []rune, escape rune) []rune
- func RemoveEscapesEscapable(str string, escape rune, escapable string) string
- func RemoveFilenameEscapes(f string, escape, pathSep rune) string
- func RunesExcept(runes, except string) string
- func RunesQuote(rs []rune) (rune, error)
- func SurroundingString(b []byte, k int, pad int) string
- func TrimLineSpaces(str string) string
- func TrimLineSpaces2(str string, pre string) string
- func UnquoteString(s string, esc rune) (string, error)
- func UnquoteStringBs(s string) (string, error)
- func UrlToAbsFilename(url2 string) (string, error)
- func VersionLessThan(a, b string) bool
- func VersionOrdinal(version string) string
- type FilePos
- type RuneRange
- type RuneRanges
- type ScFatalError
- type ScFn
- type ScMatch
- func (m *ScMatch) And(fns ...ScFn) error
- func (m *ScMatch) Digit() error
- func (m *ScMatch) Digits() error
- func (m *ScMatch) DoubleQuotedString(maxLen int) error
- func (m *ScMatch) Eof() bool
- func (m *ScMatch) EscapeAny(escape rune) error
- func (m *ScMatch) Float() error
- func (m *ScMatch) Integer() error
- func (m *ScMatch) Letter() error
- func (m *ScMatch) NRunes(n int) error
- func (m *ScMatch) Optional(fn ScFn) error
- func (m *ScMatch) Or(fns ...ScFn) error
- func (m *ScMatch) QuotedString() error
- func (m *ScMatch) QuotedString2(esc rune, maxLen1, maxLen2 int) error
- func (m *ScMatch) RegexpFromStart(res string, cache bool, maxLen int) error
- func (m *ScMatch) RegexpFromStartCached(res string, maxLen int) error
- func (m *ScMatch) Rune(ru rune) error
- func (m *ScMatch) RuneAny(rs []rune) error
- func (m *ScMatch) RuneAnyNot(rs []rune) error
- func (m *ScMatch) RuneFn(fn func(rune) bool) error
- func (m *ScMatch) RuneFnLoop(fn func(rune) bool) error
- func (m *ScMatch) RuneRange(rr RuneRange) error
- func (m *ScMatch) RuneRangeNot(rr RuneRange) error
- func (m *ScMatch) RuneSequence(seq []rune) error
- func (m *ScMatch) RuneSequenceMid(rs []rune) error
- func (m *ScMatch) RunesAndRuneRanges(rs []rune, rrs RuneRanges) error
- func (m *ScMatch) RunesAndRuneRangesNot(rs []rune, rrs RuneRanges) error
- func (m *ScMatch) Section(open, close string, esc rune, failOnNewline bool, maxLen int, eofClose bool) error
- func (m *ScMatch) Sequence(seq string) error
- func (m *ScMatch) SequenceMid(seq string) error
- func (m *ScMatch) Spaces(includeNL bool, escape rune) error
- func (m *ScMatch) SpacesExcludingNL() bool
- func (m *ScMatch) SpacesIncludingNL() bool
- func (m *ScMatch) StringSection(openclose string, esc rune, failOnNewline bool, maxLen int, eofClose bool) error
- func (m *ScMatch) ToNLExcludeOrEnd(esc rune) int
- func (m *ScMatch) ToNLIncludeOrEnd(esc rune) int
- type ScParse
- func (p *ScParse) And(fns ...ScFn) ScFn
- func (p *ScParse) DoubleQuotedString(maxLen int) ScFn
- func (p *ScParse) EscapeAny(esc rune) ScFn
- func (p *ScParse) FatalOnErr(str string, fn ScFn) ScFn
- func (p *ScParse) Float() ScFn
- func (p *ScParse) GetCacheFunc(name string) *ScParseCacheFn
- func (p *ScParse) Integer() ScFn
- func (p *ScParse) Loop(fn, sep ScFn, lastSep bool) ScFn
- func (p *ScParse) Loop2(fn ScFn) ScFn
- func (p *ScParse) NRunes(n int) ScFn
- func (p *ScParse) Optional(fn ScFn) ScFn
- func (p *ScParse) OptionalSpaces() ScFn
- func (p *ScParse) Or(fns ...ScFn) ScFn
- func (p *ScParse) QuotedString2(esc rune, maxLen1, maxLen2 int) ScFn
- func (p *ScParse) RegexpFromStartCached(res string, maxLen int) ScFn
- func (p *ScParse) Rune(ru rune) ScFn
- func (p *ScParse) RuneAny(rs []rune) ScFn
- func (p *ScParse) RuneFn(fn func(rune) bool) ScFn
- func (p *ScParse) Sequence(seq string) ScFn
- func (p *ScParse) SequenceMid(seq string) ScFn
- func (p *ScParse) Spaces(includeNL bool, escape rune) ScFn
- type ScParseCacheFn
- type ScPosError
- type ScValueFn
- type ScValueKeeper
- func (vk *ScValueKeeper) BytesOrNil() []byte
- func (vk *ScValueKeeper) Int() (int, error)
- func (vk *ScValueKeeper) IntOrZero() int
- func (vk *ScValueKeeper) KeepBytes(fn ScFn) ScFn
- func (vk *ScValueKeeper) KeepValue(fn ScValueFn) ScFn
- func (vk *ScValueKeeper) Reset()
- func (vk *ScValueKeeper) String() string
- func (vk *ScValueKeeper) StringOptional() string
- type Scanner
- func (sc *Scanner) KeepPos() ScannerPos
- func (sc *Scanner) NewValueKeeper() *ScValueKeeper
- func (sc *Scanner) PeekRune() (rune, error)
- func (sc *Scanner) ReadRune() (rune, error)
- func (sc *Scanner) RestorePosOnErr(fn func() error) error
- func (sc *Scanner) SetSrc(src []byte)
- func (sc *Scanner) SrcError(err error) error
- func (sc *Scanner) SrcError2(err error, maxLen int) error
- func (sc *Scanner) SrcErrorf(f string, args ...any) error
- type ScannerPos
- type ScannerR
- type ScannerRPos
Constants ¶
This section is empty.
Variables ¶
var ExtraRunes = "_-~.%@&?!=#+:^" + "(){}[]<>" + "\\/" + " "
var NoMatchErr = errors.New("no match")
Functions ¶
func AbsFilenameToUrl ¶
func CleanMultiplePathSeps ¶
func ContainsRune ¶ added in v1.3.7
func CtxErrorStr ¶ added in v1.3.3
func DetectEnvVar ¶
func EscapeFilename ¶
func ExpandIndexEscape ¶
func ExpandIndexesEscape ¶
func ExpandLastIndexEscape ¶
func IndexLineColumn ¶
Returned line/col values are one-based.
func IndexLineColumn2 ¶ added in v1.3.7
Returned line/col values are one-based.
func IsScFatalError ¶ added in v1.6.0
func LineColumnIndex ¶
Line/col args are one-based.
func RemoveEscapes ¶
func RemoveEscapes2 ¶ added in v1.3.7
func RemoveEscapesEscapable ¶
func RemoveFilenameEscapes ¶
func RunesExcept ¶
func RunesQuote ¶ added in v1.3.7
func TrimLineSpaces2 ¶ added in v1.3.1
func UnquoteString ¶ added in v1.3.7
removes escapes runes (keeping the escaped) if quoted
func UnquoteStringBs ¶ added in v1.3.7
unquote string with backslash as escape
func UrlToAbsFilename ¶
func VersionLessThan ¶ added in v1.3.1
func VersionOrdinal ¶ added in v1.3.1
constructs a byte array (returned as a string) with the count of sequential digits to be able to compare "1.9"<"1.10"
Types ¶
type FilePos ¶
type RuneRange ¶ added in v1.6.0
type RuneRange [2]rune // assume [0]<[1]
func (RuneRange) IntersectsRange ¶ added in v1.6.0
type RuneRanges ¶ added in v1.6.0
type RuneRanges []RuneRange
func (RuneRanges) HasRune ¶ added in v1.6.0
func (rrs RuneRanges) HasRune(ru rune) bool
type ScFatalError ¶ added in v1.6.0
type ScFatalError struct {
ScPosError
}
type ScMatch ¶ added in v1.6.0
type ScMatch struct {
P *ScParse
// contains filtered or unexported fields
}
scanner match utility funcs
func (*ScMatch) DoubleQuotedString ¶ added in v1.6.0
func (*ScMatch) QuotedString ¶ added in v1.6.0
func (*ScMatch) QuotedString2 ¶ added in v1.6.0
allows escaped runes (if esc!=0)
func (*ScMatch) RegexpFromStart ¶ added in v1.6.0
func (*ScMatch) RegexpFromStartCached ¶ added in v1.6.0
func (*ScMatch) RuneAnyNot ¶ added in v1.6.0
func (*ScMatch) RuneFnLoop ¶ added in v1.6.0
one or more
func (*ScMatch) RuneRangeNot ¶ added in v1.6.0
func (*ScMatch) RuneSequence ¶ added in v1.6.0
func (*ScMatch) RuneSequenceMid ¶ added in v1.6.0
func (*ScMatch) RunesAndRuneRanges ¶ added in v1.6.0
func (m *ScMatch) RunesAndRuneRanges(rs []rune, rrs RuneRanges) error
func (*ScMatch) RunesAndRuneRangesNot ¶ added in v1.6.0
func (m *ScMatch) RunesAndRuneRangesNot(rs []rune, rrs RuneRanges) error
func (*ScMatch) Section ¶ added in v1.6.0
func (m *ScMatch) Section(open, close string, esc rune, failOnNewline bool, maxLen int, eofClose bool) error
match opened/closed sections.
func (*ScMatch) SequenceMid ¶ added in v1.6.0
func (*ScMatch) SpacesExcludingNL ¶ added in v1.6.0
func (*ScMatch) SpacesIncludingNL ¶ added in v1.6.0
func (*ScMatch) StringSection ¶ added in v1.6.0
func (*ScMatch) ToNLExcludeOrEnd ¶ added in v1.6.0
func (*ScMatch) ToNLIncludeOrEnd ¶ added in v1.6.0
type ScParse ¶ added in v1.6.0
type ScParse struct {
M *ScMatch
// contains filtered or unexported fields
}
scanner parse utility funcs
func (*ScParse) DoubleQuotedString ¶ added in v1.6.0
func (*ScParse) GetCacheFunc ¶ added in v1.6.0
func (p *ScParse) GetCacheFunc(name string) *ScParseCacheFn
WARNING: best used when there are no closure variables in the function, otherwise the variables will contain values of previous runs
func (*ScParse) OptionalSpaces ¶ added in v1.6.0
func (*ScParse) QuotedString2 ¶ added in v1.6.0
func (*ScParse) RegexpFromStartCached ¶ added in v1.6.0
func (*ScParse) SequenceMid ¶ added in v1.6.0
type ScParseCacheFn ¶ added in v1.6.0
type ScParseCacheFn struct {
PreRun func()
Data func() any
// contains filtered or unexported fields
}
scanner parse cache func
func (*ScParseCacheFn) IsSet ¶ added in v1.6.0
func (cf *ScParseCacheFn) IsSet() bool
func (*ScParseCacheFn) Run ¶ added in v1.6.0
func (cf *ScParseCacheFn) Run() error
func (*ScParseCacheFn) Set ¶ added in v1.6.0
func (cf *ScParseCacheFn) Set(fn ScFn)
type ScPosError ¶ added in v1.6.0
error with position
func (*ScPosError) Error ¶ added in v1.6.0
func (e *ScPosError) Error() string
type ScValueKeeper ¶ added in v1.6.0
type ScValueKeeper struct {
Value any
// contains filtered or unexported fields
}
func (*ScValueKeeper) BytesOrNil ¶ added in v1.6.0
func (vk *ScValueKeeper) BytesOrNil() []byte
func (*ScValueKeeper) Int ¶ added in v1.6.0
func (vk *ScValueKeeper) Int() (int, error)
func (*ScValueKeeper) IntOrZero ¶ added in v1.6.0
func (vk *ScValueKeeper) IntOrZero() int
func (*ScValueKeeper) KeepBytes ¶ added in v1.6.0
func (vk *ScValueKeeper) KeepBytes(fn ScFn) ScFn
func (*ScValueKeeper) KeepValue ¶ added in v1.6.0
func (vk *ScValueKeeper) KeepValue(fn ScValueFn) ScFn
func (*ScValueKeeper) Reset ¶ added in v1.6.0
func (vk *ScValueKeeper) Reset()
func (*ScValueKeeper) String ¶ added in v1.6.0
func (vk *ScValueKeeper) String() string
func (*ScValueKeeper) StringOptional ¶ added in v1.6.0
func (vk *ScValueKeeper) StringOptional() string
type Scanner ¶ added in v1.3.3
type Scanner struct {
Src []byte
Pos int
M ScMatch
P ScParse
Reverse bool // read direction
Debug bool
ErrFilename string // used for errors only
}
not safe to parse concurrently (match/parse uses closures)
func NewScanner ¶ added in v1.3.3
func NewScanner() *Scanner
func (*Scanner) KeepPos ¶ added in v1.6.0
func (sc *Scanner) KeepPos() ScannerPos
func (*Scanner) NewValueKeeper ¶ added in v1.6.0
func (sc *Scanner) NewValueKeeper() *ScValueKeeper
func (*Scanner) RestorePosOnErr ¶ added in v1.6.0
type ScannerPos ¶ added in v1.6.0
type ScannerPos struct {
Pos int
// contains filtered or unexported fields
}
func (*ScannerPos) Bytes ¶ added in v1.6.0
func (sp *ScannerPos) Bytes() []byte
func (*ScannerPos) IsEmpty ¶ added in v1.6.0
func (sp *ScannerPos) IsEmpty() bool
func (*ScannerPos) Len ¶ added in v1.6.0
func (sp *ScannerPos) Len() int
func (*ScannerPos) Restore ¶ added in v1.6.0
func (sp *ScannerPos) Restore()
func (*ScannerPos) StartEnd ¶ added in v1.6.0
func (sp *ScannerPos) StartEnd() (int, int)
type ScannerR ¶ added in v1.6.0
scanner wrapper to be use with iorw.ReaderAt. Needed because the scanner deals with a []byte src, and the position starts at zero. While the reader first position is at r.Min(), where reading a position less then r.Min() gives error.
func (*ScannerR) KeepPos ¶ added in v1.6.0
func (sc *ScannerR) KeepPos() ScannerRPos
type ScannerRPos ¶ added in v1.6.0
type ScannerRPos struct {
Pos int
// contains filtered or unexported fields
}
func (*ScannerRPos) Bytes ¶ added in v1.6.0
func (sp *ScannerRPos) Bytes() []byte
func (*ScannerRPos) IsEmpty ¶ added in v1.6.0
func (sp *ScannerRPos) IsEmpty() bool
func (*ScannerRPos) Restore ¶ added in v1.6.0
func (sp *ScannerRPos) Restore()
func (*ScannerRPos) StartEnd ¶ added in v1.6.0
func (sp *ScannerRPos) StartEnd() (int, int)