diff -ur v11/argmnt.py v12/argmnt.py --- v11/argmnt.py 2018-10-27 01:28:27.000000000 +0900 +++ v12/argmnt.py 2020-02-06 22:39:57.000000000 +0900 @@ -2,19 +2,25 @@ import sys import os -import subprocess as sp import time -import select import six import nkf import yaml -import opt -import term -import key + import rect import txbuf import txview -#import dbg + +import empty +import cmd_ut +import io_ut +import arg +import dbg +import term_ut + +term = term_ut.new() +disp = term.disp +key = term.key frm_info = { '': ' ', @@ -23,27 +29,23 @@ 'c': '===', } -class Empty: - pass +def new_nc(port): + e = empty.new() -def readable(f): - (rlst, wlst, xlst) = select.select( [f], [], [], 0 ) - return rlst != [] + def new(): + cmd = 'nc -l {}'.format(port) + e.proc = cmd_ut.proc_new( cmd, stdout=cmd_ut.PIPE ) + e.f = e.proc.get_stdout() + new() -def new_nc(port): - e = Empty() - cmd = 'nc -l {}'.format(port) - new = lambda : sp.Popen( cmd, shell=True, stdout=sp.PIPE ) - e.proc = new() def get(): s = '' - if readable(e.proc.stdout): + if io_ut.readable(e.f): e.proc.wait() - s = e.proc.stdout.read() - e.proc = new() + s = e.f.read() + new() return s - e.get = get - return e + return empty.to_attr( e, locals() ) str_width = nkf.str_width p_add = rect.p_add @@ -80,10 +82,10 @@ def cp_if_need(v): if type(v) == list: return list( map( cp_if_need, v ) ) - if isinstance(v, Empty): + if empty.is_empty(v): return copy_o(v) return v - o_ = Empty() + o_ = empty.new() ks = list( filter( lambda k: k[0] != '_', dir(o) ) ) for k in ks: setattr( o_, k, cp_if_need( getattr(o, k) ) ) @@ -287,7 +289,7 @@ i -= 1 def new(lst, nkf_opt, port): - e = Empty() + e = empty.new() rects = sum( map( get_rects, flat_lst(lst) ), [] ) r = contain_rect(rects) @@ -301,7 +303,7 @@ is_sel = lambda o: in_lst(o, e.sels) def key_dxy(k): - dxy = key.dxy( k, (0,0) ) + dxy = key.k_to_dxy( k, (0,0) ) if e.mode in step_modes: return rect.p_mul(dxy, e.step) return dxy @@ -406,19 +408,19 @@ return s def draw_cur(): - draw_r( rect.p_wh_to( e.cur, (1, 1) ), term.out ) + draw_r( rect.p_wh_to( e.cur, (1, 1) ), disp.out ) def new_draw_rect(bak): def f(r): r = contain_rect( [ bak, r ] ) - draw_r( r, term.out ) + draw_r( r, disp.out ) return f def new_draw_rects(bak): def f(rects): for (b, r) in zip(bak, rects): r = contain_rect( [ b, r ] ) - draw_r( r, term.out ) + draw_r( r, disp.out ) return f def new_draw(o): @@ -440,7 +442,7 @@ bak = e.cur e.cur = p for p in (bak, e.cur): - draw_r( rect.p_wh_to( p, (1,1) ), term.out ) + draw_r( rect.p_wh_to( p, (1,1) ), disp.out ) def move_cur_key(k): dxy = key_dxy(k) @@ -448,7 +450,7 @@ move_cur(dxy) return ((x1,y1),(x2,y2)) = rect.to_p2( rect.resize( view.get_rect(), (-1,-1) ) ) - d = key.allow(k) + d = key.k_to_allow(k) (x, y) = e.cur if d == 'pu': y = y1 @@ -479,7 +481,7 @@ rs += list( map( get_o_rect, e.sels ) ) if rs: r = contain_rect(rs) - draw_r( r, term.out ) + draw_r( r, disp.out ) draw_cur() def group(): @@ -637,7 +639,7 @@ def frm_align(k): o = get_sel_o() f = new_draw(o) - d = key.allow(k) + d = key.k_to_allow(k) if d in 'ud': o.frm.va = get_next( ['u', 'c', 'd'], o.frm.va ) f() @@ -653,7 +655,7 @@ if e.sels: o = e.sels[0] else: - o = Empty() + o = empty.new() o.typ = 'line' o.lst = [ list(e.cur) ] o.kind = '' @@ -678,7 +680,7 @@ if e.sels: o = e.sels[0] else: - o = Empty() + o = empty.new() o.typ = 'rect' (cx, cy) = e.cur o.r = [ cx, cy, 1, 1 ] @@ -822,13 +824,13 @@ move_cur_to( (o.x, o.y) ) e.sels = [o] set_mode('sel') - draw_r( get_tx_rect(o), term.out ) + draw_r( get_tx_rect(o), disp.out ) return True def get_key(klst): key.init() while True: - k = key.get( block=False ) + k = key.get() if k in klst: break if k: @@ -854,16 +856,10 @@ e.clipboard = None e.nc = new_nc(port) - draw_r( r, term.out ) + draw_r( r, disp.out ) return e -def to_class(d): - e = Empty() - for (k, v) in d.items(): - setattr(e, k, v) - return e - def cvt_data_load(o, y): if isinstance(o, six.string_types): o = o.strip().split('\n') @@ -887,14 +883,14 @@ if 'frm' not in o: o['frm'] = { 'kind': '', 'va': 'c', 'ha': 'c', 'bdr': [ 0, 0 ] } - e = to_class(o) + e = empty.new(o) if not has_typ(e): if type(e.s) != list: e.s = [ e.s ] (e.x, e.y) = e.xy e.w = max( map( str_width, e.s ) ) e.h = len(e.s) - e.frm = to_class(e.frm) + e.frm = empty.new(e.frm) return (e, y) @@ -942,24 +938,24 @@ s = nkf.cvt(s, nkf_opt) nkf.put_stdout(s + '\n') -def help(): - msg = [ - 'Usage: {} [-txt] [-i] [-o enc] [-p add_str_port] yaml_file', - " yaml_file == '-' or None, use stdin", - ' -txt : result txt to stdout', - ' update yaml data to stdout', - ' -i : in place yaml_file (over write)', - ' -p : port for add str, default 44317', - ] - sys.stderr.write( '\n'.join(msg) + '\n' ) - sys.exit(0) - if __name__ == "__main__": - if opt.index('-h') >= 0: - help() - - argv = opt.not_opt_argv( ['-o', '-p'], ['-txt', '-i', '-h'] ) - fn_i = argv.pop(0) if argv else '-' + a = arg.new() + if a.is_pop('-h'): + msg = [ + '[-txt] [-i] [-o enc] [-p add_str_port] yaml_file', + " yaml_file == '-' or None, use stdin", + ' -txt : result txt to stdout', + ' update yaml data to stdout', + ' -i : in place yaml_file (over write)', + ' -p : port for add str, default 44317', + ] + dbg.help_exit( '\n'.join(msg) ) + + txt_ = a.is_pop('-txt') + i_ = a.is_pop('-i') + enc = a.pop_str('-o') + add_str_port = a.pop_v('-p', 44317) + fn_i = a.pop('-') def f_read(fn): f = open(fn, 'r') @@ -977,15 +973,14 @@ (o, y) = cvt_data_load(o, y) lst.append(o) - o = opt.get('-o', '') - o = '-' + o if o else nkf_opt + o = '-' + enc if enc else nkf_opt - if opt.index('-txt') >= 0: + if txt_: txt_out(lst, o) sys.exit(0) # edit - a = new( lst, o, opt.get('-p', 44317) ) + a = new( lst, o, add_str_port ) a.get_key( ['q'] ) a.fini() @@ -993,12 +988,13 @@ u8 = yaml.dump( lst, default_flow_style=False, allow_unicode=True, encoding='utf-8' ) b = nkf.cvt(u8, nkf_opt) if nkf_opt != '-u' else u8 - if fn_i != '-' and opt.index('-i') >= 0: + if fn_i != '-' and i_: def bak_fn(fn, i=0): bak = '{}.{}'.format(fn, i) return bak_fn(fn, i+1) if os.path.exists(bak) else bak - sp.call( 'mv {} {}'.format( fn_i, bak_fn(fn_i) ), shell=True ) + cmd_ut.call( 'mv {} {}'.format( fn_i, bak_fn(fn_i) ) ) + f = open(fn_i, 'w') f.write(b) f.close() Only in v11: dbg.py Only in v11: key.py Only in v11: nkf.py Only in v11: opt.py Only in v11: term.py diff -ur v11/txbuf.py v12/txbuf.py --- v11/txbuf.py 2018-10-17 20:55:40.000000000 +0900 +++ v12/txbuf.py 2020-02-06 22:39:57.000000000 +0900 @@ -1,8 +1,7 @@ -import term +import empty +import term_ut import rect -class Empty: - pass is_k1 = lambda c: ord(c) >= 0x80 k2 = chr(0) @@ -21,13 +20,14 @@ return s def new(r): - e = Empty() + e = empty.new() (rx, ry, rw, rh) = r arr_r = (rx-1, ry, rw+2, rh) - e.rev = term.s_rev - e.uline = term.s_uline - e.reset = term.s_reset + esc_seq = term_ut.esc_seq_new() + e.rev = esc_seq.rev + e.uline = esc_seq.uline + e.reset = esc_seq.reset e.arr = list( map( lambda i: ' ' * (rw+2), range(rh) ) ) e.att = list( map( lambda i: [[]] * (rw+2), range(rh) ) ) diff -ur v11/txview.py v12/txview.py --- v11/txview.py 2018-10-16 05:36:26.000000000 +0900 +++ v12/txview.py 2020-02-06 22:39:57.000000000 +0900 @@ -1,5 +1,6 @@ +import empty import nkf -import term +import term_ut import rect def sc_sub(vp, vp2, t_l, p, l, sc): @@ -31,13 +32,12 @@ sc += n return (p, l, sc) -class Empty: - pass - def new(r, nkf_opt): - e = Empty() - (t_w, t_h) = term.get_sz() - (e.x, e.y) = term.get_pos() + e = empty.new() + term = term_ut.new() + disp = term.disp + (t_w, t_h) = disp.wh + (e.x, e.y) = disp.get_xy() (rx, ry, rw, rh) = r @@ -46,7 +46,7 @@ sc = max( e.h - (t_h - e.y), 0 ) if sc: - term.scroll(sc) + disp.scroll(sc) e.y -= sc to_view = lambda x, y: (x - e.sx, y - e.sy) @@ -57,10 +57,10 @@ if nkf_opt != '-u': s = nkf.cvt(s, nkf_opt) (x, y) = to_view(x, y) - return term.s_loc( x + e.x, y + e.y ) + s + return disp.mov( x + e.x, y + e.y ) + s e.get_out_str = get_out_str - e.out = lambda x, y, s: term.out( get_out_str(x, y, s) ) + e.out = lambda x, y, s: disp.out( get_out_str(x, y, s) ) e.get_rect = lambda : rect.cvt_fxy( view_to, (0, 0, e.w, e.h) ) @@ -89,7 +89,7 @@ return all e.scroll = scroll - e.fini = lambda : term.loc( 0, e.y + e.h ) + e.fini = lambda : disp.mov( 0, e.y + e.h ) return e # EOF