-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcomp.py
More file actions
140 lines (95 loc) · 4.06 KB
/
Copy pathcomp.py
File metadata and controls
140 lines (95 loc) · 4.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
from sys import *
import re
def open_file(filename):
with open(filename, 'r') as lines:
return lexer(lines)
def replace_str_index(text,index=0,replacement=''):
return '%s%s%s'%(text[:index],replacement,text[index+1:])
def bold(text): #Regex code used from Carlos Quental @https://github.com/carlosquental/marcabaixo/blob/master/marcabaixo.py
text = re.sub(r'\*{2}(.*)\*{2}', '<strong>\\1</strong>', text)
text = re.sub(r'_{2}(.*)_{2}', '<strong>\\1</strong>', text)
return text
def italic(text): #Regex code used from Carlos Quental @https://github.com/carlosquental/marcabaixo/blob/master/marcabaixo.py
text = re.sub(r'\*(.*)\*', '<em>\\1</em>', text)
text = re.sub(r'_(.*)_', '<em>\\1</em>', text)
return text
def close_ul(boolean):
global openul
if boolean:
openul = False
return '</ul>'
else:
return ''
def close_ol(boolean):
global openol
if boolean:
openol = False
return '</ol>'
else:
return ''
def run():
data = open_file(argv[1])
return data
def lexer(lines):
final = '<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"> </head><body>'
special_symbols = ["#", "!", "\n", '-']
openul = False
openol = False
for each_line in lines:
each_line = bold(each_line)
each_line = italic(each_line)
# Title
if (each_line[0]=='!'):
final += close_ul(openul)
final += close_ol(openol)
titlestring = each_line[1:-1] if each_line[-1] =='\n' else each_line[1:]
final = replace_str_index(final, 59, "<title>" + titlestring + "</title>")
# Empty Space
if (len(each_line) == 0):
final += each_line
# Paragraph
if (not (each_line[0] in special_symbols or each_line[1] ==' ')) and (not (each_line[0].isdigit() and each_line[1] == '.')):
final += close_ul(openul)
final += close_ol(openol)
pstring = each_line[:-1] if each_line[-1] =='\n' else each_line[:]
final += "<p>" + pstring + "</p>"
# H1
if (each_line[0]=='#' and each_line[1] != '#'):
final += close_ul(openul)
final += close_ol(openol)
hstring = each_line[1:-1] if each_line[-1] =='\n' else each_line[1:]
final += '<h1>' + hstring + '</h1>'
# H2
if (each_line[0]=='#' and each_line[1] == '#' and each_line[2] != '#'):
final += close_ul(openul)
final += close_ol(openol)
hstring = each_line[2:-1] if each_line[-1] =='\n' else each_line[2:]
final += '<h2>' + hstring + '</h2>'
# H3
if (each_line[0]=='#' and each_line[1] == '#' and each_line[2] == '#'):
final += close_ul(openul)
final += close_ol(openol)
hstring = each_line[3:-1] if each_line[-1] =='\n' else each_line[3:]
final += '<h3>' + hstring + '</h3>'
# UL
if (each_line[0]=='-' and each_line[1] == ' '):
final += close_ol(openol)
if not openul:
final += '<ul>'
openul = True
listring = each_line[2:-1] if each_line[-1] =='\n' else each_line[2:]
final += '<li>' + listring + '</li>'
# OL
if (each_line[0].isdigit() and each_line[1] == '.'):
final += close_ul(openul)
if not openol:
final += '<ol>'
openol = True
listring = each_line[2:-1] if each_line[-1] =='\n' else each_line[2:]
final += '<li>' + listring + '</li>'
# Final
final += '</body></html>'
return final
with open('test.html', 'w') as htmlfile: # Writes the output of run into a document.
htmlfile.write(run())
print(run())