about summary refs log tree commit diff stats
path: root/src/css/selectorparser.nim
diff options
context:
space:
mode:
Diffstat (limited to 'src/css/selectorparser.nim')
-rw-r--r--src/css/selectorparser.nim34
1 files changed, 18 insertions, 16 deletions
diff --git a/src/css/selectorparser.nim b/src/css/selectorparser.nim
index 70da9119..e1dffcea 100644
--- a/src/css/selectorparser.nim
+++ b/src/css/selectorparser.nim
@@ -45,11 +45,11 @@ type
     failed: bool
     nested: bool
 
-  RelationType* {.size: sizeof(int) div 2.} = enum
-    rtExists, rtEquals, rtToken, rtBeginDash,
-    rtStartsWith, rtEndsWith, rtContains
+  RelationType* = enum
+    rtExists, rtEquals, rtToken, rtBeginDash, rtStartsWith, rtEndsWith,
+    rtContains
 
-  RelationFlag* {.size: sizeof(int) div 2.} = enum
+  RelationFlag* = enum
     rfNone, rfI, rfS
 
   SelectorRelation* = object
@@ -111,28 +111,29 @@ proc parseSelectorList(cvals: seq[CSSComponentValue]; factory: CAtomFactory;
 proc parseComplexSelector(state: var SelectorParser): ComplexSelector
 func `$`*(cxsel: ComplexSelector): string
 
-iterator items*(sels: CompoundSelector): Selector {.inline.} =
-  for it in sels.sels:
+iterator items*(csel: CompoundSelector): lent Selector {.inline.} =
+  for it in csel.sels:
     yield it
 
-func `[]`*(sels: CompoundSelector; i: int): Selector {.inline.} =
-  return sels.sels[i]
+func `[]`*(csel: CompoundSelector; i: int): lent Selector {.inline.} =
+  return csel.sels[i]
 
-func `[]`*(sels: CompoundSelector; i: BackwardsIndex): Selector {.inline.} =
-  return sels.sels[i]
+func `[]`*(csel: CompoundSelector; i: BackwardsIndex): lent Selector
+    {.inline.} =
+  return csel[csel.sels.len - int(i)]
 
-func len*(sels: CompoundSelector): int {.inline.} =
-  return sels.sels.len
+func len*(csel: CompoundSelector): int {.inline.} =
+  return csel.sels.len
 
-proc add*(sels: var CompoundSelector; sel: Selector) {.inline.} =
-  sels.sels.add(sel)
+proc add*(csel: var CompoundSelector; sel: sink Selector) {.inline.} =
+  csel.sels.add(sel)
 
 func `[]`*(cxsel: ComplexSelector; i: int): lent CompoundSelector {.inline.} =
   return cxsel.csels[i]
 
-func `[]`*(cxsel: ComplexSelector; i: BackwardsIndex): CompoundSelector
+func `[]`*(cxsel: ComplexSelector; i: BackwardsIndex): lent CompoundSelector
     {.inline.} =
-  return cxsel.csels[i]
+  return cxsel[cxsel.csels.len - int(i)]
 
 func `[]`*(cxsel: var ComplexSelector; i: BackwardsIndex): var CompoundSelector
     {.inline.} =
@@ -209,6 +210,7 @@ func `$`*(sel: Selector): string =
     return "::" & $sel.elem
 
 func `$`*(sels: CompoundSelector): string =
+  result = ""
   for sel in sels:
     result &= $sel