# -*- 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