Browse Source

Use str.replace() instead of regex. #13

pull/28/head
Jan Černohorský 10 months ago
parent
commit
516c2fb8e0
  1. 13
      src/formatitko/html_generator.py
  2. 24
      src/formatitko/latex_generator.py

13
src/formatitko/html_generator.py

@ -4,7 +4,6 @@ from panflute import TableRow, TableCell, Caption, Doc
from panflute import ListContainer, Element
from typing import Union, Dict
import re
import os
import io
import warnings
@ -33,12 +32,12 @@ class HTMLGenerator(OutputGenerator):
super().generate(e)
def escape_special_chars(self, text: str) -> str:
text = re.sub(re.compile(r"&"), "&", text)
text = re.sub(re.compile(r"<"), "&lt;", text)
text = re.sub(re.compile(r">"), "&rt;", text)
text = re.sub(re.compile(r"\""), "&quot;", text)
text = re.sub(re.compile(r"'"), "&#39;", text)
# text = re.sub(re.compile(r" '), "&nbsp;", text) # Don't replace no-break spaces with HTML escapes, because we trust unicode?
text = text.replace("&", "&amp;")
text = text.replace("<", "&lt;")
text = text.replace(">", "&rt;")
text = text.replace("\"", "&quot;")
text = text.replace("'", "&#39;")
# text = text.replace(" ", "&nbsp;") # Don't replace no-break spaces with HTML escapes, because we trust unicode?
return text
def stag(self, tag: str, attributes: Dict[str,str]={}) -> str:

24
src/formatitko/latex_generator.py

@ -10,8 +10,6 @@ from .context import Group
from .output_generator import OutputGenerator
from .images import ImageProcessor
import re
class LaTeXGenerator(OutputGenerator):
def __init__(self, output_file, imageProcessor: ImageProcessor, *args, **kwargs):
self.imageProcessor = imageProcessor
@ -23,17 +21,17 @@ class LaTeXGenerator(OutputGenerator):
super().generate(e)
def escape_special_chars(self, text: str) -> str:
text = re.sub(re.compile(r"&"), "\\&", text)
text = re.sub(re.compile(r"%"), "\\%", text)
text = re.sub(re.compile(r"\$"), "\\$", text)
text = re.sub(re.compile(r"#"), "\\#", text)
text = re.sub(re.compile(r"_"), "\\_", text)
text = re.sub(re.compile(r"\{"), "\\{", text)
text = re.sub(re.compile(r"\}"), "\\}", text)
text = re.sub(re.compile(r"~"), "\\textasciitilde{}", text)
text = re.sub(re.compile(r"\^"), "\\textasciicircum{}", text)
text = re.sub(re.compile(r"\\"), "\\textbackslash{}", text)
text = re.sub(re.compile(r" "), "~", text) # We use unicode no-break spaces to force nbsp in output
text = text.replace("&", "\\&")
text = text.replace("%", "\\%")
text = text.replace("$", "\\$")
text = text.replace("#", "\\#")
text = text.replace("_", "\\_")
text = text.replace("{", "\\{")
text = text.replace("}", "\\}")
text = text.replace("~", "\\textasciitilde{}")
text = text.replace("^", "\\textasciicircum{}")
text = text.replace("\\", "\\textbackslash{}")
text = text.replace(" ", "~") # We use unicode no-break spaces to force nbsp in output
return text
def stag(self, tag: str, attributes: Dict[str,str]={}) -> str:

Loading…
Cancel
Save