Highlighting je nyní vždy inline, ať tam není třeba dělat taková obří magie s zjišťováním, jestli používáme defaultní styl nebo ne. Možná by bylo fajn to nějak umět overridovat. Menší fixy.
This commit is contained in:
parent
1a629b2bf9
commit
24f877565d
4 changed files with 12 additions and 16 deletions
|
@ -61,9 +61,9 @@ def main():
|
||||||
# Generate HTML and TeX out of the transformed document
|
# Generate HTML and TeX out of the transformed document
|
||||||
#open(args.output_html, "w").write(html(doc, katexClient, imageProcessor))
|
#open(args.output_html, "w").write(html(doc, katexClient, imageProcessor))
|
||||||
#open(args.output_tex, "w").write(tex(doc, imageProcessor))
|
#open(args.output_tex, "w").write(tex(doc, imageProcessor))
|
||||||
# HTMLGenerator(sys.stdout, katexClient, imageProcessor).generate(doc)
|
HTMLGenerator(sys.stdout, katexClient, imageProcessor).generate(doc2)
|
||||||
OutputGenerator(open("/tmp/doc1", "w")).generate(doc1)
|
#OutputGenerator(open("/tmp/doc1", "w")).generate(doc1)
|
||||||
OutputGenerator(open("/tmp/doc2", "w")).generate(doc2)
|
#OutputGenerator(open("/tmp/doc2", "w")).generate(doc2)
|
||||||
|
|
||||||
if args.debug:
|
if args.debug:
|
||||||
print(show(doc))
|
print(show(doc))
|
||||||
|
|
|
@ -97,8 +97,8 @@ class HTMLGenerator(OutputGenerator):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
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.generate_simple_tag(tag="style", attributes={}, content=formatter.get_style_defs(".highlight"))
|
# self.generate_simple_tag(tag="style", attributes={}, content=formatter.get_style_defs(".highlight"))
|
||||||
self.generate_simple_tag(e, tag="main")
|
self.generate_simple_tag(e, tag="main")
|
||||||
|
|
||||||
def generate_CodeBlock(self, e: CodeBlock):
|
def generate_CodeBlock(self, e: CodeBlock):
|
||||||
|
@ -115,7 +115,7 @@ class HTMLGenerator(OutputGenerator):
|
||||||
warnings.warn(f"Syntax highligher does not have lexer for element with these classes: {e.classes}", UserWarning)
|
warnings.warn(f"Syntax highligher does not have lexer for element with these classes: {e.classes}", UserWarning)
|
||||||
|
|
||||||
if lexer:
|
if lexer:
|
||||||
formatter = HtmlFormatter(style=e.attributes["style"])
|
formatter = HtmlFormatter(style=e.attributes["style"], noclasses=True)
|
||||||
result = highlight(e.text, lexer, formatter)
|
result = highlight(e.text, lexer, formatter)
|
||||||
self.writeraw(result)
|
self.writeraw(result)
|
||||||
else:
|
else:
|
||||||
|
@ -127,7 +127,7 @@ class HTMLGenerator(OutputGenerator):
|
||||||
additional_args = self.get_image_processor_args(e.attributes)
|
additional_args = self.get_image_processor_args(e.attributes)
|
||||||
|
|
||||||
# The directory of the current file, will also look for images there.
|
# The directory of the current file, will also look for images there.
|
||||||
source_dir = e.attributes["source_dir"]
|
source_dir = self.context.dir
|
||||||
|
|
||||||
_, ext = os.path.splitext(url)
|
_, ext = os.path.splitext(url)
|
||||||
ext = ext[1:]
|
ext = ext[1:]
|
||||||
|
|
|
@ -20,7 +20,7 @@ class OutputGenerator:
|
||||||
self.indent_str = indent_str
|
self.indent_str = indent_str
|
||||||
self.indent_level = initial_indent_level
|
self.indent_level = initial_indent_level
|
||||||
self._at_start_of_line = True
|
self._at_start_of_line = True
|
||||||
self.current_context = None
|
self.context = None
|
||||||
|
|
||||||
self.TYPE_DICT_MISC = {
|
self.TYPE_DICT_MISC = {
|
||||||
TableRow: self.generate_TableRow,
|
TableRow: self.generate_TableRow,
|
||||||
|
@ -89,8 +89,8 @@ class OutputGenerator:
|
||||||
|
|
||||||
def generate(self, e: Union[Element, ListContainer, list[Union[Element, ListContainer]]]):
|
def generate(self, e: Union[Element, ListContainer, list[Union[Element, ListContainer]]]):
|
||||||
if isinstance(e, Group):
|
if isinstance(e, Group):
|
||||||
old_context = self.current_context
|
old_context = self.context
|
||||||
self.current_context = e.context
|
self.context = e.context
|
||||||
if isinstance(e, list):
|
if isinstance(e, list):
|
||||||
self.generate_list(e)
|
self.generate_list(e)
|
||||||
elif isinstance(e, ListContainer):
|
elif isinstance(e, ListContainer):
|
||||||
|
@ -105,7 +105,7 @@ class OutputGenerator:
|
||||||
except KeyError:
|
except KeyError:
|
||||||
raise UnknownElementError(type(e))
|
raise UnknownElementError(type(e))
|
||||||
if isinstance(e, Group):
|
if isinstance(e, Group):
|
||||||
self.current_context = old_context
|
self.context = old_context
|
||||||
|
|
||||||
def escape_special_chars(self, text: str) -> str:
|
def escape_special_chars(self, text: str) -> str:
|
||||||
return text
|
return text
|
||||||
|
|
|
@ -31,6 +31,7 @@ class TransformProcessor:
|
||||||
def __init__(self, root_file_path: str):
|
def __init__(self, root_file_path: str):
|
||||||
self.context: Context = None
|
self.context: Context = None
|
||||||
self.root_file_path = root_file_path
|
self.root_file_path = root_file_path
|
||||||
|
self.root_highlight_style = "default"
|
||||||
|
|
||||||
self.TYPE_DICT = {
|
self.TYPE_DICT = {
|
||||||
TableRow: self.transform_TableRow,
|
TableRow: self.transform_TableRow,
|
||||||
|
@ -325,7 +326,6 @@ class TransformProcessor:
|
||||||
"sk": "cs",
|
"sk": "cs",
|
||||||
None: None
|
None: None
|
||||||
}
|
}
|
||||||
print(self.context.get_metadata("language"))
|
|
||||||
return FQuoted(*e.content, quote_type=e.quote_type, style=quote_styles[self.context.get_metadata("language")])
|
return FQuoted(*e.content, quote_type=e.quote_type, style=quote_styles[self.context.get_metadata("language")])
|
||||||
|
|
||||||
def transform_Image(self, e: Image) -> Image:
|
def transform_Image(self, e: Image) -> Image:
|
||||||
|
@ -458,10 +458,6 @@ class TransformProcessor:
|
||||||
e.attributes["highlight"] = self.context.get_metadata("highlight") if self.context.get_metadata("highlight") is not None else True
|
e.attributes["highlight"] = self.context.get_metadata("highlight") if self.context.get_metadata("highlight") is not None else True
|
||||||
if not "style" in e.attributes:
|
if not "style" in e.attributes:
|
||||||
e.attributes["style"] = self.context.get_metadata("highlight-style") if self.context.get_metadata("highlight-style") is not None else "default"
|
e.attributes["style"] = self.context.get_metadata("highlight-style") if self.context.get_metadata("highlight-style") is not None else "default"
|
||||||
e.attributes["noclasses"] = False
|
|
||||||
# I think this is supposed to enable inline styles for highlighting when the style differs from the document, but it clearly doesn't work. a) HTML_generator never accesses it and b) Only the top-level document contains a style so you have to ask the top level context, not the current context.
|
|
||||||
else:
|
|
||||||
e.attributes["noclasses"] = True
|
|
||||||
return e
|
return e
|
||||||
|
|
||||||
def transform_Command(self, e: Command) -> Union[Div, Span]:
|
def transform_Command(self, e: Command) -> Union[Div, Span]:
|
||||||
|
|
Loading…
Reference in a new issue