Builder list factory

This commit is contained in:
Cameron Dehning 2023-04-08 01:34:47 +00:00 committed by James Westman
parent 0cf9a8e4fc
commit a2fb86bc31
9 changed files with 98 additions and 1 deletions

View file

@ -304,6 +304,16 @@ class XmlOutput(OutputFormat):
self._emit_value(value, xml)
xml.end_tag()
xml.end_tag()
elif isinstance(extension, ListItemFactory):
child_xml = XmlEmitter()
child_xml.start_tag("interface")
child_xml.start_tag("template", **{"class": "GtkListItem"})
self._emit_object_or_template(extension, child_xml)
child_xml.end_tag()
child_xml.end_tag()
xml.start_tag("property", name="bytes")
xml.put_cdata(child_xml.result)
xml.end_tag()
elif isinstance(extension, Styles):
xml.start_tag("style")

View file

@ -62,6 +62,10 @@ class XmlEmitter:
self.result += saxutils.escape(str(text))
self._needs_newline = False
def put_cdata(self, text: str):
self.result += f"<![CDATA[{text}]]>"
self._needs_newline = False
def _indent(self):
if self.indent is not None:
self.result += "\n" + " " * (self.indent * len(self._tag_stack))