Změněn interface OutputGeneratoru. Viz poslední komentář v #13.
This commit is contained in:
parent
6b60c313be
commit
fe63458a51
3 changed files with 153 additions and 120 deletions
|
@ -99,10 +99,8 @@ class HTMLGenerator(OutputGenerator):
|
||||||
|
|
||||||
def generate_Doc(self, e: Doc):
|
def generate_Doc(self, e: Doc):
|
||||||
formatter = HtmlFormatter(style=e.get_metadata("highlight-style") if e.get_metadata("highlight-style") is not None else "default")
|
formatter = HtmlFormatter(style=e.get_metadata("highlight-style") if e.get_metadata("highlight-style") is not None else "default")
|
||||||
self.writeln("<style>")
|
self.generate_simple_tag(tag="style", attributes={}, content=formatter.get_style_defs(".highlight"))
|
||||||
self.writeraw(formatter.get_style_defs(".highlight"))
|
self.generate_simple_tag(e, tag="main")
|
||||||
self.writeln("</style>")
|
|
||||||
self.generate_simple_block_tag(e, "main", self.common_attributes(e))
|
|
||||||
|
|
||||||
def generate_CodeBlock(self, e: CodeBlock):
|
def generate_CodeBlock(self, e: CodeBlock):
|
||||||
lexer = None
|
lexer = None
|
||||||
|
@ -122,7 +120,7 @@ class HTMLGenerator(OutputGenerator):
|
||||||
result = highlight(e.text, lexer, formatter)
|
result = highlight(e.text, lexer, formatter)
|
||||||
self.writeraw(result)
|
self.writeraw(result)
|
||||||
else:
|
else:
|
||||||
self.generate_raw_block_tag(e, "pre", self.common_attributes(e))
|
self.generate_simple_tag(e, tag="pre")
|
||||||
|
|
||||||
def generate_Image(self, e: Image):
|
def generate_Image(self, e: Image):
|
||||||
url = e.url
|
url = e.url
|
||||||
|
@ -243,7 +241,7 @@ class HTMLGenerator(OutputGenerator):
|
||||||
attributes["href"] = e.url
|
attributes["href"] = e.url
|
||||||
if e.title:
|
if e.title:
|
||||||
attributes["title"] = e.title
|
attributes["title"] = e.title
|
||||||
self.generate_simple_inline_tag(e, self.tagname(e), self.common_attributes(e) | attributes)
|
self.generate_simple_tag(e, attributes=self.common_attributes(e) | attributes)
|
||||||
|
|
||||||
def generate_OrderedList(self, e: OrderedList):
|
def generate_OrderedList(self, e: OrderedList):
|
||||||
attributes = {}
|
attributes = {}
|
||||||
|
@ -259,7 +257,7 @@ class HTMLGenerator(OutputGenerator):
|
||||||
if e.style and e.style != "DefaultStyle":
|
if e.style and e.style != "DefaultStyle":
|
||||||
attributes["type"] = html_styles[e.style]
|
attributes["type"] = html_styles[e.style]
|
||||||
# FIXME: Delimeter styles: 1. 1) (1)
|
# FIXME: Delimeter styles: 1. 1) (1)
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e) | attributes)
|
self.generate_simple_tag(e, attributes=self.common_attributes(e) | attributes)
|
||||||
|
|
||||||
def generate_TableCell(self, e: TableCell):
|
def generate_TableCell(self, e: TableCell):
|
||||||
attributes = self.common_attributes(e)
|
attributes = self.common_attributes(e)
|
||||||
|
@ -274,7 +272,7 @@ class HTMLGenerator(OutputGenerator):
|
||||||
}
|
}
|
||||||
if e.alignment and e.alignment != "AlignDefault":
|
if e.alignment and e.alignment != "AlignDefault":
|
||||||
attributes["style"] = attributes.get("style", "")+f"text-align: {aligns[e.alignment]};"
|
attributes["style"] = attributes.get("style", "")+f"text-align: {aligns[e.alignment]};"
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), attributes)
|
self.generate_simple_tag(e, attributes=attributes)
|
||||||
|
|
||||||
# These are also disabled in pandoc so they shouldn't appear in the AST at all.
|
# These are also disabled in pandoc so they shouldn't appear in the AST at all.
|
||||||
def generate_Citation(self, e: Citation):
|
def generate_Citation(self, e: Citation):
|
||||||
|
|
|
@ -15,7 +15,7 @@ import re
|
||||||
class LaTeXGenerator(OutputGenerator):
|
class LaTeXGenerator(OutputGenerator):
|
||||||
def __init__(self, output_file, imageProcessor: ImageProcessor, *args, **kwargs):
|
def __init__(self, output_file, imageProcessor: ImageProcessor, *args, **kwargs):
|
||||||
self.imageProcessor = imageProcessor
|
self.imageProcessor = imageProcessor
|
||||||
super().__init__(outpout_file, *args, **kwargs)
|
super().__init__(output_file, *args, **kwargs)
|
||||||
|
|
||||||
def generate(self, e: Union[Element, ListContainer]):
|
def generate(self, e: Union[Element, ListContainer]):
|
||||||
if hasattr(e, "attributes") and "only" in e.attributes and e.attributes["only"] != "tex":
|
if hasattr(e, "attributes") and "only" in e.attributes and e.attributes["only"] != "tex":
|
||||||
|
@ -45,8 +45,6 @@ class LaTeXGenerator(OutputGenerator):
|
||||||
def ntag(self, tag: str, attributes: Dict[str,str]={}) -> str:
|
def ntag(self, tag: str, attributes: Dict[str,str]={}) -> str:
|
||||||
return "\\" + tag + "{}"
|
return "\\" + tag + "{}"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def generate_NBSP(self, e: NBSP):
|
def generate_NBSP(self, e: NBSP):
|
||||||
|
@ -61,7 +59,13 @@ class LaTeXGenerator(OutputGenerator):
|
||||||
|
|
||||||
def generate_Para(self, e: Para):
|
def generate_Para(self, e: Para):
|
||||||
self.generate(e)
|
self.generate(e)
|
||||||
self.endln()
|
self.writeln("") # This ensures an empty line
|
||||||
|
|
||||||
|
def generate_Plain(self, e: Plain):
|
||||||
|
self.generate(e.content)
|
||||||
|
|
||||||
|
def generate_Span(self, e: Plain):
|
||||||
|
self.generate(e.content)
|
||||||
|
|
||||||
def generate_Header(self, e: Header):
|
def generate_Header(self, e: Header):
|
||||||
tag = {
|
tag = {
|
||||||
|
@ -72,10 +76,15 @@ class LaTeXGenerator(OutputGenerator):
|
||||||
5: "subparagraph",
|
5: "subparagraph",
|
||||||
6: "textbf"
|
6: "textbf"
|
||||||
}
|
}
|
||||||
self.generate_simple_block_tag(e, tag[e.level])
|
|
||||||
|
self.generate_simple_tag(e, tag=tag[e.level])
|
||||||
|
|
||||||
def generate_HorizontalRule(self, e: HorizontalRule):
|
def generate_HorizontalRule(self, e: HorizontalRule):
|
||||||
self.writeln("\\begin{center}\\rule{0.5\\linewidth}{0.5pt}\\end{center}")
|
self.writeln("\\begin{center}\\rule{0.5\\linewidth}{0.5pt}\\end{center}")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# These are also disabled in pandoc so they shouldn't appear in the AST at all.
|
# These are also disabled in pandoc so they shouldn't appear in the AST at all.
|
||||||
def generate_Citation(self, e: Citation):
|
def generate_Citation(self, e: Citation):
|
||||||
|
|
|
@ -21,7 +21,27 @@ class OutputGenerator:
|
||||||
self.indent_level = initial_indent_level
|
self.indent_level = initial_indent_level
|
||||||
self._at_start_of_line = True
|
self._at_start_of_line = True
|
||||||
|
|
||||||
def escape_special_chars(self, text: str) -> str:
|
def generate(self, e: Union[Element, ListContainer]):
|
||||||
|
if isinstance(e, ListContainer):
|
||||||
|
self.generate_ListContainer(e)
|
||||||
|
elif isinstance(e, Inline):
|
||||||
|
self.generate_Inline(e)
|
||||||
|
elif isinstance(e, Block):
|
||||||
|
self.generate_Block(e)
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
{
|
||||||
|
TableRow: self.generate_TableRow,
|
||||||
|
TableCell: self.generate_TableCell,
|
||||||
|
Caption: self.generate_Caption,
|
||||||
|
Doc: self.generate_Doc,
|
||||||
|
LineItem: self.generate_LineItem,
|
||||||
|
ListItem: self.generate_ListItem
|
||||||
|
}[type(e)](e)
|
||||||
|
except KeyError:
|
||||||
|
raise UnknownElementError(type(e))
|
||||||
|
|
||||||
|
def escape_special_chars(self, text: str) -> str:
|
||||||
return text
|
return text
|
||||||
|
|
||||||
def indent(self) -> str:
|
def indent(self) -> str:
|
||||||
|
@ -69,28 +89,61 @@ class OutputGenerator:
|
||||||
def tagname(self, e) -> str:
|
def tagname(self, e) -> str:
|
||||||
return type(e).__name__
|
return type(e).__name__
|
||||||
|
|
||||||
def common_attributes(self, e) -> Dict[str,str]:
|
def common_attributes(self, e: Element) -> Dict[str,str]:
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
def generate(self, e: Union[Element, ListContainer]):
|
def generate_simple_tag(self, e: Union[Element, None]=None, tag: str="", attributes: Union[Dict[str,str],None]=None, content: Union[ListContainer, Element, str, None]=None, inline: Union[bool, None]=None):
|
||||||
if isinstance(e, ListContainer):
|
if not tag and e:
|
||||||
self.generate_ListContainer(e)
|
tag = self.tagname(e)
|
||||||
elif isinstance(e, Inline):
|
if attributes is None and e:
|
||||||
self.generate_Inline(e)
|
attributes = self.common_attributes(e)
|
||||||
elif isinstance(e, Block):
|
|
||||||
self.generate_Block(e)
|
|
||||||
else:
|
else:
|
||||||
try:
|
attributes = {}
|
||||||
{
|
if content is None and e and e.content:
|
||||||
TableRow: self.generate_TableRow,
|
content = e.content
|
||||||
TableCell: self.generate_TableCell,
|
if content is None and e and hasattr(e, "text"):
|
||||||
Caption: self.generate_Caption,
|
content = e.text
|
||||||
Doc: self.generate_Doc,
|
if inline is None and e:
|
||||||
LineItem: self.generate_LineItem,
|
inline = isinstance(e, Inline)
|
||||||
ListItem: self.generate_ListItem
|
|
||||||
}[type(e)](e)
|
if content is None:
|
||||||
except KeyError:
|
self.generate_empty_block_tag(tag, attributes)
|
||||||
raise UnknownElementError(type(e))
|
|
||||||
|
if inline:
|
||||||
|
if isinstance(content, str):
|
||||||
|
self.generate_raw_inline_tag(tag, content, attributes)
|
||||||
|
else:
|
||||||
|
self.generate_simple_inline_tag(tag, content, attributes)
|
||||||
|
else:
|
||||||
|
if isinstance(content, str):
|
||||||
|
self.generate_raw_block_tag(tag, content, attributes)
|
||||||
|
else:
|
||||||
|
self.generate_simple_block_tag(tag, content, attributes)
|
||||||
|
|
||||||
|
def generate_simple_inline_tag(self, tag: str, content: Union[ListContainer, Element], attributes: Dict[str,str]={}):
|
||||||
|
self.write(self.stag(tag, attributes))
|
||||||
|
self.generate(content)
|
||||||
|
self.write(self.etag(tag))
|
||||||
|
|
||||||
|
def generate_simple_block_tag(self, tag: str, content: Union[ListContainer, Element], attributes: Dict[str,str]={}):
|
||||||
|
self.writeln(self.stag(tag, attributes))
|
||||||
|
self.iup()
|
||||||
|
self.generate(content)
|
||||||
|
self.ido()
|
||||||
|
self.writeln(self.etag(tag))
|
||||||
|
|
||||||
|
def generate_raw_inline_tag(self, tag: str, text: str, attributes: Dict[str,str]={}):
|
||||||
|
self.write(self.stag(tag, attributes))
|
||||||
|
self.write(text)
|
||||||
|
self.write(self.etag(tag))
|
||||||
|
|
||||||
|
def generate_raw_block_tag(self, tag: str, text: str, attributes: Dict[str,str]={}):
|
||||||
|
self.writeln(self.stag(tag, attributes))
|
||||||
|
self.writeraw(text)
|
||||||
|
self.writeln(self.etag(tag))
|
||||||
|
|
||||||
|
def generate_empty_block_tag(self, tag: str, attributes: Dict[str,str]={}):
|
||||||
|
self.writeln(self.ntag(tag, attributes))
|
||||||
|
|
||||||
def generate_ListContainer(self, e: ListContainer):
|
def generate_ListContainer(self, e: ListContainer):
|
||||||
for child in e:
|
for child in e:
|
||||||
|
@ -167,63 +220,58 @@ class OutputGenerator:
|
||||||
self.generate(e.content)
|
self.generate(e.content)
|
||||||
self.write("\"")
|
self.write("\"")
|
||||||
|
|
||||||
|
|
||||||
|
# Inline Elements
|
||||||
def generate_Cite(self, e: Cite):
|
def generate_Cite(self, e: Cite):
|
||||||
self.generate_simple_inline_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_Emph(self, e: Emph):
|
def generate_Emph(self, e: Emph):
|
||||||
self.generate_simple_inline_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_Image(self, e: Image):
|
def generate_Image(self, e: Image):
|
||||||
self.generate_simple_inline_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_Link(self, e: Link):
|
def generate_Link(self, e: Link):
|
||||||
self.generate_simple_inline_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_Note(self, e: Note):
|
def generate_Note(self, e: Note):
|
||||||
self.generate_simple_inline_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_Quoted(self, e: Quoted):
|
def generate_Quoted(self, e: Quoted):
|
||||||
self.generate_simple_inline_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_SmallCaps(self, e: SmallCaps):
|
def generate_SmallCaps(self, e: SmallCaps):
|
||||||
self.generate_simple_inline_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_Span(self, e: Span):
|
def generate_Span(self, e: Span):
|
||||||
self.generate_simple_inline_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_Strikeout(self, e: Strikeout):
|
def generate_Strikeout(self, e: Strikeout):
|
||||||
self.generate_simple_inline_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_Strong(self, e: Strong):
|
def generate_Strong(self, e: Strong):
|
||||||
self.generate_simple_inline_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_Subscript(self, e: Subscript):
|
def generate_Subscript(self, e: Subscript):
|
||||||
self.generate_simple_inline_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_Superscript(self, e: Superscript):
|
def generate_Superscript(self, e: Superscript):
|
||||||
self.generate_simple_inline_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_Underline(self, e: Underline):
|
def generate_Underline(self, e: Underline):
|
||||||
self.generate_simple_inline_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_simple_inline_tag(self, e, tag: str, attributes: Dict[str,str]={}):
|
|
||||||
self.write(self.stag(tag, attributes))
|
|
||||||
self.generate(e.content)
|
|
||||||
self.write(self.etag(tag))
|
|
||||||
|
|
||||||
|
# Raw Inline elements
|
||||||
def generate_Math(self, e: Math):
|
def generate_Math(self, e: Math):
|
||||||
self.generate_raw_inline_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_Code(self, e: Code):
|
def generate_Code(self, e: Code):
|
||||||
self.generate_raw_inline_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_RawInline(self, e: RawInline):
|
def generate_RawInline(self, e: RawInline):
|
||||||
self.generate_raw_inline_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_raw_inline_tag(self, e, tag: str, attributes: Dict[str,str]={}):
|
|
||||||
self.write(self.stag(tag, attributes))
|
|
||||||
self.write(e.text)
|
|
||||||
self.write(self.etag(tag))
|
|
||||||
|
|
||||||
def generate_Block(self, e: Block):
|
def generate_Block(self, e: Block):
|
||||||
{
|
{
|
||||||
|
@ -257,139 +305,117 @@ class OutputGenerator:
|
||||||
Group: self.generate_Group
|
Group: self.generate_Group
|
||||||
}[type(e)](e)
|
}[type(e)](e)
|
||||||
|
|
||||||
|
|
||||||
|
# Block elements
|
||||||
def generate_BlockQuote(self, e: BlockQuote):
|
def generate_BlockQuote(self, e: BlockQuote):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_BulletList(self, e: BulletList):
|
def generate_BulletList(self, e: BulletList):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_Citation(self, e: Citation):
|
def generate_Citation(self, e: Citation):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_Definition(self, e: Definition):
|
def generate_Definition(self, e: Definition):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_DefinitionItem(self, e: DefinitionItem):
|
def generate_DefinitionItem(self, e: DefinitionItem):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_DefinitionList(self, e: DefinitionList):
|
def generate_DefinitionList(self, e: DefinitionList):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_Div(self, e: Div):
|
def generate_Div(self, e: Div):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_Header(self, e: Header):
|
def generate_Header(self, e: Header):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_LineBlock(self, e: LineBlock):
|
def generate_LineBlock(self, e: LineBlock):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_LineItem(self, e: LineItem):
|
def generate_LineItem(self, e: LineItem):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_ListItem(self, e: ListItem):
|
def generate_ListItem(self, e: ListItem):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_MetaBlocks(self, e: MetaBlocks):
|
def generate_MetaBlocks(self, e: MetaBlocks):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_MetaBool(self, e: MetaBool):
|
def generate_MetaBool(self, e: MetaBool):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_MetaInlines(self, e: MetaInlines):
|
def generate_MetaInlines(self, e: MetaInlines):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_MetaList(self, e: MetaList):
|
def generate_MetaList(self, e: MetaList):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_MetaMap(self, e: MetaMap):
|
def generate_MetaMap(self, e: MetaMap):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_MetaString(self, e: MetaString):
|
def generate_MetaString(self, e: MetaString):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_OrderedList(self, e: OrderedList):
|
def generate_OrderedList(self, e: OrderedList):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_Para(self, e: Para):
|
def generate_Para(self, e: Para):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_Plain(self, e: Plain):
|
def generate_Plain(self, e: Plain):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_Caption(self, e: Caption):
|
def generate_Caption(self, e: Caption):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_TableBody(self, e: TableBody):
|
def generate_TableBody(self, e: TableBody):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_TableCell(self, e: TableCell):
|
def generate_TableCell(self, e: TableCell):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_TableFoot(self, e: TableFoot):
|
def generate_TableFoot(self, e: TableFoot):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_TableHead(self, e: TableHead):
|
def generate_TableHead(self, e: TableHead):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_TableRow(self, e: TableRow):
|
def generate_TableRow(self, e: TableRow):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_Doc(self, e: Doc):
|
def generate_Doc(self, e: Doc):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_Group(self, e: Group):
|
def generate_Group(self, e: Group):
|
||||||
self.generate_simple_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_simple_block_tag(self, e, tag: str, attributes: Dict[str,str]={}):
|
# Special elements with more contents
|
||||||
self.writeln(self.stag(tag, attributes))
|
|
||||||
self.iup()
|
|
||||||
self.generate(e.content)
|
|
||||||
self.ido()
|
|
||||||
self.writeln(self.etag(tag))
|
|
||||||
|
|
||||||
def generate_Table(self, e: Table):
|
def generate_Table(self, e: Table):
|
||||||
tag = self.tagname(e)
|
self.generate_simple_tag(e, content=ListContainer(e.head, e.content, e.foot))
|
||||||
self.writeln(self.stag(tag, self.common_attributes(e)))
|
|
||||||
self.iup()
|
|
||||||
self.generate(e.head)
|
|
||||||
self.generate(e.content)
|
|
||||||
self.generate(e.foot)
|
|
||||||
self.ido()
|
|
||||||
self.writeln(self.etag(tag))
|
|
||||||
|
|
||||||
def generate_Figure(self, e: Figure):
|
def generate_Figure(self, e: Figure):
|
||||||
tag = self.tagname(e)
|
self.generate_simple_tag(e, content=ListContainer(e.content, e.caption))
|
||||||
self.writeln(self.stag(tag, self.common_attributes(e)))
|
|
||||||
self.iup()
|
|
||||||
self.generate(e.content)
|
|
||||||
self.generate(e.caption)
|
|
||||||
self.ido()
|
|
||||||
self.writeln(self.etag(tag))
|
|
||||||
|
|
||||||
|
# Emtpy tags
|
||||||
def generate_Null(self, e: Null):
|
def generate_Null(self, e: Null):
|
||||||
self.generate_empty_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_HorizontalRule(self, e: HorizontalRule):
|
def generate_HorizontalRule(self, e: HorizontalRule):
|
||||||
self.generate_empty_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_LineBreak(self, e: LineBreak):
|
def generate_LineBreak(self, e: LineBreak):
|
||||||
self.generate_empty_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_empty_block_tag(self, e, tag: str, attributes: Dict[str,str]={}):
|
|
||||||
self.writeln(self.ntag(tag, attributes))
|
|
||||||
|
|
||||||
|
# Raw Block tags
|
||||||
def generate_CodeBlock(self, e: CodeBlock):
|
def generate_CodeBlock(self, e: CodeBlock):
|
||||||
self.generate_raw_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_RawBlock(self, e: RawBlock):
|
def generate_RawBlock(self, e: RawBlock):
|
||||||
self.generate_raw_block_tag(e, self.tagname(e), self.common_attributes(e))
|
self.generate_simple_tag(e)
|
||||||
|
|
||||||
def generate_raw_block_tag(self, e, tag: str, attributes: Dict[str,str]={}):
|
|
||||||
self.writeln(self.stag(tag, attributes))
|
|
||||||
self.writeraw(e.text)
|
|
||||||
self.writeln(self.etag(tag))
|
|
||||||
|
|
||||||
|
# Maybe move this to ImageProcessor?
|
||||||
def get_image_processor_args(self, attributes:Dict[str,str]) -> Dict:
|
def get_image_processor_args(self, attributes:Dict[str,str]) -> Dict:
|
||||||
# Attributes → image processor args
|
# Attributes → image processor args
|
||||||
additional_args = {}
|
additional_args = {}
|
||||||
|
|
Loading…
Reference in a new issue