about summary refs log tree commit diff stats
path: root/src/html
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2021-08-05 17:16:42 +0200
committerbptato <nincsnevem662@gmail.com>2021-08-05 17:16:42 +0200
commit087f830528b41b00d0bf7a501f7b0472f75ffb18 (patch)
treeae0096738b46ff1710f1116268ebdebb6924a68b /src/html
parent69a0f081e6eefdd6a52b0da6586100349b1a6ea8 (diff)
downloadchawan-087f830528b41b00d0bf7a501f7b0472f75ffb18.tar.gz
Remove static radix tree and small/full builds
Static radix tree was a hack to begin with and I don't want to deal with
it anymore. I might consider small/full builds later on but let's be
honest here, it's premature optimization.
Diffstat (limited to 'src/html')
-rw-r--r--src/html/entity.nim31
-rw-r--r--src/html/htmlparser.nim45
2 files changed, 24 insertions, 52 deletions
diff --git a/src/html/entity.nim b/src/html/entity.nim
index 79c57ca0..72c5c452 100644
--- a/src/html/entity.nim
+++ b/src/html/entity.nim
@@ -3,26 +3,15 @@ import json
 import ../utils/radixtree
 
 const entity = staticRead"../../res/entity.json"
-when defined(small):
-  proc genEntityMap(data: seq[tuple[a: string, b: string]]): RadixNode[string] =
-    result = newRadixTree[string]()
-    for pair in data:
-      result[pair.a] = pair.b
+proc genEntityMap(data: seq[tuple[a: string, b: string]]): RadixNode[string] =
+  result = newRadixTree[string]()
+  for pair in data:
+    result[pair.a] = pair.b
 
-  proc genEntityTable(): seq[tuple[a: string, b: string]] =
-    let entityJson = parseJson(entity)
+proc genEntityTable(): seq[tuple[a: string, b: string]] =
+  let entityJson = parseJson(entity)
 
-    for k, v in entityJson:
-      result.add((k.substr(1), v{"characters"}.getStr()))
-  const entityTable = genEntityTable()
-  let entityMap* = genEntityMap(entityTable)
-else:
-  proc genEntityMap(): StaticRadixTree[string] =
-    let entityJson = parseJson(entity)
-    var entityMap = newStaticRadixTree[string]()
-
-    for k, v in entityJson:
-      entityMap[k.substr(1)] = v{"characters"}.getStr()
-
-    return entityMap
-  const entityMap* = genEntityMap()
+  for k, v in entityJson:
+    result.add((k.substr(1), v{"characters"}.getStr()))
+const entityTable = genEntityTable()
+let entityMap* = genEntityMap(entityTable)
diff --git a/src/html/htmlparser.nim b/src/html/htmlparser.nim
index 67aec2e4..94c474f0 100644
--- a/src/html/htmlparser.nim
+++ b/src/html/htmlparser.nim
@@ -89,38 +89,21 @@ proc getescapecmd(buf: string, at: var int): string =
   elif not isAlphaAscii(buf[i]):
     return ""
 
-  when defined(full):
-    var n = 0
-    var s = ""
-    while true:
-      s &= buf[i]
-      if not entityMap.hasPrefix(s, n):
-        break
-      let pn = n
-      n = entityMap{s, n}
-      if n != pn:
-        s = ""
-      inc i
-
-    if entityMap.nodes[n].leaf:
-      at = i
-      return entityMap.nodes[n].value
-  else:
-    var n = entityMap
-    var s = ""
-    while true:
-      s &= buf[i]
-      if not entityMap.hasPrefix(s, n):
-        break
-      let pn = n
-      n = n{s}
-      if n != pn:
-        s = ""
-      inc i
+  var n = entityMap
+  var s = ""
+  while true:
+    s &= buf[i]
+    if not entityMap.hasPrefix(s, n):
+      break
+    let pn = n
+    n = n{s}
+    if n != pn:
+      s = ""
+    inc i
 
-    if n.leaf:
-      at = i
-      return n.value
+  if n.leaf:
+    at = i
+    return n.value
 
   return ""