about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/html/parser.nim13
-rw-r--r--src/utils/twtstr.nim3
2 files changed, 10 insertions, 6 deletions
diff --git a/src/html/parser.nim b/src/html/parser.nim
index 8809e392..8c92b5d6 100644
--- a/src/html/parser.nim
+++ b/src/html/parser.nim
@@ -117,9 +117,9 @@ proc parse_tag(buf: string, at: var int): DOMParsedTag =
     tag.open = false
     at = skipBlanks(buf, at)
 
-  while at < buf.len and not buf[at].isWhitespace() and not (tag.open and buf[at] == '/') and buf[at] != '>':
+  while at < buf.len and not buf[at].isWhitespace() and not (tag.open and buf[at] == '/') and buf[at] != '>' and buf[at].isAscii():
     tagname &= buf[at].tolower()
-    at += buf.runeLenAt(at)
+    inc at
 
   tag.tagid = tagType(tagname)
   at = skipBlanks(buf, at)
@@ -153,14 +153,15 @@ proc parse_tag(buf: string, at: var int): DOMParsedTag =
           inc at
       elif at < buf.len:
         while at < buf.len and not buf[at].isWhitespace() and buf[at] != '>':
-          value &= buf[at]
-          at += buf.runeLenAt(at)
+          var r: Rune
+          fastRuneAt(buf, at, r)
+          value &= $r
 
     if attrname.len > 0:
       tag.attrs[attrname] = value
 
   while at < buf.len and buf[at] != '>':
-    at += buf.runeLenAt(at)
+    inc at
 
   if at < buf.len and buf[at] == '>':
     inc at
@@ -463,7 +464,7 @@ proc parseHtml*(inputStream: Stream): Document =
       of '>':
         till_when = false
       else: discard
-      at += lineBuf.runeLenAt(at)
+      inc at
 
     if till_when:
       continue
diff --git a/src/utils/twtstr.nim b/src/utils/twtstr.nim
index 52abade7..47d2c16f 100644
--- a/src/utils/twtstr.nim
+++ b/src/utils/twtstr.nim
@@ -138,6 +138,9 @@ func hexValue*(c: char): int =
 func decValue*(c: char): int =
   return decCharMap[int(c)]
 
+func isAscii*(c: char): bool =
+  return int(c) < 128
+
 func isAscii*(r: Rune): bool =
   return int(r) < 128