mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 22:05:43 +01:00
* Add gql client generation files * Update dependencies * Add stash-box client generation to the makefile * Move scraped scene object matchers to models * Add stash-box to scrape with dropdown * Add scrape scene from fingerprint in UI
148 lines
2.1 KiB
Go
148 lines
2.1 KiB
Go
package lexer
|
|
|
|
import (
|
|
"strconv"
|
|
|
|
"github.com/vektah/gqlparser/v2/ast"
|
|
)
|
|
|
|
const (
|
|
Invalid Type = iota
|
|
EOF
|
|
Bang
|
|
Dollar
|
|
Amp
|
|
ParenL
|
|
ParenR
|
|
Spread
|
|
Colon
|
|
Equals
|
|
At
|
|
BracketL
|
|
BracketR
|
|
BraceL
|
|
BraceR
|
|
Pipe
|
|
Name
|
|
Int
|
|
Float
|
|
String
|
|
BlockString
|
|
Comment
|
|
)
|
|
|
|
func (t Type) Name() string {
|
|
switch t {
|
|
case Invalid:
|
|
return "Invalid"
|
|
case EOF:
|
|
return "EOF"
|
|
case Bang:
|
|
return "Bang"
|
|
case Dollar:
|
|
return "Dollar"
|
|
case Amp:
|
|
return "Amp"
|
|
case ParenL:
|
|
return "ParenL"
|
|
case ParenR:
|
|
return "ParenR"
|
|
case Spread:
|
|
return "Spread"
|
|
case Colon:
|
|
return "Colon"
|
|
case Equals:
|
|
return "Equals"
|
|
case At:
|
|
return "At"
|
|
case BracketL:
|
|
return "BracketL"
|
|
case BracketR:
|
|
return "BracketR"
|
|
case BraceL:
|
|
return "BraceL"
|
|
case BraceR:
|
|
return "BraceR"
|
|
case Pipe:
|
|
return "Pipe"
|
|
case Name:
|
|
return "Name"
|
|
case Int:
|
|
return "Int"
|
|
case Float:
|
|
return "Float"
|
|
case String:
|
|
return "String"
|
|
case BlockString:
|
|
return "BlockString"
|
|
case Comment:
|
|
return "Comment"
|
|
}
|
|
return "Unknown " + strconv.Itoa(int(t))
|
|
}
|
|
|
|
func (t Type) String() string {
|
|
switch t {
|
|
case Invalid:
|
|
return "<Invalid>"
|
|
case EOF:
|
|
return "<EOF>"
|
|
case Bang:
|
|
return "!"
|
|
case Dollar:
|
|
return "$"
|
|
case Amp:
|
|
return "&"
|
|
case ParenL:
|
|
return "("
|
|
case ParenR:
|
|
return ")"
|
|
case Spread:
|
|
return "..."
|
|
case Colon:
|
|
return ":"
|
|
case Equals:
|
|
return "="
|
|
case At:
|
|
return "@"
|
|
case BracketL:
|
|
return "["
|
|
case BracketR:
|
|
return "]"
|
|
case BraceL:
|
|
return "{"
|
|
case BraceR:
|
|
return "}"
|
|
case Pipe:
|
|
return "|"
|
|
case Name:
|
|
return "Name"
|
|
case Int:
|
|
return "Int"
|
|
case Float:
|
|
return "Float"
|
|
case String:
|
|
return "String"
|
|
case BlockString:
|
|
return "BlockString"
|
|
case Comment:
|
|
return "Comment"
|
|
}
|
|
return "Unknown " + strconv.Itoa(int(t))
|
|
}
|
|
|
|
// Kind represents a type of token. The types are predefined as constants.
|
|
type Type int
|
|
|
|
type Token struct {
|
|
Kind Type // The token type.
|
|
Value string // The literal value consumed.
|
|
Pos ast.Position // The file and line this token was read from
|
|
}
|
|
|
|
func (t Token) String() string {
|
|
if t.Value != "" {
|
|
return t.Kind.String() + " " + strconv.Quote(t.Value)
|
|
}
|
|
return t.Kind.String()
|
|
}
|