diff options
-rw-r--r-- | convert.py | 30 |
1 files changed, 22 insertions, 8 deletions
@@ -7,26 +7,40 @@ data = [line.rstrip("\n") for line in open(path)] latex = [ "\\documentclass[11pt]{article}", "\\usepackage[utf8]{inputenc}", + "\\usepackage{hyperref}", + "\\usepackage{ulem}", "\\begin{document}" ] rules = { - "(# )(.*)": "\\section{input}", # Caption 1 - "(## )(.*)": "\\subsection{input}", # Caption 2 - "(### )(.*)": "\\subsubsection{input}", # Caption 3 + r"# (.*)": "\\section{0}", # Caption 1 + r"## (.*)": "\\subsection{0}", # Caption 2 + r"### (.*)": "\\subsubsection{0}", # Caption 3 + r"\[([^\[]+)\]\(([^\)]+)\)": "\\href{1}{0}", # URLs + r"(\*\*|__)(.*?)\1": "\\textbf{1}", # Bold + r"(\*|_)(.*?)\1": "\\emph{1}", # Emphasize/italics + r"\~\~(.*?)\~\~": "\\sout{0}", # Strikethrough + r"\* (.*)": "ul", # Unordered list } for i, line in enumerate(data): - print(line) matched = False new_line = line for rule in rules: match = re.match(rule, new_line) if match: - print(match.groups()) matched = True - new_line = rules[rule].replace("input", match.groups()[1]) - if new_line[-2:] == " ": - new_line = new_line[:-2] + new_line = rules[rule] + for j, matched_group in enumerate(match.groups()): + if rules[rule][:1] == "\\": + new_line = new_line.replace(str(j), matched_group) + elif rules[rule] == "ul": + if re.match(rule, data[i - 1]): + new_line = "\\item " + matched_group + if not re.match(rule, data[i + 1]): + new_line += " \\end{itemize}" + else: + new_line = "\\begin{itemize} \\item " + matched_group + if line[-2:] == " ": new_line += "\\\\" latex.append(new_line) |