From b8d66c1b7564f5bc27a1a3ccaf24eefdfe7de3bf Mon Sep 17 00:00:00 2001 From: Fredrik Tolf Date: Mon, 21 Apr 2025 19:48:19 +0200 Subject: [PATCH] Add support for DOM comments in SP. --- wrw/sp/cons.py | 4 ++++ wrw/sp/util.py | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/wrw/sp/cons.py b/wrw/sp/cons.py index b9437bf..af53c7b 100644 --- a/wrw/sp/cons.py +++ b/wrw/sp/cons.py @@ -12,6 +12,10 @@ class raw(node, str): def __todom__(self, doc): raise Exception("Cannot convert raw code to DOM objects") +class comment(node, str): + def __todom__(self, doc): + return doc.createComment(self) + class element(node): def __init__(self, ns, name, ctx): self.ns = ns diff --git a/wrw/sp/util.py b/wrw/sp/util.py index 931cbdb..09e18b0 100644 --- a/wrw/sp/util.py +++ b/wrw/sp/util.py @@ -40,6 +40,8 @@ def flatiter(root, short=True): yield "", ch elif isinstance(ch, cons.raw): yield "!", ch + elif isinstance(ch, cons.comment): + yield "-", ch else: raise Exception("Unknown object in element tree: " + el) @@ -123,6 +125,9 @@ class formatter(object): def rawcode(self, el): self.write(el) + def comment(self, el): + self.write("") + def start(self, el): self.write('\n') if isinstance(el, cons.doctype): @@ -145,6 +150,8 @@ class formatter(object): self.text(el) elif ev == "!": self.rawcode(el) + elif ev == "-": + self.comment(el) elif ev == "^": self.start(el) elif ev == "$": -- 2.39.5