about summary refs log tree commit diff stats
path: root/src/css/cssparser.nim
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2025-01-15 22:40:10 +0100
committerbptato <nincsnevem662@gmail.com>2025-01-15 22:40:10 +0100
commit5bbced41ec3531c57ecba6095357be691fabcaf9 (patch)
tree97f5bd9e3be2ea081bbbfed554b5ab40b0c41a02 /src/css/cssparser.nim
parentf9b6a0f06bc4f84543a24c8264e02ac89cfc2b4a (diff)
downloadchawan-5bbced41ec3531c57ecba6095357be691fabcaf9.tar.gz
cssparser: enumize CSSFunction name
Diffstat (limited to 'src/css/cssparser.nim')
-rw-r--r--src/css/cssparser.nim22
1 files changed, 19 insertions, 3 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: