about summary refs log tree commit diff stats
path: root/src/css/cssparser.nim
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2024-11-02 13:33:20 +0100
committerbptato <nincsnevem662@gmail.com>2024-11-02 13:33:44 +0100
commit9a0ce5a578de92361f338c0d823f5ff865dcc2b1 (patch)
treec94903feb0f36459676bc2b19f2018764c50261f /src/css/cssparser.nim
parent8c99938d27afedea3f4f93d5b21e4148ca535af4 (diff)
downloadchawan-9a0ce5a578de92361f338c0d823f5ff865dcc2b1.tar.gz
cssparser: fix parsing of unrecognized at rules
+ clean up a bit
Diffstat (limited to 'src/css/cssparser.nim')
-rw-r--r--src/css/cssparser.nim40
1 files changed, 18 insertions, 22 deletions
diff --git a/src/css/cssparser.nim b/src/css/cssparser.nim
index ec14960e..972f73f3 100644
--- a/src/css/cssparser.nim
+++ b/src/css/cssparser.nim
@@ -283,7 +283,7 @@ proc consumeIdentSequence(state: var CSSTokenizerState): string =
       s &= c
     else:
       state.reconsume()
-      return s
+      break
   return s
 
 proc consumeNumber(state: var CSSTokenizerState): (tflagb, float64) =
@@ -514,9 +514,7 @@ proc skipWhitespace(state: var CSSParseState) =
 
 proc consumeComponentValue(state: var CSSParseState): CSSComponentValue
 
-proc consumeSimpleBlock(state: var CSSParseState): CSSSimpleBlock =
-  state.reconsume()
-  let t = CSSToken(state.consume())
+proc consumeSimpleBlock(state: var CSSParseState; t: CSSToken): CSSSimpleBlock =
   var ending: CSSTokenType
   case t.tokenType
   of cttLbrace: ending = cttRbrace
@@ -527,14 +525,12 @@ proc consumeSimpleBlock(state: var CSSParseState): CSSSimpleBlock =
   while state.at < state.tokens.len:
     let t = state.consume()
     if t == ending:
-      return result
+      break
+    elif t == cttLbrace or t == cttLbracket or t == cttLparen:
+      result.value.add(state.consumeSimpleBlock(CSSToken(t)))
     else:
-      if t == cttLbrace or t == cttLbracket or t == cttLparen:
-        result.value.add(state.consumeSimpleBlock())
-      else:
-        state.reconsume()
-        result.value.add(state.consumeComponentValue())
-  return result
+      state.reconsume()
+      result.value.add(state.consumeComponentValue())
 
 proc consumeFunction(state: var CSSParseState): CSSFunction =
   let t = (CSSToken)state.consume()
@@ -550,7 +546,7 @@ proc consumeFunction(state: var CSSParseState): CSSFunction =
 proc consumeComponentValue(state: var CSSParseState): CSSComponentValue =
   let t = state.consume()
   if t == cttLbrace or t == cttLbracket or t == cttLparen:
-    return state.consumeSimpleBlock()
+    return state.consumeSimpleBlock(CSSToken(t))
   elif t == cttFunction:
     state.reconsume()
     return state.consumeFunction()
@@ -564,7 +560,7 @@ proc consumeQualifiedRule(state: var CSSParseState): Option[CSSQualifiedRule] =
       r.oblock = CSSSimpleBlock(t)
       return some(r)
     elif t == cttLbrace:
-      r.oblock = state.consumeSimpleBlock()
+      r.oblock = state.consumeSimpleBlock(CSSToken(t))
       return some(r)
     else:
       state.reconsume()
@@ -578,11 +574,12 @@ proc consumeAtRule(state: var CSSParseState): CSSAtRule =
     let t = state.consume()
     if t of CSSSimpleBlock:
       result.oblock = CSSSimpleBlock(t)
+      break
     elif t == cttSemicolon:
-      return result
-    elif t ==  cttLbrace:
-      result.oblock = state.consumeSimpleBlock()
-      return result
+      break
+    elif t == cttLbrace:
+      result.oblock = state.consumeSimpleBlock(CSSToken(t))
+      break
     else:
       state.reconsume()
       result.prelude.add(state.consumeComponentValue())
@@ -679,11 +676,10 @@ proc consumeListOfRules(state: var CSSParseState; topLevel = false):
     elif t == cttCdo or t == cttCdc:
       if topLevel:
         continue
-      else:
-        state.reconsume()
-        let q = state.consumeQualifiedRule()
-        if q.isSome:
-          result.add(q.get)
+      state.reconsume()
+      let q = state.consumeQualifiedRule()
+      if q.isSome:
+        result.add(q.get)
     elif t == cttAtKeyword:
       state.reconsume()
       result.add(state.consumeAtRule())