diff -urN v10/ezhtml.py v11/ezhtml.py
--- v10/ezhtml.py 2018-09-20 03:53:08.000000000 +0900
+++ v11/ezhtml.py 2018-09-20 21:28:26.000000000 +0900
@@ -150,9 +150,9 @@
lst = solo_tags_modify(lst)
return lst
-def close_tag(lst):
+def close_tag(lst, pre):
(tag, lst) = ( lst[0], lst[1:] )
- lst = close_solo_tag( lst, tag[0].lower() == 'pre' )
+ lst = close_solo_tag(lst, pre)
v = lst
if len(lst) == 1:
@@ -163,6 +163,12 @@
def html_load(s):
stk = []
+ pre_cnt = 0
+
+ def add_cnt(tag):
+ pre = ( tag[1] if tag[0] == '/' else tag[0] ).lower() == 'pre'
+ return ( -1 if tag[0] == '/' else 1 ) if pre else 0
+
while True:
(p, tag, s) = get_tag(s)
if not tag:
@@ -171,14 +177,16 @@
stk.append( cv_amp(p, 'dec') )
if tag[0] != '/':
stk.append(tag)
+ pre_cnt += add_cnt(tag)
continue
i = start_idx( stk, tag[1] )
if i >= 0:
- stk = stk[:i] + [ close_tag( stk[i:] ) ]
+ stk = stk[:i] + [ close_tag( stk[i:], pre_cnt > 0 ) ]
+ pre_cnt += add_cnt(tag)
else:
stk.append( solo_tag(tag) )
- o = close_solo_tag(stk)
+ o = close_solo_tag( stk, pre_cnt > 0 )
return strip_lst1(o)
def yaml_dump(o):