Something went wrong on our end
-
Volker Schukai authoredVolker Schukai authored
parser.go 4.87 KiB
package data
import "github.com/volker-schukai/tokenizer"
const (
PipeSymbol = iota + 1 // |
PipeCmdDelimiter
PipeQuote
PipeReflectionIsNil
PipeCmdStatic
PipeCmdIndex
PipeCmdToUpper
PipeCmdToLower
PipeCmdEmpty
PipeCmdEquals
PipeCmdTrim
PipeCmdRawUrlEncode
PipeCmdNot
PipeCmdToInteger
PipeCmdToString
PipeCmdToFloat
PipeCmdToBoolean
PipeCmdToNumber
PipeCmdToJSON
PipeCmdFromJSON
PipeCmdUCFirst
PipeCmdUCWords
PipeCmdLength
PipeCmdBase64Encode
PipeCmdBase64Decode
PipeCmdHTMLSpecialChars
PipeCmdHTMLEntityEncode
PipeCmdHTMLEntityDecode
PipeCmdPlaintext
PipeCmdMD5
PipeCmdSHA1
PipeCmdSHA256
PipeCmdSplit
PipeCmdReplace
PipeCmdJoin
PipeCmdNop
PipeCmdStringPad
PipeCmdStringRepeat
PipeCmdReverse
PipeCmdSubstring
PipeCmdWordwrap
PipeCmdPrefix
PipeCmdSuffix
PipeCmdUrlEncode
PipeCmdUrlDecode
PipeCmdChar
PipeCmdFloor
PipeCmdCeil
PipeCmdRound
PipeCmdAdd
PipeCmdSubtract
PipeCmdMultiply
PipeCmdDivide
PipeCmdModulo
)
func initTokenizer() *tokenizer.Tokenizer {
parser := tokenizer.New()
parser.AllowKeywordUnderscore().AllowNumbersInKeyword()
parser.DefineTokens(PipeSymbol, []string{"|"})
parser.DefineTokens(PipeCmdDelimiter, []string{":"})
parser.DefineTokens(PipeCmdStatic, []string{"static"})
parser.DefineTokens(PipeCmdIndex, []string{"index", "dataset"})
parser.DefineTokens(PipeReflectionIsNil, []string{"isnull", "isnil"})
parser.DefineTokens(PipeCmdNop, []string{"nop"})
parser.DefineTokens(PipeCmdEquals, []string{"eq", "equals", "equal", "?"}) // tested
parser.DefineTokens(PipeCmdEmpty, []string{"empty"}) // tested
parser.DefineTokens(PipeCmdNot, []string{"not", "!"}) // tested
parser.DefineTokens(PipeCmdToInteger, []string{"tointeger", "int", "toint"}) // tested
parser.DefineTokens(PipeCmdToString, []string{"tostring", "str"})
parser.DefineTokens(PipeCmdToFloat, []string{"tofloat", "float"})
parser.DefineTokens(PipeCmdToBoolean, []string{"toboolean", "tobool", "bool"})
parser.DefineTokens(PipeCmdToNumber, []string{"tonumber", "number"})
parser.DefineTokens(PipeCmdToJSON, []string{"tojson", "json", "encodejson", "jsonencode"})
parser.DefineTokens(PipeCmdFromJSON, []string{"fromjson", "decodejson", "jsondecode"})
parser.DefineTokens(PipeCmdToUpper, []string{"toupper", "upper", "strtoupper"}) // tested
parser.DefineTokens(PipeCmdToLower, []string{"tolower", "lower", "strtolower"}) // tested
parser.DefineTokens(PipeCmdChar, []string{"char", "chr"})
parser.DefineTokens(PipeCmdFloor, []string{"floor", "rounddown"})
parser.DefineTokens(PipeCmdCeil, []string{"ceil", "roundup"})
parser.DefineTokens(PipeCmdRound, []string{"round"})
parser.DefineTokens(PipeCmdAdd, []string{"add", "+"})
parser.DefineTokens(PipeCmdSubtract, []string{"subtract", "sub", "-"})
parser.DefineTokens(PipeCmdMultiply, []string{"multiply", "mul", "*"})
parser.DefineTokens(PipeCmdDivide, []string{"divide", "div", "/"})
parser.DefineTokens(PipeCmdModulo, []string{"modulo", "mod", "%"})
parser.DefineTokens(PipeCmdUrlEncode, []string{"urlencoded", "urlencode", "url_encode"})
parser.DefineTokens(PipeCmdUrlDecode, []string{"urldecoded", "urldecoded", "url_decode"})
parser.DefineTokens(PipeCmdRawUrlEncode, []string{"rawurlencode", "rawurlencoded"})
parser.DefineTokens(PipeCmdUCFirst, []string{"ucfirst", "ucfirst"})
parser.DefineTokens(PipeCmdUCWords, []string{"ucwords", "ucwords"})
parser.DefineTokens(PipeCmdLength, []string{"length", "len"})
parser.DefineTokens(PipeCmdBase64Encode, []string{"base64encode", "base64_encode", "base64"})
parser.DefineTokens(PipeCmdBase64Decode, []string{"base64decode", "base64_decode"})
parser.DefineTokens(PipeCmdHTMLSpecialChars, []string{"htmlspecialchars", "html_special_chars"})
parser.DefineTokens(PipeCmdHTMLEntityEncode, []string{"htmlentities", "html_entity_encode"})
parser.DefineTokens(PipeCmdHTMLEntityDecode, []string{"html_entity_decode", "html_entity_decode"})
parser.DefineTokens(PipeCmdPlaintext, []string{"plaintext", "text", "plain", "strip_tags"})
parser.DefineTokens(PipeCmdTrim, []string{"trim"})
parser.DefineTokens(PipeCmdMD5, []string{"md5"})
parser.DefineTokens(PipeCmdSHA1, []string{"sha1"})
parser.DefineTokens(PipeCmdSHA256, []string{"sha256"})
parser.DefineTokens(PipeCmdStringPad, []string{"strpad", "stringpad"})
parser.DefineTokens(PipeCmdStringRepeat, []string{"strrepeat", "stringrepeat"})
parser.DefineTokens(PipeCmdReverse, []string{"reverse", "strrev"})
parser.DefineTokens(PipeCmdSubstring, []string{"substr", "substring"})
parser.DefineTokens(PipeCmdWordwrap, []string{"wordwrap"})
parser.DefineTokens(PipeCmdPrefix, []string{"prefix"})
parser.DefineTokens(PipeCmdSuffix, []string{"suffix"})
parser.DefineTokens(PipeCmdSplit, []string{"split"})
parser.DefineTokens(PipeCmdReplace, []string{"replace"})
parser.DefineTokens(PipeCmdJoin, []string{"join"})
parser.DefineStringToken(PipeQuote, `"`, `"`).SetEscapeSymbol(tokenizer.BackSlash)
return parser
}