Files
api/path/to/venv/lib/python3.12/site-packages/mammoth/writers/html.py
2025-12-30 11:27:14 +07:00

44 lines
1.2 KiB
Python

from __future__ import unicode_literals
from xml.sax.saxutils import escape
from .abc import Writer
class HtmlWriter(Writer):
def __init__(self):
self._fragments = []
def text(self, text):
self._fragments.append(_escape_html(text))
def start(self, name, attributes=None):
attribute_string = _generate_attribute_string(attributes)
self._fragments.append("<{0}{1}>".format(name, attribute_string))
def end(self, name):
self._fragments.append("</{0}>".format(name))
def self_closing(self, name, attributes=None):
attribute_string = _generate_attribute_string(attributes)
self._fragments.append("<{0}{1} />".format(name, attribute_string))
def append(self, html):
self._fragments.append(html)
def as_string(self):
return "".join(self._fragments)
def _escape_html(text):
return escape(text, {'"': "&quot;"})
def _generate_attribute_string(attributes):
if attributes is None:
return ""
else:
return "".join(
' {0}="{1}"'.format(key, _escape_html(attributes[key]))
for key in sorted(attributes)
)