diff options
Diffstat (limited to 'htmtl/parsers')
| -rw-r--r-- | htmtl/parsers/generic_value.py | 18 | ||||
| -rw-r--r-- | htmtl/parsers/inner_html.py | 16 | ||||
| -rw-r--r-- | htmtl/parsers/outer_html.py | 14 |
3 files changed, 48 insertions, 0 deletions
diff --git a/htmtl/parsers/generic_value.py b/htmtl/parsers/generic_value.py new file mode 100644 index 0000000..87b0d63 --- /dev/null +++ b/htmtl/parsers/generic_value.py @@ -0,0 +1,18 @@ +from typing import Optional +from dompa.nodes import Node +from ..parser import Parser + + +class GenericValue(Parser): + def traverse(self, node: Node) -> Optional[Node]: + new_attrs = {} + + for key, val in node.attributes.items(): + if key.startswith(":"): + new_attrs[key[1:]] = self.expression(val) + else: + new_attrs[key] = val + + node.attributes = new_attrs + + return node
\ No newline at end of file diff --git a/htmtl/parsers/inner_html.py b/htmtl/parsers/inner_html.py new file mode 100644 index 0000000..60e90ca --- /dev/null +++ b/htmtl/parsers/inner_html.py @@ -0,0 +1,16 @@ +from typing import Optional + +from dompa import Dompa +from dompa.nodes import Node + +from ..parser import Parser + + +class InnerHtml(Parser): + def traverse(self, node: Node) -> Optional[Node]: + if "inner-html" in node.attributes: + child_nodes = Dompa(self.expression(node.attributes["inner-html"])).nodes() + node.children = child_nodes + node.attributes.pop("inner-html") + + return node
\ No newline at end of file diff --git a/htmtl/parsers/outer_html.py b/htmtl/parsers/outer_html.py new file mode 100644 index 0000000..72df638 --- /dev/null +++ b/htmtl/parsers/outer_html.py @@ -0,0 +1,14 @@ +from typing import Optional + +from dompa import Dompa +from dompa.nodes import Node, FragmentNode + +from ..parser import Parser + + +class OuterHtml(Parser): + def traverse(self, node: Node) -> Optional[Node]: + if "outer-html" in node.attributes: + return FragmentNode(children=Dompa(self.expression(node.attributes["outer-html"])).nodes()) + + return node
\ No newline at end of file |
