about summary refs log tree commit diff stats
path: root/htmlelement.nim
diff options
context:
space:
mode:
Diffstat (limited to 'htmlelement.nim')
-rw-r--r--htmlelement.nim58
1 files changed, 25 insertions, 33 deletions
diff --git a/htmlelement.nim b/htmlelement.nim
index c37b294e..e6dc0ca8 100644
--- a/htmlelement.nim
+++ b/htmlelement.nim
@@ -24,8 +24,8 @@ type
     parentNode*: HtmlNode
     parentElement*: HtmlElement
 
-    rawtext*: ustring
-    fmttext*: ustring
+    rawtext*: string
+    fmttext*: string
     x*: int
     y*: int
     width*: int
@@ -130,12 +130,6 @@ func getFmtLen*(htmlNode: HtmlNode): int =
 func getRawLen*(htmlNode: HtmlNode): int =
   return htmlNode.rawtext.len
 
-func visibleNode*(node: HtmlNode): bool =
-  case node.nodeType
-  of NODE_TEXT: return true
-  of NODE_ELEMENT: return true
-  else: return false
-
 func toInputType*(str: string): InputType =
   case str
   of "button": INPUT_BUTTON
@@ -170,63 +164,61 @@ func toInputSize*(str: string): int =
       return 20
   return str.parseInt()
 
-func getFmtInput(inputElement: HtmlInputElement): ustring =
+func getFmtInput(inputElement: HtmlInputElement): string =
   case inputElement.itype
   of INPUT_TEXT, INPUT_SEARCH:
-    let valueFit = fitValueToSize(inputElement.value.toRunes(), inputElement.size)
+    let valueFit = fitValueToSize(inputElement.value, inputElement.size)
     return valueFit.ansiStyle(styleUnderscore).ansiReset().buttonFmt()
   of INPUT_SUBMIT:
-    return inputElement.value.toRunes().buttonFmt()
+    return inputElement.value.buttonFmt()
   else: discard
 
-func getRawInput(inputElement: HtmlInputElement): ustring =
+func getRawInput(inputElement: HtmlInputElement): string =
   case inputElement.itype
   of INPUT_TEXT, INPUT_SEARCH:
-    return inputElement.value.toRunes().fitValueToSize(inputElement.size).buttonFmt()
+    return inputElement.value.fitValueToSize(inputElement.size).buttonRaw()
   of INPUT_SUBMIT:
-    return inputElement.value.toRunes().buttonFmt()
+    return inputElement.value.buttonRaw()
   else: discard
 
-func getParent*(htmlNode: HtmlNode, tagType: TagType): HtmlElement =
-  var pnode = htmlNode.parentElement
-  while pnode != nil and pnode.tagType != tagType:
-    pnode = pnode.parentElement
-  
-  return pnode
+func ancestor*(htmlNode: HtmlNode, tagType: TagType): HtmlElement =
+  result = htmlNode.parentElement
+  while result != nil and result.tagType != tagType:
+    result = result.parentElement
 
-proc getRawText*(htmlNode: HtmlNode): ustring =
+proc getRawText*(htmlNode: HtmlNode): string =
   if htmlNode.isElemNode():
     case HtmlElement(htmlNode).tagType
     of TAG_INPUT: return HtmlInputElement(htmlNode).getRawInput()
-    else: return @[]
+    else: return ""
   elif htmlNode.isTextNode():
     if htmlNode.parentElement != nil and htmlNode.parentElement.tagType != TAG_PRE:
-      result = htmlNode.rawtext.remove(runeNewline)
+      result = htmlNode.rawtext.remove("\n")
       if unicode.strip($result).toRunes().len > 0:
         if htmlNode.nodeAttr().display != DISPLAY_INLINE:
           if htmlNode.previousSibling == nil or htmlNode.previousSibling.nodeAttr().display != DISPLAY_INLINE:
-            result = unicode.strip($result, true, false).toRunes()
+            result = unicode.strip(result, true, false)
           if htmlNode.nextSibling == nil or htmlNode.nextSibling.nodeAttr().display != DISPLAY_INLINE:
-            result = unicode.strip($result, false, true).toRunes()
+            result = unicode.strip(result, false, true)
       else:
-        result = @[]
+        result = ""
     else:
-      result = unicode.strip($htmlNode.rawtext).toRunes()
+      result = unicode.strip(htmlNode.rawtext)
     if htmlNode.parentElement != nil and htmlNode.parentElement.tagType == TAG_OPTION:
       result = result.buttonRaw()
   else:
     assert(false)
 
-func getFmtText*(htmlNode: HtmlNode): ustring =
+func getFmtText*(htmlNode: HtmlNode): string =
   if htmlNode.isElemNode():
     case HtmlElement(htmlNode).tagType
     of TAG_INPUT: return HtmlInputElement(htmlNode).getFmtInput()
-    else: return @[]
+    else: return ""
   elif htmlNode.isTextNode():
     result = htmlNode.rawtext
     if htmlNode.parentElement != nil and htmlNode.parentElement.islink:
       result = result.ansiFgColor(fgBlue)
-      let parent = HtmlElement(htmlNode.parentNode).getParent(TAG_A)
+      let parent = HtmlElement(htmlNode.parentNode).ancestor(TAG_A)
       if parent != nil and parent.selected:
         result = result.ansiStyle(styleUnderscore).ansiReset()
 
@@ -334,15 +326,15 @@ proc getHtmlNode*(xmlElement: XmlNode, parent: HtmlNode): HtmlNode =
   of xnText:
     new(result)
     result.nodeType = NODE_TEXT
-    result.rawtext = xmlElement.text.toRunes()
+    result.rawtext = xmlElement.text
   of xnComment:
     new(result)
     result.nodeType = NODE_COMMENT
-    result.rawtext = xmlElement.text.toRunes()
+    result.rawtext = xmlElement.text
   of xnCData:
     new(result)
     result.nodeType = NODE_CDATA
-    result.rawtext = xmlElement.text.toRunes()
+    result.rawtext = xmlElement.text
   else: assert(false)
 
   result.parentNode = parent