1
+ import mistune
1
2
import re
2
3
3
-
4
4
def parse (markdown ):
5
- lines = markdown .split ('\n ' )
6
- res = ''
7
- in_list = False
8
- in_list_append = False
5
+ lines = markdown .splitlines ()
6
+ output = ''
9
7
for i in lines :
10
- if re .match ('###### (.*)' , i ) is not None :
11
- i = '<h6>' + i [7 :] + '</h6>'
12
- elif re .match ('## (.*)' , i ) is not None :
13
- i = '<h2>' + i [3 :] + '</h2>'
14
- elif re .match ('# (.*)' , i ) is not None :
15
- i = '<h1>' + i [2 :] + '</h1>'
16
- m = re .match (r'\* (.*)' , i )
17
- if m :
18
- if not in_list :
19
- in_list = True
20
- is_bold = False
21
- is_italic = False
22
- curr = m .group (1 )
23
- m1 = re .match ('(.*)__(.*)__(.*)' , curr )
24
- if m1 :
25
- curr = m1 .group (1 ) + '<strong>' + \
26
- m1 .group (2 ) + '</strong>' + m1 .group (3 )
27
- is_bold = True
28
- m1 = re .match ('(.*)_(.*)_(.*)' , curr )
29
- if m1 :
30
- curr = m1 .group (1 ) + '<em>' + m1 .group (2 ) + \
31
- '</em>' + m1 .group (3 )
32
- is_italic = True
33
- i = '<ul><li>' + curr + '</li>'
34
- else :
35
- is_bold = False
36
- is_italic = False
37
- curr = m .group (1 )
38
- m1 = re .match ('(.*)__(.*)__(.*)' , curr )
39
- if m1 :
40
- is_bold = True
41
- m1 = re .match ('(.*)_(.*)_(.*)' , curr )
42
- if m1 :
43
- is_italic = True
44
- if is_bold :
45
- curr = m1 .group (1 ) + '<strong>' + \
46
- m1 .group (2 ) + '</strong>' + m1 .group (3 )
47
- if is_italic :
48
- curr = m1 .group (1 ) + '<em>' + m1 .group (2 ) + \
49
- '</em>' + m1 .group (3 )
50
- i = '<li>' + curr + '</li>'
51
- else :
52
- if in_list :
53
- in_list_append = True
54
- in_list = False
8
+ output += mistune .markdown (i )
55
9
56
- m = re .match ('<h|<ul|<p|<li' , i )
57
- if not m :
58
- i = '<p>' + i + '</p>'
59
- m = re .match ('(.*)__(.*)__(.*)' , i )
60
- if m :
61
- i = m .group (1 ) + '<strong>' + m .group (2 ) + '</strong>' + m .group (3 )
62
- m = re .match ('(.*)_(.*)_(.*)' , i )
63
- if m :
64
- i = m .group (1 ) + '<em>' + m .group (2 ) + '</em>' + m .group (3 )
65
- if in_list_append :
66
- i = '</ul>' + i
67
- in_list_append = False
68
- res += i
69
- if in_list :
70
- res += '</ul>'
71
- return res
10
+ output = re .sub (r'\n' , '' , output )
11
+ output = re .sub (r'</ul><ul>' , '' , output )
12
+ output = re .sub (r'</ol><ol>' , '' , output )
13
+ return output
0 commit comments