summaryrefslogtreecommitdiff
path: root/creole/shared/base_emitter.py
diff options
context:
space:
mode:
Diffstat (limited to 'creole/shared/base_emitter.py')
-rw-r--r--creole/shared/base_emitter.py69
1 files changed, 32 insertions, 37 deletions
diff --git a/creole/shared/base_emitter.py b/creole/shared/base_emitter.py
index de6fd2f..d0c98f1 100644
--- a/creole/shared/base_emitter.py
+++ b/creole/shared/base_emitter.py
@@ -1,20 +1,16 @@
-#!/usr/bin/env python
-# coding: utf-8
"""
Base document tree emitter
~~~~~~~~~~~~~~~~~~~~~~~~~~
- :copyleft: 2008-2011 by python-creole team, see AUTHORS for more details.
+ :copyleft: 2008-2020 by python-creole team, see AUTHORS for more details.
:license: GNU GPL v3 or above, see LICENSE for more details.
"""
-
-from creole.parser.html_parser_config import BLOCK_TAGS
from creole.html_tools.deentity import Deentity
-from creole.py3compat import TEXT_TYPE
+from creole.parser.html_parser_config import BLOCK_TAGS
from creole.shared.markup_table import MarkupTable
from creole.shared.unknown_tags import transparent_unknown_nodes
@@ -24,6 +20,7 @@ class BaseEmitter(object):
Build from a document_tree (html2creole.parser.HtmlParser instance) a
creole markup text.
"""
+
def __init__(self, document_tree, unknown_emit=None, debug=False):
self.root = document_tree
@@ -35,20 +32,20 @@ class BaseEmitter(object):
self.last = None
self.debugging = debug
- self.deentity = Deentity() # for replacing html entities
+ self.deentity = Deentity() # for replacing html entities
self._inner_list = ""
self._mask_linebreak = False
- #--------------------------------------------------------------------------
+ # --------------------------------------------------------------------------
def blockdata_pass_emit(self, node):
- return "%s\n\n" % node.content
+ return f"{node.content}\n\n"
return node.content
- #--------------------------------------------------------------------------
+ # --------------------------------------------------------------------------
def data_emit(self, node):
- #node.debug()
+ # node.debug()
return node.content
def entityref_emit(self, node):
@@ -59,13 +56,13 @@ class BaseEmitter(object):
try:
return self.deentity.replace_named(entity)
- except KeyError as err:
+ except KeyError:
if self.debugging:
- print("unknown html entity found: %r" % entity)
- return "&%s" % entity # FIXME
+ print(f"unknown html entity found: {entity!r}")
+ return f"&{entity}" # FIXME
except UnicodeDecodeError as err:
raise UnicodeError(
- "Error handling entity %r: %s" % (entity, err)
+ f"Error handling entity {entity!r}: {err}"
)
def charref_emit(self, node):
@@ -82,7 +79,7 @@ class BaseEmitter(object):
# entity as a unicode number
return self.deentity.replace_number(entity)
- #--------------------------------------------------------------------------
+ # --------------------------------------------------------------------------
def p_emit(self, node):
return "%s\n\n" % self.emit_children(node)
@@ -93,16 +90,16 @@ class BaseEmitter(object):
else:
return "\n"
- #--------------------------------------------------------------------------
+ # --------------------------------------------------------------------------
def _typeface(self, node, key):
return key + self.emit_children(node) + key
- #--------------------------------------------------------------------------
+ # --------------------------------------------------------------------------
def li_emit(self, node):
content = self.emit_children(node)
- return "\n%s %s" % (self._inner_list, content)
+ return f"\n{self._inner_list} {content}"
def _list_emit(self, node, list_type):
start_newline = False
@@ -110,7 +107,7 @@ class BaseEmitter(object):
if not self.last.content or not self.last.content.endswith("\n"):
start_newline = True
- if self._inner_list == "": # Start a new list
+ if self._inner_list == "": # Start a new list
self._inner_list = list_type
else:
self._inner_list += list_type
@@ -119,7 +116,7 @@ class BaseEmitter(object):
self._inner_list = self._inner_list[:-1]
- if self._inner_list == "": # Start a new list
+ if self._inner_list == "": # Start a new list
if start_newline:
return "\n" + content + "\n\n"
else:
@@ -127,7 +124,7 @@ class BaseEmitter(object):
else:
return content
- #--------------------------------------------------------------------------
+ # --------------------------------------------------------------------------
def table_emit(self, node):
self._table = MarkupTable(
@@ -137,7 +134,7 @@ class BaseEmitter(object):
)
self.emit_children(node)
content = self._table.get_table_markup()
- return "%s\n" % content
+ return f"{content}\n"
def tr_emit(self, node):
self._table.add_tr()
@@ -165,13 +162,13 @@ class BaseEmitter(object):
self._table.add_td(content)
return ""
- #--------------------------------------------------------------------------
+ # --------------------------------------------------------------------------
def _emit_content(self, node):
content = self.emit_children(node)
content = self._escape_linebreaks(content)
if node.kind in BLOCK_TAGS:
- content = "%s\n\n" % content
+ content = f"{content}\n\n"
return content
def div_emit(self, node):
@@ -180,7 +177,7 @@ class BaseEmitter(object):
def span_emit(self, node):
return self._emit_content(node)
- #--------------------------------------------------------------------------
+ # --------------------------------------------------------------------------
def document_emit(self, node):
self.last = node
@@ -196,7 +193,7 @@ class BaseEmitter(object):
result = []
for child in node.children:
content = self.emit_node(child)
- assert isinstance(content, TEXT_TYPE)
+ assert isinstance(content, str)
result.append(content)
return result
@@ -205,26 +202,24 @@ class BaseEmitter(object):
def unicode_error(method_name, method, node, content):
node.debug()
raise AssertionError(
- "Method '%s' (%s) returns no unicode - returns: %s (%s)" % (
- method_name, method, repr(content), type(content)
- )
+ f"Method '{method_name}' ({method}) returns no unicode - returns: {repr(content)} ({type(content)})"
)
if node.level:
- self.debug_msg("emit_node", "%s (level: %i): %r" % (node.kind, node.level, node.content))
+ self.debug_msg("emit_node", f"{node.kind} (level: {node.level:d}): {node.content!r}")
else:
- self.debug_msg("emit_node", "%s: %r" % (node.kind, node.content))
+ self.debug_msg("emit_node", f"{node.kind}: {node.content!r}")
- method_name = "%s_emit" % node.kind
+ method_name = f"{node.kind}_emit"
emit_method = getattr(self, method_name, None)
if emit_method:
content = emit_method(node)
- if not isinstance(content, TEXT_TYPE):
+ if not isinstance(content, str):
unicode_error(method_name, emit_method, node, content)
else:
content = self._unknown_emit(self, node)
- if not isinstance(content, TEXT_TYPE):
+ if not isinstance(content, str):
unicode_error(method_name, self._unknown_emit, node, content)
self.last = node
@@ -233,10 +228,10 @@ class BaseEmitter(object):
# def emit(self):
# """Emit the document represented by self.root DOM tree."""
# result = self.emit_node(self.root)
-## return result.strip() # FIXME
+# return result.strip() # FIXME
# return result.rstrip() # FIXME
- #-------------------------------------------------------------------------
+ # -------------------------------------------------------------------------
def debug_msg(self, method, txt):
if not self.debugging: