summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--convert.py30
1 files changed, 22 insertions, 8 deletions
diff --git a/convert.py b/convert.py
index 2c1d7d5..5b372b6 100644
--- a/convert.py
+++ b/convert.py
@@ -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)