# -*- coding: utf-8 -*-
from . import core as html5
def unescape(val, maxLength = 0):
"""
Unquotes several HTML-quoted characters in a string.
:param val: The value to be unescaped.
:type val: str
:param maxLength: Cut-off after maxLength characters.
A value of 0 means "unlimited". (default)
:type maxLength: int
:returns: The unquoted string.
:rtype: str
"""
val = val \
.replace("<", "<") \
.replace(">", ">") \
.replace(""", "\"") \
.replace("'", "'")
if maxLength > 0:
return val[0:maxLength]
return val
def doesEventHitWidgetOrParents(event, widget):
"""
Test if event 'event' hits widget 'widget' (or *any* of its parents)
"""
while widget:
if event.target == widget.element:
return widget
widget = widget.parent()
return None
def doesEventHitWidgetOrChildren(event, widget):
"""
Test if event 'event' hits widget 'widget' (or *any* of its children)
"""
if event.target == widget.element:
return widget
for child in widget.children():
if doesEventHitWidgetOrChildren(event, child):
return child
return None
def textToHtml(node, text):
"""
Generates html nodes from text by splitting text into content and into
line breaks html5.Br.
:param node: The node where the nodes are appended to.
:param text: The text to be inserted.
"""
for (i, part) in enumerate(text.split("\n")):
if i > 0:
node.appendChild(html5.Br())
node.appendChild(html5.TextNode(part))
def parseInt(s, ret = 0):
"""
Parses a value as int
"""
if not isinstance(s, str):
return int(s)
elif s:
if s[0] in "+-":
ts = s[1:]
else:
ts = s
if ts and all([_ in "0123456789" for _ in ts]):
return int(s)
return ret
def parseFloat(s, ret = 0.0):
"""
Parses a value as float.
"""
if not isinstance(s, str):
return float(s)
elif s:
if s[0] in "+-":
ts = s[1:]
else:
ts = s
if ts and ts.count(".") <= 1 and all([_ in ".0123456789" for _ in ts]):
return float(s)
return ret