diff options
author | bptato <nincsnevem662@gmail.com> | 2025-01-15 22:40:10 +0100 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2025-01-15 22:40:10 +0100 |
commit | 5bbced41ec3531c57ecba6095357be691fabcaf9 (patch) | |
tree | 97f5bd9e3be2ea081bbbfed554b5ab40b0c41a02 /src | |
parent | f9b6a0f06bc4f84543a24c8264e02ac89cfc2b4a (diff) | |
download | chawan-5bbced41ec3531c57ecba6095357be691fabcaf9.tar.gz |
cssparser: enumize CSSFunction name
Diffstat (limited to 'src')
-rw-r--r-- | src/css/cssparser.nim | 22 | ||||
-rw-r--r-- | src/css/cssvalues.nim | 9 | ||||
-rw-r--r-- | src/css/selectorparser.nim | 14 |
3 files changed, 30 insertions, 15 deletions
diff --git a/src/css/cssparser.nim b/src/css/cssparser.nim index 7e2f6004..94067d24 100644 --- a/src/css/cssparser.nim +++ b/src/css/cssparser.nim @@ -51,8 +51,23 @@ type value*: seq[CSSComponentValue] important*: bool + CSSFunctionType* = enum + cftUnknown = "-cha-unknown" + cftNot = "not" + cftIs = "is" + cftWhere = "where" + cftNthChild = "nth-child" + cftNthLastChild = "nth-last-child" + cftLang = "lang" + cftRgb = "rgb" + cftRgba = "rgba" + cftChaAnsi = "-cha-ansi" + cftUrl = "url" + cftSrc = "src" + cftVar = "var" + CSSFunction* = ref object of CSSComponentValue - name*: string + name*: CSSFunctionType value*: seq[CSSComponentValue] CSSSimpleBlock* = ref object of CSSComponentValue @@ -109,7 +124,7 @@ proc `$`*(c: CSSComponentValue): string = result &= " !important" result &= ";\n" elif c of CSSFunction: - result &= CSSFunction(c).name & "(" + result &= $CSSFunction(c).name & "(" for s in CSSFunction(c).value: result &= $s result &= ")" @@ -509,7 +524,8 @@ proc consumeSimpleBlock(state: var CSSParseState; tok: CSSToken): proc consumeFunction(state: var CSSParseState): CSSFunction = let t = CSSToken(state.consume()) - let res = CSSFunction(name: t.value) + let name = parseEnumNoCase[CSSFunctionType](t.value).get(cftUnknown) + let res = CSSFunction(name: name) while state.has(): let t = state.consume() if t == cttRparen: diff --git a/src/css/cssvalues.nim b/src/css/cssvalues.nim index a2c661d6..8fba787b 100644 --- a/src/css/cssvalues.nim +++ b/src/css/cssvalues.nim @@ -1013,9 +1013,9 @@ func cssColor*(val: CSSComponentValue): Opt[CSSColor] = else: discard elif val of CSSFunction: let f = CSSFunction(val) - if f.name.equalsIgnoreCase("rgb") or f.name.equalsIgnoreCase("rgba"): + if f.name in {cftRgb, cftRgba}: return parseARGB(f.value) - elif f.name.equalsIgnoreCase("-cha-ansi"): + elif f.name == cftChaAnsi: return parseANSI(f.value) return err() @@ -1214,8 +1214,7 @@ func cssURL*(cval: CSSComponentValue; src = false): Option[string] = return some(tok.value) elif cval of CSSFunction: let fun = CSSFunction(cval) - if fun.name.equalsIgnoreCase("url") or - src and fun.name.equalsIgnoreCase("src"): + if fun.name == cftUrl or src and fun.name == cftSrc: for x in fun.value: if not (x of CSSToken): break @@ -1299,7 +1298,7 @@ proc parseValue(cvals: openArray[CSSComponentValue]; inc i if cval of CSSFunction: let fun = CSSFunction(cval) - if fun.name.equalsIgnoreCase("var"): + if fun.name == cftVar: if cvals.skipBlanks(i) < cvals.len: return err() return fun.parseVar(entry, attrs, factory) diff --git a/src/css/selectorparser.nim b/src/css/selectorparser.nim index a927b9be..a3cbdc11 100644 --- a/src/css/selectorparser.nim +++ b/src/css/selectorparser.nim @@ -346,21 +346,21 @@ proc parseLang(cvals: seq[CSSComponentValue]): Selector = proc parseSelectorFunction(state: var SelectorParser; cssfunction: CSSFunction): Selector = - return case cssfunction.name.toLowerAscii() - of "not": + return case cssfunction.name + of cftNot: state.parseRecursiveSelectorFunction(pcNot, cssfunction.value, forgiving = false) - of "is": + of cftIs: state.parseRecursiveSelectorFunction(pcIs, cssfunction.value, forgiving = true) - of "where": + of cftWhere: state.parseRecursiveSelectorFunction(pcWhere, cssfunction.value, forgiving = true) - of "nth-child": + of cftNthChild: state.parseNthChild(cssfunction, PseudoData(t: pcNthChild)) - of "nth-last-child": + of cftNthLastChild: state.parseNthChild(cssfunction, PseudoData(t: pcNthLastChild)) - of "lang": + of cftLang: parseLang(cssfunction.value) else: fail |