diff -ur v11/ezmd.py v12/ezmd.py --- v11/ezmd.py 2019-09-30 00:19:27.000000000 +0900 +++ v12/ezmd.py 2019-09-30 01:52:00.000000000 +0900 @@ -72,19 +72,41 @@ return { 's': v2 } return { 'a href="{}"'.format(v1): v2 } if v1 else v2 -def do_str(s): - # a href +def do_br(s): + p = '\\n' + if p in s: + lst = flat_map( lambda s_: [ s_, { 'br': '/' } ], s.split(p) )[:-1] + return from_lst( cut_empty(lst) ) + return s + +def do_a_href(s): (h, t) = ('[[', ']]') (ih, it) = list( map( lambda p: s_idx(s, p), (h, t) ) ) if 0 <= ih and ih < it: s3 = lst_strip( ( s[:ih], s[ih+len(h):it], s[it+len(t):] ) ) - m = s3[1] - if m: - (v1, v2) = lst_strip( m.split('|') ) if '|' in m else (m, m) - s3[1] = do_v1v2(v1, v2) - return from_lst( cut_empty(s3) ) + + def mcv(s): + (v1, v2) = lst_strip( s.split('|') ) if '|' in s else (s, s) + return do_v1v2(v1, v2) + + cvs = ( (lambda s: s), mcv, do_a_href ) + f = lambda i: cvs[i]( s3[i] ) + return from_lst( cut_empty( flat_map( f, range(3) ) ) ) return s +# +# sol : str or lst +# +def map_sol(f_s_ret_sol, sol): + f = lambda o: o if type(o) == dict else f_s_ret_sol(o) + return flat_map(f, sol) if type(sol) == list else f_s_ret_sol(sol) + +def do_str(sol): # str or list + cvs = (do_br, do_a_href) + for cv in cvs: + sol = map_sol(cv, sol) + return sol + def do_mode_ul(buf, res): buf = esc_join(buf) buf = list( filter( lambda s: s.strip(), buf ) )