Пример #1
0
def csv2jsd(src_fn,colname0,colname1,**kwargs):
    from_file = efun.dflt_kwargs('from_file',True)
    fmt_key = efun.dflt_kwargs('fmt_key',fmt_mime_key)
    dtb = csv2dtb(src_fn,from_file)
    l = elel.mapv(dtb,lambda ele:{js_key_encd(fmt_key(ele[colname0])):ele[colname1]})
    d = dldl.dlist2dict(l)
    return(d)
Пример #2
0
def edfspls2groups(edfspls):
    '''
        一个元素的parent一定在前一层
        end深度优先搜索,一个元素的parent一定是第一个序号大于子节点的元素
    '''
    iname = eftl.dflt_kwargs("iname","edfs_index",**kwargs)
    vname = eftl.dflt_kwargs("vname","fpl",**kwargs)
    descl = elel.l2descl(edfspls,iname=iname,vname=vname)
    groups = elel.groupby_value_lngth(descl,"fpl")
    kl =list(groups.keys())
    kl.sort()
    kl.reverse()
    for i in range(len(kl)-1):
        k = kl[i]
        layer = groups[k]
        prev_layer = groups[kl[i+1]]
        for each in layer:
            edfs_index = each['edfs_index']
            lngth = len(prev_layer)
            si = 0
            for j in range(si,lngth):
                prev_each = prev_layer[j]
                prev_edfs_index = prev_each['edfs_index']
                if(prev_edfs_index > edfs_index):
                    each['parent_edfs_index'] = prev_edfs_index
                    si = j
                    break
                else:
                    pass
    return(groups)
Пример #3
0
def sdfspls2groups(sdfspls,**kwargs):
    '''
        按照深度分层
        一个元素的parent一定在前一层
        sdfsl倒着搜索,一个元素的parent一定是第一个序号小于子pl的元素
        此函数会填充父pl 的index
    '''
    iname = eftl.dflt_kwargs("iname","sdfs_index",**kwargs)
    vname = eftl.dflt_kwargs("vname","fpl",**kwargs)
    descl = elel.l2descl(sdfspls,iname=iname,vname=vname)
    groups = elel.groupby_value_lngth(descl,"fpl")
    kl =list(groups.keys())
    kl.sort()
    kl.reverse()
    for i in range(len(kl)-1):
        k = kl[i]
        layer = groups[k]
        prev_layer = groups[kl[i+1]]
        for each in layer:
            sdfs_index = each['sdfs_index']
            lngth = len(prev_layer)
            si = 0
            for j in range(lngth-1,si-1,-1):
                prev_each = prev_layer[j]
                prev_sdfs_index = prev_each['sdfs_index']
                if(prev_sdfs_index < sdfs_index):
                    each['parent_sdfs_index'] = prev_sdfs_index
                    si = j
                    break
                else:
                    pass
    return(groups)
Пример #4
0
def blor(*args, **kwargs):
    base = eftl.dflt_kwargs('base', False, **kwargs)
    flses = eftl.dflt_kwargs('flses', [], **kwargs)
    for i in range(len(args)):
        cond = False if (is_fls(args[i], flses)) else True
        base = (base or cond)
    return (base)
Пример #5
0
def num2binlist(num, **kwargs):
    '''
        >>> num2binlist(2)
        [1, 0]
        >>> num2binlist(3)
        [1, 1]
        >>> num2binlist(3,size=4)
        [0, 0, 1, 1]
        >>>
    '''
    bitmap_size = eftl.dflt_kwargs('size', bin(num).__len__() - 2, **kwargs)
    bigend = eftl.dflt_kwargs('bigend', True, **kwargs)
    bitmaplist = []
    s = bin(num)[2:]
    s_len = s.__len__()
    for i in range(0, s_len):
        b = s[s_len - i - 1]
        bitmaplist.append(int(b))
    for i in range(s_len, bitmap_size):
        bitmaplist.append(0)
    if (bigend):
        bitmaplist.reverse()
    else:
        pass
    return (bitmaplist)
Пример #6
0
def get_print_lines_and_paths(j_str,**kwargs):
    ####
    sp = eftl.dflt_kwargs("sp",'/',**kwargs)
    spaces = eftl.dflt_kwargs("spaces",[' ','\t'],**kwargs)
    colons = eftl.dflt_kwargs("colons",[':'],**kwargs)
    commas = eftl.dflt_kwargs("commas",[','],**kwargs)
    line_sps = eftl.dflt_kwargs("line_sps",['\r','\n'],**kwargs)
    block_op_pairs_dict = eftl.dflt_kwargs('block_op_pairs_dict',block.get_block_op_pairs('{}[]()'),**kwargs)
    quotes_pairs_dict = eftl.dflt_kwargs('quotes_pairs_dict',quote.get_quotes_pairs('""\'\''))
    path_sps =  eftl.dflt_kwargs('path_sps',['/'],**kwargs)
    fixed_indent = eftl.dflt_kwargs('fixed_indent',0,**kwargs)
    indent = eftl.dflt_kwargs('indent',4,**kwargs)
    #step0  quote
    j_str = convert_token_in_quote(
        j_str,
        block_op_pairs_dict=block_op_pairs_dict,
        quotes_pairs_dict=quotes_pairs_dict,
        spaces=spaces,
        colons=colons,
        commas=commas,
        line_sps=line_sps,
        path_sps=path_sps
    )
    #step1 format
    j_str = fmt_jstr.format_j_str(j_str,block_op_pairs_dict)
    #step2 char-level-of-block
    j_lv_str = tokenize_block.get_j_str_lvs_dict(j_str,block_op_pairs_dict)
    orig_lines = j_str.split('\n')
    line_start_indexes = get_line_start_index_in_j_str(orig_lines)
    new_lines = {}
    #step 1: line 0 
    prev_lv = int(j_lv_str[line_start_indexes[0]])
    prev_path = line_to_path_init(orig_lines[0],block_op_pairs_dict,sp,commas,colons)
    #----------should not unescape here for secarino:{'resp_body_bytes': b'&#39;c'}
    #          which will cause {'resp_body_bytes': b''c'}
    new_lines[0] = orig_lines[0]
    #----------should not unescape here 
    paths = {}
    paths = {0: prev_path}
    for i in range(1, orig_lines.__len__()):
        curr_lv = int(j_lv_str[line_start_indexes[i]])
        curr_path = line_to_path(orig_lines[i],curr_lv,prev_lv,prev_path,block_op_pairs_dict,sp,commas,colons)
        paths[i] = curr_path
        curr_head = utils.path_string_get_head(curr_path,delimiter=sp)
        if(fixed_indent):
            prepend = " " * indent * (curr_head.count(sp) - 1)
        else:
            curr_head = curr_head.replace(sp,'')
            #---escaped to calculate the real prepend spaces
            curr_head = html.unescape(curr_head)
            #---escaped to calculate the real prepend spaces
            curr_head_len = curr_head.__len__()
            prepend = " " * curr_head_len
        #------------should not unescape here
        new_lines[i] = ''.join((prepend,orig_lines[i]))
        #------------should not unescape here
        prev_lv = curr_lv
        prev_path = curr_path
    return({'lines':new_lines,'paths':paths})
Пример #7
0
def get_rand_name(**kwargs):
    dflt_init_chars = "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    dflt_other_chars = "_0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    lngth = eftl.dflt_kwargs("len", 4, **kwargs)
    init_chs = eftl.dflt_kwargs("init", dflt_init_chars, **kwargs)
    other_chs = eftl.dflt_kwargs("other", dflt_other_chars, **kwargs)
    init_ch = random.choice(init_chs)
    others = random.choices(other_chs, k=lngth - 1)
    other = elel.join(others, "")
    return (init_ch + other)
Пример #8
0
def bland_rtrn_last(*args, **kwargs):
    base = eftl.dflt_kwargs('base', True, **kwargs)
    flses = eftl.dflt_kwargs('flses', [], **kwargs)
    for i in range(len(args)):
        cond = False if (is_fls(args[i], flses)) else True
        if (cond):
            base = args[i]
        else:
            return (False)
    return (base)
Пример #9
0
def blor_rtrn_first(*args, **kwargs):
    base = eftl.dflt_kwargs('base', False, **kwargs)
    flses = eftl.dflt_kwargs('flses', [], **kwargs)
    for i in range(len(args)):
        cond = False if (is_fls(args[i], flses)) else True
        if (cond):
            base = args[i]
            break
        else:
            pass
    return (base)
Пример #10
0
def _get_fo(x, y, **kwargs):
    group_func = eftl.dflt_kwargs("group_func", lambda ele: ele, **kwargs)
    other_args = eftl.dflt_kwargs("other_args", [], **kwargs)
    group_func_mat = eftl.dflt_kwargs("group_func_mat", None, **kwargs)
    other_args_mat = eftl.dflt_kwargs("other_args_mat", None, **kwargs)
    if (group_func_mat == None):
        pass
    else:
        group_func = group_func_mat[x][y]
    if (other_args_mat == None):
        pass
    else:
        other_args = other_args_mat[x][y]
    return ((group_func, other_args))
Пример #11
0
def product(l, repeat=2, **kwargs):
    st = eftl.dflt_kwargs("sort", False, **kwargs)
    rslt = itertools.product(l, repeat=repeat)
    rslt = list(rslt)
    rslt = elel.mapv(rslt, list, [])
    rslt = elel.mapv(rslt, sorted, []) if (st) else rslt
    return (rslt)
Пример #12
0
def combinate(l, repeat=2, **kwargs):
    st = eftl.dflt_kwargs("sort", False, **kwargs)
    rslt = [each for each in itertools.combinations(l, repeat)]
    rslt = list(rslt)
    rslt = elel.mapv(rslt, list, [])
    rslt = elel.mapv(rslt, sorted, []) if (st) else rslt
    return (rslt)
Пример #13
0
def setdflt_fpl(jobj, fpl, **kwargs):
    '''
        #if fpl already in jobj, will do nothing
        y = {}
        fpl = ['c','b']
        setdflt_fpl(y,fpl)
        y
        >>>{'c': {'b': {}}}
        setdflt_fpl(y,fpl)
        >>>{'c': {'b': {}}}
    '''
    dflt = eftl.dflt_kwargs("value", {}, **kwargs)
    this = jobj
    for i in range(0, fpl.__len__()):
        key = fpl[i]
        try:
            this.__getitem__(key)
        except:
            try:
                # necessary ,when dflt = {} or []
                de = copy.deepcopy(dflt)
                this.__setitem__(key, de)
            except Exception as err:
                print(err)
                #return(jobj)
            else:
                pass
            this = this.__getitem__(key)
        else:
            this = this.__getitem__(key)
    return (jobj)
Пример #14
0
def setdflt_fpl(orb, fpl, **kwargs):
    '''
        #if fpl already in orb, will do nothing
        >>>
        >>> getfpl(orb,['html','body','div','text_'])
        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
          File "<stdin>", line 11, in getfpl
        AttributeError: 'Orb' object has no attribute 'text_'
        >>>
        >>>
        >>> setdflt_fpl(orb,['html','body','div','text_'])
        >>> getfpl(orb,['html','body','div','text_'])
        >>>
    '''
    dflt = eftl.dflt_kwargs("value", Orb(), **kwargs)
    this = orb
    for i in range(0, fpl.__len__()):
        key = fpl[i]
        try:
            this.__getattribute__(key)
        except:
            try:
                # necessary ,when dflt = {} or []
                de = copy.deepcopy(dflt)
                this.__setattr__(key, de)
            except Exception as e:
                print(e)
                #return(orb)
            else:
                pass
            this = this.__getattribute__(key)
        else:
            this = this.__getattribute__(key)
    ###this is a trick for jobj#
    _inited = eftl.dflt_kwargs("_inited", True, **kwargs)
    if (_inited):
        try:
            this._ζ = True
        except Exception as e:
            pass
        else:
            pass
    else:
        pass
    ###############################
    return (orb)
Пример #15
0
def sdfspls2wfspls(sdfspls,**kwargs):
    groups = sdfspls2groups(sdfspls,**kwargs)
    vname = eftl.dflt_kwargs("vname","fpl",**kwargs)
    plmat = emem.mapv(groups,map_func=lambda ele:ele[vname])
    plmat = ltlt.to_list(plmat)
    wfsel = m2wfsel(plmat)
    wfspls = elel.mapv(wfsel,lambda ele:ele['fpl'])
    return(wfspls)
Пример #16
0
def wfsfpls2plmat(wfsfpls,**kwargs):
    iname = eftl.dflt_kwargs("iname","wfs_index",**kwargs)
    vname = eftl.dflt_kwargs("vname","fpl",**kwargs)
    descl = elel.l2descl(wfspls,iname=iname,vname=vname)
    groups = elel.groupby_value_lngth(descl,"fpl")
    plmat = ltlt.to_list(groups) 
    plmat = emem.mapv(plmat,map_func=eded.d2orb)
    plmat[0][0].wfs_pindex = null
    lngth = len(plmat)
    for i in range(1,lngth):
        lyr = plmat[i]
        plyr = plmat[i-1]
        for j in range(len(lyr)):
            ele = lyr[j] 
            pi = fpl2pwfsi(ele.fpl,plyr)
            plmat[i][j].wfs_pindex = pi
    return(plmat)            
Пример #17
0
def binlist2num(binlist, **kwargs):
    bigend = eftl.dflt_kwargs('bigend', True, **kwargs)
    if (bigend):
        pass
    else:
        binlist = elel.fcp(binlist)
        binlist.reverse()
    arr = elel.mapv(binlist, str)
    s = elel.join(arr)
    return (int(s, 2))
Пример #18
0
def init_mat(layer_length_list,**kwargs):
    '''
        from xdict.jprint import pobj,pdir,parr
        init_mat([1,3,2])
        parr(init_mat([1,3,2]))
        >>> parr(init_mat([1,3,2]))
        [None]
        [None, None, None]
        [None, None]
        >>>
    '''
    value = eftl.dflt_kwargs("value",None,**kwargs)
    dcp = eftl.dflt_kwargs("deepcopy",False,**kwargs)
    value = copy.deepcopy(value) if (dcp) else value
    depth = len(layer_length_list)
    m = elel.init(depth,[])
    for i in range(depth):
        layer_lngth = layer_length_list[i]
        m[i]  = elel.init(layer_lngth,value)
    return(m)
Пример #19
0
def get_type(obj, **kwargs):
    enable_parse_other = dflt_kwargs("parse_other", True, **kwargs)
    for k in _FUNCS:
        f = _FUNCS[k]
        if (f(obj)):
            return (k)
        else:
            pass
    if (enable_parse_other):
        return (parse_other(obj))
    else:
        return ('other')
def get_jdict_token_set(**kwargs):
    '''
        from xdict.jprint import get_jdict_token_set
        get_jdict_token_set(quotes_pairs_dict={1: ('"', '"'), 2: ("<", ">")})
    '''
    spaces = eftl.dflt_kwargs("spaces", [' ', '\t'], **kwargs)
    colons = eftl.dflt_kwargs("colons", [':'], **kwargs)
    commas = eftl.dflt_kwargs("commas", [','], **kwargs)
    line_sps = eftl.dflt_kwargs("line_sps", ['\r', '\n'], **kwargs)
    block_op_pairs_dict = eftl.dflt_kwargs("block_op_pairs_dict",
                                           block.get_block_op_pairs('{}[]()'),
                                           **kwargs)
    quotes_pairs_dict = eftl.dflt_kwargs("quotes_pairs_dict",
                                         quote.get_quotes_pairs('""\'\''),
                                         **kwargs)
    lquotes, rquotes, quotes = quote.get_lrquotes(quotes_pairs_dict)
    path_sps = eftl.dflt_kwargs("path_sps", ['/'])
    #######
    d = {}
    s = set({})

    def add_bi_table(s, d, x):
        for each in x:
            k = each
            v = escape.html_number_escape_str(k)
            d[k] = v
            d[v] = k
            s.add(k)

    add_bi_table(s, d, spaces)
    add_bi_table(s, d, colons)
    add_bi_table(s, d, commas)
    add_bi_table(s, d, line_sps)
    add_bi_table(s, d, lquotes)
    add_bi_table(s, d, rquotes)
    add_bi_table(s, d, path_sps)
    for i in range(1, block_op_pairs_dict.__len__() + 1):
        s.add(block_op_pairs_dict[i][0])
        s.add(block_op_pairs_dict[i][1])
        recover_token_l = escape.html_number_escape_str(
            block_op_pairs_dict[i][0])
        recover_token_r = escape.html_number_escape_str(
            block_op_pairs_dict[i][1])
        d[block_op_pairs_dict[i][0]] = recover_token_l
        d[block_op_pairs_dict[i][1]] = recover_token_r
        d[recover_token_l] = block_op_pairs_dict[i][0]
        d[recover_token_r] = block_op_pairs_dict[i][1]
    return ({'token_set': s, 'replace_ref_dict': d})
Пример #21
0
def plcmp(pl0,pl1,**kwargs):
    '''
        plcmp([0,1,2],[0,1])
        #> 1
        plcmp([1],[0,1])
        #> 1
        plcmp([0,0],[0,1])
        #> -1
    '''
    lngth0 = len(pl0)
    lngth1 = len(pl1)
    break_tie_longer_bigger = eftl.dflt_kwargs("break_tie_longer_bigger",True,**kwargs)
    break_tie = 1 if(break_tie_longer_bigger) else -1
    if(lngth0 == lngth1):
        rslt = _plcmp(pl0,pl1)
    elif(lngth0 > lngth1):
        rslt = _plcmp(pl0[:lngth1],pl1)
        rslt = break_tie if(rslt == 0) else rslt
    else:
        rslt = _plcmp(pl0,pl1[:lngth0])
        rslt = (-break_tie) if(rslt == 0) else rslt
    return(rslt)
Пример #22
0
def get_line_color_sec(line,path,**kwargs):
    sp = eftl.dflt_kwargs("sp",'/',**kwargs)
    spaces = eftl.dflt_kwargs("spaces",[' ','\t'],**kwargs)
    colons = eftl.dflt_kwargs("colons",[':'],**kwargs)
    commas = eftl.dflt_kwargs("commas",[','],**kwargs)
    line_sps = eftl.dflt_kwargs("line_sps",['\r','\n'],**kwargs)
    block_op_pairs_dict = eftl.dflt_kwargs('block_op_pairs_dict',block.get_block_op_pairs('{}[]()'),**kwargs)
    quotes_pairs_dict = eftl.dflt_kwargs('quotes_pairs_dict',quote.get_quotes_pairs('""\'\''))
    path_sps =  eftl.dflt_kwargs('path_sps',['/'],**kwargs)
    fixed_indent = eftl.dflt_kwargs('fixed_indent',0,**kwargs)
    indent = eftl.dflt_kwargs('indent',4,**kwargs)
    ####
    if('block_op_pairs' in kwargs):
        block_op_pairs = kwargs['block_op_pairs']
        if(utils.is_dict(block_op_pairs)):
            block_op_pairs_dict = block_op_pairs
        else:
            block_op_pairs_dict = block.get_block_op_pairs(block_op_pairs)
    else:
        block_op_pairs_dict = block.get_block_op_pairs('{}[]()')
    if('block_non_ordered_op_pairs' in kwargs):
        block_non_ordered_op_pairs = kwargs['block_non_ordered_op_pairs']
        if(utils.is_dict(block_non_ordered_op_pairs)):
            block_non_ordered_op_pairs_dict = block_non_ordered_op_pairs
        else:
            block_non_ordered_op_pairs_dict = block.get_block_op_pairs(block_non_ordered_op_pairs)
    else:
        block_non_ordered_op_pairs_dict = block.get_block_op_pairs('{}')
    ####
    if('quotes_pairs' in kwargs):
        quotes_pairs = kwargs['quotes_pairs']
        if(utils.is_dict(quotes_pairs)):
            quotes_pairs_dict = quotes_pairs
        else:
            quotes_pairs_dict = quote.get_quotes_pairs(quotes_pairs)
    else:
        quotes_pairs_dict = quote.get_quotes_pairs('""\'\'')
    lquotes = []
    rquotes = []
    quotes = []
    for i in range(1,quotes_pairs_dict.__len__()+1):
        lquotes.append(quotes_pairs_dict[i][0])
        rquotes.append(quotes_pairs_dict[i][1])
        quotes.append(quotes_pairs_dict[i][0])
        quotes.append(quotes_pairs_dict[i][1])
    ####
    if('key_color' in kwargs):
        key_color = kwargs['key_color']
    else:
        key_color=KEY_COLOR
    if('value_color' in kwargs):
        value_color = kwargs['value_color']
    else:
        value_color=VALUE_COLOR
    if('list_ele_color' in kwargs):
        list_ele_color = kwargs['list_ele_color']
    else:
        list_ele_color=LIST_ELE_COLOR
    if('op_color' in kwargs):
        op_color = kwargs['op_color']
    else:
        op_color=OP_COLOR
    if('default_color' in kwargs):
        default_color = kwargs['default_color']
    else:
        default_color=DEFAULT_COLOR
    #------------------------------------------------------------
    line_len = line.__len__()
    si = 0
    ei = 0
    color_sec = {}
    color_sec_seq = 1
    colon_meeted = 0
    byte_meeted = 0
    #-------------------------------------------------------------
    ops = []
    for i in range(1,block_op_pairs_dict.__len__()+1):
        ops.append(block_op_pairs_dict[i][0])
        ops.append(block_op_pairs_dict[i][1])
    ######
    machine = fsm.FSM()
    #
    #machine.enable_debug = True
    #
    regex_lquotes = fsm.creat_regex_from_arr(lquotes)
    regex_rquotes = fsm.creat_regex_from_arr(rquotes)
    regex_b = re.compile('b')
    regex_spaces = fsm.creat_regex_from_arr(spaces)
    regex_colons = fsm.creat_regex_from_arr(colons)
    regex_commas = fsm.creat_regex_from_arr(commas)
    regex_slash = re.compile("\\\\")
    regex_ops = fsm.creat_regex_from_arr(ops)
    LqRqBSpColComSlOp_arr = ['b','\\\\']
    LqRqBSpColComSlOp_arr = LqRqBSpColComSlOp_arr + lquotes + rquotes + spaces + colons+commas + ops
    regex_not_LqRqBSpColComSlOp = fsm.creat_regex_not_from_arr(LqRqBSpColComSlOp_arr)
    #-------------------------------------------------------------------
    head = utils.path_string_get_head(path)
    head_last = utils.str_rstrip(head,sp,1)
    head_last = utils.str_rstrip(head_last," ",1)
    if(head_last == ''):
        pass
    else:
        head_last = head_last[-1]
    #------------------------------------------------------
    def do_throw(curr_state,trigger_checker,input_symbol,line,path,index):
        msg = "curr_state: " + curr_state + "\n"
        msg = msg + "trigger_checker: "+trigger_checker.__str__() + "\n"
        msg = msg + "input_symbol: "+ input_symbol.__str__() + "\n"
        msg = msg + "triggered ERROR" + "\n"
        msg = msg + line + "\n"
        msg = msg + path + "\n"
        mas = msg + "index : " + str(index)
        raise Exception(msg)
    def do_open_quote(cursor,si,ei,color_sec,color_sec_seq,colon_meeted,prev_symbol,byte_meeted):
        byte_meeted = 0
        ####
        ei = cursor 
        curr_color = default_color
        color_sec[color_sec_seq] = (si,ei,curr_color)
        color_sec_seq = color_sec_seq + 1
        si = cursor + 1
        return(si,ei,color_sec,color_sec_seq,colon_meeted,byte_meeted)
    def do_close_quote(cursor,si,ei,color_sec,color_sec_seq,colon_meeted,prev_symbol,byte_meeted):
        ei = cursor - 1
        if(colon_meeted):
            curr_color = value_color
        else:
            if(block.is_non_ordered_op(head_last,block_op_pairs_dict,block_non_ordered_op_pairs_dict)):
                curr_color = key_color
            elif(is_colon(head_last)):
                curr_color = value_color
            elif(head_last==sp):
                curr_color = value_color
            else:
                curr_color = list_ele_color
        colon_meeted = 0
        color_sec[color_sec_seq] = (si,ei,curr_color)
        color_sec_seq = color_sec_seq + 1
        si = cursor
        return(si,ei,color_sec,color_sec_seq,colon_meeted,byte_meeted)
    def do_open_var(cursor,si,ei,color_sec,color_sec_seq,colon_meeted,prev_symbol,byte_meeted):
        ei = cursor - 1
        curr_color = default_color
        color_sec[color_sec_seq] = (si,ei,curr_color)
        color_sec_seq = color_sec_seq + 1
        si = cursor
        return(si,ei,color_sec,color_sec_seq,colon_meeted,byte_meeted)
    def do_open_var_bytes(cursor,si,ei,color_sec,color_sec_seq,colon_meeted,prev_symbol,byte_meeted):
        byte_meeted = 1
        ei = cursor - 1
        curr_color = default_color
        color_sec[color_sec_seq] = (si,ei,curr_color)
        color_sec_seq = color_sec_seq + 1
        si = cursor
        return(si,ei,color_sec,color_sec_seq,colon_meeted,byte_meeted)
    def do_clear_byte_meeted(cursor,si,ei,color_sec,color_sec_seq,colon_meeted,prev_symbol,byte_meeted):
        byte_meeted = 0
        return(si,ei,color_sec,color_sec_seq,colon_meeted,byte_meeted)
    def do_close_var(cursor,si,ei,color_sec,color_sec_seq,colon_meeted,prev_symbol,byte_meeted):
        ei = cursor - 1
        if(colon_meeted):
            curr_color = value_color
        else:
            if(block.is_non_ordered_op(head_last,block_op_pairs_dict,block_non_ordered_op_pairs_dict)):
                curr_color = key_color
            elif(is_colon(head_last)):
                curr_color = value_color
            elif(head_last==sp):
                curr_color = value_color
            else:
                curr_color = list_ele_color
        colon_meeted = 0
        color_sec[color_sec_seq] = (si,ei,curr_color)
        color_sec_seq = color_sec_seq + 1
        si = cursor
        return(si,ei,color_sec,color_sec_seq,colon_meeted,byte_meeted)
    def do_colons(cursor,si,ei,color_sec,color_sec_seq,colon_meeted,prev_symbol,byte_meeted):
        colon_meeted = 1
        return(si,ei,color_sec,color_sec_seq,colon_meeted,byte_meeted)
    def do_op(cursor,si,ei,color_sec,color_sec_seq,colon_meeted,prev_symbol,byte_meeted):
        ei = cursor - 1
        curr_color = default_color
        if(ei >= si):
            color_sec[color_sec_seq] = (si,ei,curr_color)
            color_sec_seq = color_sec_seq + 1
        else:
            pass
        si = cursor 
        ei = cursor
        if(block.is_non_ordered_op(head_last,block_op_pairs_dict,block_non_ordered_op_pairs_dict)):
            curr_color = value_color
        elif(is_colon(head_last)):
            curr_color = value_color
        elif(head_last==sp):
            curr_color = value_color
        else:
            curr_color = list_ele_color
        color_sec[color_sec_seq] = (si,ei,curr_color)
        color_sec_seq = color_sec_seq + 1
        si = cursor + 1
        return(si,ei,color_sec,color_sec_seq,colon_meeted,byte_meeted)
    def do_close_var_colon(cursor,si,ei,color_sec,color_sec_seq,colon_meeted,prev_symbol,byte_meeted):
        colon_meeted = 1
        return(do_close_var(cursor,si,ei,color_sec,color_sec_seq,colon_meeted,prev_symbol,byte_meeted))
    #---------------------------------------------------------------------------------------
    ####
    machine.add("INIT",regex_b,do_open_var_bytes,"BYTES")
    machine.add("INIT",regex_spaces,None,"INIT")
    machine.add("INIT",regex_colons,do_colons,"INIT")
    machine.add("INIT",regex_commas,None,"INIT")
    machine.add("INIT",regex_slash,do_open_var,"SLASHINIT")
    machine.add("INIT",regex_ops,do_op,"INIT")
    machine.add("INIT",regex_not_LqRqBSpColComSlOp,do_open_var,"OTHER")
    ####
    machine.add("BYTES",regex_b,do_clear_byte_meeted,"OTHER")
    machine.add("BYTES",regex_spaces,do_close_var,"BYTES")
    machine.add("BYTES",regex_ops,do_throw,"ERROR")
    machine.add("BYTES",regex_colons,do_close_var_colon,"INIT")
    machine.add("BYTES",regex_commas,do_close_var,"INIT")
    machine.add("BYTES",regex_slash,do_clear_byte_meeted,"SLASHBYTES")
    machine.add("BYTES",regex_not_LqRqBSpColComSlOp,do_clear_byte_meeted,"OTHER")
    ####
    ####
    machine.add("SLASHINIT",re.compile("."),None,"OTHER")
    ####
    machine.add("SLASHBYTES",re.compile("."),None,"OTHER")
    ####
    machine.add("OTHER",regex_b,None,"OTHER")
    machine.add("OTHER",regex_spaces,do_close_var,"OTHER")
    machine.add("OTHER",regex_ops,do_throw,"ERROR")
    machine.add("OTHER",regex_colons,do_close_var_colon,"INIT")
    machine.add("OTHER",regex_commas,do_close_var,"INIT")
    machine.add("OTHER",regex_slash,None,"SLASHOTHER")
    machine.add("OTHER",regex_not_LqRqBSpColComSlOp,None,"OTHER")
    ####
    machine.add("SLASHOTHER",re.compile("."),None,"OTHER")
    ####
    regex_lquote_array = fsm.creat_regexes_array(lquotes)
    regex_rquote_array = fsm.creat_regexes_array(rquotes)
    ###
    for i in range(0,lquotes.__len__()):
        ####INIT -lq_n-> LQ_n
        sn = ''.join(("LQ",'_',str(i)))
        machine.add("INIT",regex_lquote_array[i],do_open_quote,sn)
    for i in range(0,rquotes.__len__()):
        ####INIT -rq_n-> ERROR
        if(regex_rquote_array[i] == regex_lquote_array[i]):
            pass
        else:
            sn = ''.join(("LQ",'_',str(i)))
            machine.add("INIT",regex_rquote_array[i],do_throw,'ERROR')
    ####
    for i in range(0,lquotes.__len__()):
        ####BYTES -lq_n-> LQ_n
        sn = ''.join(("LQ",'_',str(i)))
        machine.add("BYTES",regex_lquote_array[i],do_open_quote,sn)
    for i in range(0,rquotes.__len__()):
        ####BYTES -rq_n-> ERROR
        if(rquotes[i] == lquotes[i]):
            pass
        else:
            sn = ''.join(("LQ",'_',str(i)))
            machine.add("BYTES",regex_rquote_array[i],do_throw,'ERROR')
    ####
    for i in range(0,lquotes.__len__()):
        ####OTHER -lq_n-> ERROR
        sn = ''.join(("LQ",'_',str(i)))
        machine.add("OTHER",regex_lquote_array[i],do_throw,'ERROR')
    for i in range(0,rquotes.__len__()):
        ####OTHER -rq_n-> ERROR
        if(rquotes[i] == lquotes[i]):
            pass
        else:
            sn = ''.join(("LQ",'_',str(i)))
            machine.add("OTHER",regex_rquote_array[i],do_throw,'ERROR')
    ####
    for i in range(0,lquotes.__len__()):
        ####LQ_n -lq_n-> ERROR
        sn = ''.join(("LQ",'_',str(i)))
        if(lquotes[i] == rquotes[i]):
            pass
        else:
            machine.add(sn,regex_lquote_array[i],do_throw,'ERROR')
        ####LQ_n -rq_n-> INIT
        machine.add(sn,regex_rquote_array[i],do_close_quote,'INIT')
        #####LQ_n -b-> LQ_n
        machine.add(sn,regex_b,None,sn)
        #####LQ_n -spaces-> LQ_n
        machine.add(sn,regex_spaces,None,sn)
        #####LQ_n -ops-> LQ_n
        machine.add(sn,regex_ops,do_throw,'ERROR')
        ####LQ_n -colons-> LQ_n
        machine.add(sn,regex_colons,do_throw,'ERROR')
        ####LQ_n -commas-> LQ_n
        machine.add(sn,regex_commas,do_throw,'ERROR')
        #####LQ_n -slash -> SLASHLQ_n
        slashlq = ''.join(("SLASHLQ",'_',str(i)))
        machine.add(sn,re.compile("\\\\"),None,slashlq)
        ####SLASHLQ_n -any-> LQ_n
        machine.add(slashlq,re.compile("."),None,sn)
        #####LQ_n -others-> LQ_n
        tmp_arr = ['b','\\\\'] + ops + colons + commas + spaces 
        tmp_arr_rq = [rquotes[i]]
        tmp_arr_lq = [lquotes[i]]
        if(lquotes[i] == rquotes[i]):
            tmp_arr_rq = []
        else:
            pass
        tmp_final_arr = tmp_arr + tmp_arr_rq + tmp_arr_lq
        ####
        tmp_regex = fsm.creat_regex_not_from_arr(tmp_final_arr)
        machine.add(sn,tmp_regex,None,sn)
        #####
    #----------------------------------------------------------------
    curr_state = "INIT"
    prev_symbol = ''
    for i in range(0,line.__len__()):
        cursor = i
        input_symbol = line[i]
        action,next_state,trigger_checker = machine.search(curr_state,input_symbol)
        #print('----------')
        #print(curr_state,trigger_checker,input_symbol,action,next_state)
        #print(line)
        #print(path)
        #print(i)
        if(action == do_throw):
            action(curr_state,trigger_checker,input_symbol,line,path,i)   
        elif(action == None):
            pass
        else:
            si,ei,color_sec,color_sec_seq,colon_meeted,byte_meeted = action(cursor,si,ei,color_sec,color_sec_seq,colon_meeted,prev_symbol,byte_meeted)
        curr_state = next_state
        prev_symbol = input_symbol
    #-----Final handle------------------------------------------------------------
    #######
    if(curr_state == "INIT"):
        cursor = cursor + 1
        if(block.is_op(input_symbol)):
            pass
        else:
            si,ei,color_sec,color_sec_seq,colon_meeted,byte_meeted = do_open_var(cursor,si,ei,color_sec,color_sec_seq,colon_meeted,prev_symbol,byte_meeted)
        curr_state = "INIT"
    #######
    state_is_bytes = (curr_state == "BYTES")
    state_is_other = (curr_state == "OTHER")
    state_is_slashinit = (curr_state == "SLASHINIT")
    state_is_slashbytes = (curr_state == "SLASHBYTES")
    state_is_slashother = (curr_state == "SLASHOTHER")
    cond = (state_is_bytes|state_is_other|state_is_slashinit|state_is_slashbytes|state_is_slashother)
    #######
    if(cond):
        cursor = cursor + 1
        si,ei,color_sec,color_sec_seq,colon_meeted,byte_meeted = do_close_var(cursor,si,ei,color_sec,color_sec_seq,colon_meeted,prev_symbol,byte_meeted)
        curr_state = "INIT"
    ######
    cond = ("SLASHLQ" in curr_state)
    if(cond):
        cursor = cursor + 1
        si,ei,color_sec,color_sec_seq,colon_meeted,byte_meeted = do_open_quote(cursor,si,ei,color_sec,color_sec_seq,colon_meeted,prev_symbol,byte_meeted)
        curr_state = "INIT"
    return(color_sec)
Пример #23
0
def pobj(obj,*args,**kwargs):
    '''
        pobj(eles,quotes_pairs="''\"\"<>")
        pobj(eles,block_op_pairs="{}[]()")
    '''
    try:
        start = args[0]
    except:
        start = 0
    else:
        pass
    try:
        end = args[1]
    except:
        end = 2 ** 32
    else:
        pass
    sp = eftl.dflt_kwargs("sp",'/',**kwargs)
    spaces = eftl.dflt_kwargs("spaces",[' ','\t'],**kwargs)
    colons = eftl.dflt_kwargs("colons",[':'],**kwargs)
    commas = eftl.dflt_kwargs("commas",[','],**kwargs)
    line_sps = eftl.dflt_kwargs("line_sps",['\r','\n'],**kwargs)
    block_op_pairs_dict = eftl.dflt_kwargs('block_op_pairs_dict',block.get_block_op_pairs('{}[]()'),**kwargs)
    quotes_pairs_dict = eftl.dflt_kwargs('quotes_pairs_dict',quote.get_quotes_pairs('""\'\''))
    path_sps =  eftl.dflt_kwargs('path_sps',['/'],**kwargs)
    fixed_indent = eftl.dflt_kwargs('fixed_indent',0,**kwargs)
    indent = eftl.dflt_kwargs('indent',4,**kwargs)
    quotes_pairs_dict = get_dflt_quotes_pairs_dict(**kwargs)
    block_op_pairs_dict = get_dflt_block_op_pairs_dict(**kwargs)
    if('with_color' in kwargs):
        with_color = kwargs['with_color']
    else:
        with_color = 1
    if(with_color):
        if('key_color' in kwargs):
            key_color = kwargs['key_color']
        else:
            key_color=KEY_COLOR
        if('value_color' in kwargs):
            value_color = kwargs['value_color']
        else:
            value_color=VALUE_COLOR
        if('list_ele_color' in kwargs):
            list_ele_color = kwargs['list_ele_color']
        else:
            list_ele_color=LIST_ELE_COLOR
        if('op_color' in kwargs):
            op_color = kwargs['op_color']
        else:
            op_color=OP_COLOR
        if('default_color' in kwargs):
            default_color = kwargs['default_color']
        else:
            default_color=DEFAULT_COLOR
    if('start' in kwargs):
        start = kwargs['start']
    else:
        pass
    ##########
    ############1
    if('end' in kwargs):
        end = kwargs['end']
    else:
        pass
    if(utils.is_str(obj)):
        s = obj
    else:
        s = obj.__str__()
    if(with_color):
        print_j_str(s,spaces=spaces,colons=colons,commas=commas,line_sps = line_sps,path_sps = path_sps,sp=sp,with_color=with_color,block_op_pairs=block_op_pairs_dict,quotes_pairs=quotes_pairs_dict,key_color=key_color,value_color=value_color,list_ele_color=list_ele_color,op_color=op_color,default_color=default_color,display=1,start=start,end=end,fixed_indent=fixed_indent,indent=indent)
    else:
        print_j_str(s,spaces=spaces,colons=colons,commas=commas,line_sps = line_sps,path_sps = path_sps,sp=sp,with_color=with_color,block_op_pairs=block_op_pairs_dict,quotes_pairs=quotes_pairs_dict,start=start,end=end,fixed_indent=fixed_indent,indent=indent,display=1)
Пример #24
0
def pdir(obj,*args,**kwargs):
    '''
        >>> import os
        >>> from xdict.jprint import  pdir
        >>> pdir(os,range=(1,10))
        [
         'CLD_DUMPED', 
         'CLD_EXITED', 
         'CLD_TRAPPED', 
         'EX_CANTCREAT', 
         'EX_CONFIG', 
         'EX_DATAERR', 
         'EX_IOERR', 
         'EX_NOHOST', 
         'EX_NOINPUT'
        ]
        >>> 
    '''
    obj = dir(obj)
    try:
        start = args[0]
    except:
        start = 0
    else:
        pass
    try:
        end = args[1]
    except:
        end = 2 ** 32
    else:
        pass
    if('egrep' in kwargs):
        nobj = []
        for each in obj:
            if(kwargs['egrep'] in each):
                nobj.append(each)
            else:
                pass
        obj = nobj
    else:
        pass
    if('range' in kwargs):
        start = kwargs['range'][0]
        end = kwargs['range'][1]
    else:
        pass
    sp = eftl.dflt_kwargs("sp",'/',**kwargs)
    spaces = eftl.dflt_kwargs("spaces",[' ','\t'],**kwargs)
    colons = eftl.dflt_kwargs("colons",[':'],**kwargs)
    commas = eftl.dflt_kwargs("commas",[','],**kwargs)
    line_sps = eftl.dflt_kwargs("line_sps",['\r','\n'],**kwargs)
    block_op_pairs_dict = eftl.dflt_kwargs('block_op_pairs_dict',block.get_block_op_pairs('{}[]()'),**kwargs)
    quotes_pairs_dict = eftl.dflt_kwargs('quotes_pairs_dict',quote.get_quotes_pairs('""\'\''))
    path_sps =  eftl.dflt_kwargs('path_sps',['/'],**kwargs)
    fixed_indent = eftl.dflt_kwargs('fixed_indent',0,**kwargs)
    indent = eftl.dflt_kwargs('indent',4,**kwargs)
    quotes_pairs_dict = get_dflt_quotes_pairs_dict(**kwargs)
    block_op_pairs_dict = get_dflt_block_op_pairs_dict(**kwargs)
    if('with_color' in kwargs):
        with_color = kwargs['with_color']
    else:
        with_color = 1
    if(with_color):
        if('key_color' in kwargs):
            key_color = kwargs['key_color']
        else:
            key_color=KEY_COLOR
        if('value_color' in kwargs):
            value_color = kwargs['value_color']
        else:
            value_color=VALUE_COLOR
        if('list_ele_color' in kwargs):
            list_ele_color = kwargs['list_ele_color']
        else:
            list_ele_color=LIST_ELE_COLOR
        if('op_color' in kwargs):
            op_color = kwargs['op_color']
        else:
            op_color=OP_COLOR
        if('default_color' in kwargs):
            default_color = kwargs['default_color']
        else:
            default_color=DEFAULT_COLOR
    else:
        pass
    if('start' in kwargs):
        start = kwargs['start']
    else:
        pass
    if('end' in kwargs):
        end = kwargs['end']
    else:
        pass
    ###
    obj = obj[start:end]
    ###
    if(with_color):
        pobj(obj,spaces=spaces,colons=colons,commas=commas,line_sps = line_sps,path_sps = path_sps,sp=sp,with_color=with_color,block_op_pairs=block_op_pairs_dict,quotes_pairs=quotes_pairs_dict,key_color=key_color,value_color=value_color,list_ele_color=list_ele_color,op_color=op_color,default_color=default_color,display=1,fixed_indent=fixed_indent,indent=indent)
    else:
        pobj(obj,spaces=spaces,colons=colons,commas=commas,line_sps = line_sps,path_sps = path_sps,sp=sp,with_color=with_color,block_op_pairs=block_op_pairs_dict,quotes_pairs=quotes_pairs_dict,fixed_indent=fixed_indent,indent=indent,display=1)
Пример #25
0
def ts2str(ts,**kwargs):
    zzo = eftl.dflt_kwargs('tz','GMT+0',**kwargs)
    fmt_or_name = eftl.dflt_kwargs('fmt','YmdHMSZz',**kwargs)
    dt = ts2dt(ts,zzo)
    s = dt2str(dt,fmt_or_name)
    return(s)
Пример #26
0
def js_key_dcd(s,**kwargs):
    kl = efun.dflt_kwargs('kl',MIME_ORIG_CL)
    vl = efun.dflt_kwargs('vl',MIME_REPL_CL)
    for i in range(len(kl)-1,-1,-1):
        s = s.replace(vl[i],kl[i])
    return(s)
def prepare_quotes_token_machine(j_str, **kwargs):
    '''
        >>> from xdict.jprint import convert_token_in_quote
        >>> from xdict.jprint import help
        >>> 
        >>> convert_token_in_quote('"a b":"cd"')
        '"a&#32;b":"cd"'
        >>> import html
        >>> html.unescape('"a&#32;b":"cd"')
        '"a b":"cd"'
        >>> convert_token_in_quote('"a b":cd')
        '"a&#32;b":cd'
        >>> 
        >>> #help(convert_token_in_quote)
        convert_token_in_quote('<a b>:"cd"',quotes_pairs_dict={1: ('"', '"'), 2: ("<", ">")})
        '<a&#32;b>:"cd"'
    '''
    ####
    spaces = eftl.dflt_kwargs("spaces", [' ', '\t'], **kwargs)
    colons = eftl.dflt_kwargs("colons", [':'], **kwargs)
    commas = eftl.dflt_kwargs("commas", [','], **kwargs)
    line_sps = eftl.dflt_kwargs("line_sps", ['\r', '\n'], **kwargs)
    block_op_pairs_dict = eftl.dflt_kwargs("block_op_pairs_dict",
                                           get_block_op_pairs('{}[]()'),
                                           **kwargs)
    quotes_pairs_dict = eftl.dflt_kwargs("quotes_pairs_dict",
                                         get_quotes_pairs('""\'\''), **kwargs)
    lquotes, rquotes, quotes = get_lrquotes(quotes_pairs_dict)
    path_sps = eftl.dflt_kwargs("path_sps", ['/'])
    ####
    temp = get_jdict_token_set(**kwargs)
    token_set = temp['token_set']
    replace_ref_dict = temp['replace_ref_dict']

    ####
    # ----------------------------------------------------------------- #
    ####
    def do_replace(ch):
        if (ch in token_set):
            ch = replace_ref_dict[ch]
        return (ch)

    def do_throw(curr_state, trigger_checker, input_symbol):
        msg = "curr_state: " + curr_state + "\n"
        msg = msg + "trigger_checker: " + trigger_checker.__str__() + "\n"
        msg = msg + "input_symbol: " + input_symbol.__str__() + "\n"
        msg = msg + "triggered ERROR" + "\n"
        raise Exception(msg)

    ####
    machine = fsm.FSM()
    regex_lquotes = fsm.creat_regex_from_arr(lquotes)
    regex_rquotes = fsm.creat_regex_from_arr(rquotes)
    regex_b = re.compile('b')
    regex_spaces = fsm.creat_regex_from_arr(spaces)
    regex_colons = fsm.creat_regex_from_arr(colons)
    regex_commas = fsm.creat_regex_from_arr(commas)
    regex_slash = re.compile("\\\\")
    ######
    ops = []
    for i in range(1, block_op_pairs_dict.__len__() + 1):
        ops.append(block_op_pairs_dict[i][0])
        ops.append(block_op_pairs_dict[i][1])
    ######
    regex_ops = fsm.creat_regex_from_arr(ops)
    LqRqBSpColComSlOp_arr = ['b', '\\\\']
    LqRqBSpColComSlOp_arr = LqRqBSpColComSlOp_arr + lquotes + rquotes + spaces + colons + commas + ops
    regex_not_LqRqBSpColComSlOp = fsm.creat_regex_not_from_arr(
        LqRqBSpColComSlOp_arr)
    # ############################
    # ############################
    machine.add("INIT", regex_b, None, "BYTES")
    machine.add("INIT", regex_spaces, None, "INIT")
    machine.add("INIT", regex_ops, None, "INIT")
    machine.add("INIT", regex_colons, None, "INIT")
    machine.add("INIT", regex_commas, None, "INIT")
    machine.add("INIT", regex_slash, None, "SLASHINIT")
    machine.add("INIT", regex_not_LqRqBSpColComSlOp, do_replace, "OTHER")
    ####
    machine.add("BYTES", regex_b, None, "OTHER")
    machine.add("BYTES", regex_spaces, None, "BYTES")
    machine.add("BYTES", regex_ops, None, "INIT")
    machine.add("BYTES", regex_colons, None, "INIT")
    machine.add("BYTES", regex_commas, None, "INIT")
    machine.add("BYTES", regex_slash, None, "SLASHBYTES")
    machine.add("BYTES", regex_not_LqRqBSpColComSlOp, do_replace, "OTHER")
    ####
    machine.add("SLASHINIT", re.compile("."), do_replace, "OTHER")
    ####
    machine.add("SLASHBYTES", re.compile("."), do_replace, "OTHER")
    ####
    machine.add("OTHER", regex_b, None, "OTHER")
    machine.add("OTHER", regex_spaces, None, "OTHER")
    machine.add("OTHER", regex_ops, None, "INIT")
    machine.add("OTHER", regex_colons, None, "INIT")
    machine.add("OTHER", regex_commas, None, "INIT")
    machine.add("OTHER", regex_slash, None, "SLASHOTHER")
    machine.add("OTHER", regex_not_LqRqBSpColComSlOp, do_replace, "OTHER")
    ####
    machine.add("SLASHOTHER", re.compile("."), do_replace, "OTHER")
    ####
    regex_lquote_array = fsm.creat_regexes_array(lquotes)
    regex_rquote_array = fsm.creat_regexes_array(rquotes)
    ###@@@@@@@@@@@@@@@
    for i in range(0, lquotes.__len__()):
        ####INIT -lq_n-> LQ_n
        sn = ''.join(("LQ", '_', str(i)))
        machine.add("INIT", regex_lquote_array[i], None, sn)
    for i in range(0, rquotes.__len__()):
        ####INIT -rq_n-> ERROR
        if (regex_rquote_array[i] == regex_lquote_array[i]):
            pass
        else:
            sn = ''.join(("LQ", '_', str(i)))
            machine.add("INIT", regex_rquote_array[i], do_throw, 'ERROR')
    ####
    for i in range(0, lquotes.__len__()):
        ####BYTES -lq_n-> LQ_n
        sn = ''.join(("LQ", '_', str(i)))
        machine.add("BYTES", regex_lquote_array[i], None, sn)
    for i in range(0, rquotes.__len__()):
        ####BYTES -rq_n-> ERROR
        if (rquotes[i] == lquotes[i]):
            pass
        else:
            sn = ''.join(("LQ", '_', str(i)))
            machine.add("BYTES", regex_rquote_array[i], do_throw, 'ERROR')
    ####
    for i in range(0, lquotes.__len__()):
        ####OTHER -lq_n-> LQ_n
        sn = ''.join(("LQ", '_', str(i)))
        machine.add("OTHER", regex_lquote_array[i], None, sn)
    for i in range(0, rquotes.__len__()):
        ####OTHER -rq_n-> ERROR
        if (rquotes[i] == lquotes[i]):
            pass
        else:
            sn = ''.join(("LQ", '_', str(i)))
            machine.add("OTHER", regex_rquote_array[i], do_throw, 'ERROR')
    ####
    for i in range(0, lquotes.__len__()):
        ####LQ_n -lq_n-> ERROR
        sn = ''.join(("LQ", '_', str(i)))
        if (lquotes[i] == rquotes[i]):
            pass
        else:
            machine.add(sn, regex_lquote_array[i], do_throw, 'ERROR')
        ####LQ_n -rq_n-> READY
        machine.add(sn, regex_rquote_array[i], None, 'INIT')
        #####LQ_n -b-> LQ_n
        machine.add(sn, regex_b, None, sn)
        #####LQ_n -spaces-> LQ_n
        machine.add(sn, regex_spaces, do_replace, sn)
        #####LQ_n -ops-> LQ_n
        machine.add(sn, regex_ops, do_replace, sn)
        ####LQ_n -colons-> LQ_n
        machine.add(sn, regex_colons, do_replace, sn)
        ####LQ_n -commas-> LQ_n
        machine.add(sn, regex_commas, do_replace, sn)
        #####LQ_n -slash -> SLASHLQ_n
        slashlq = ''.join(("SLASHLQ", '_', str(i)))
        machine.add(sn, re.compile("\\\\"), None, slashlq)
        ####SLASHLQ_n -any-> LQ_n
        machine.add(slashlq, re.compile("."), do_replace, sn)
        #####LQ_n -others-> LQ_n
        tmp_arr = ['b', '\\\\'] + ops + colons + commas + spaces
        tmp_arr_rq = [rquotes[i]]
        tmp_arr_lq = [lquotes[i]]
        if (lquotes[i] == rquotes[i]):
            tmp_arr_rq = []
        else:
            pass
        tmp_final_arr = tmp_arr + tmp_arr_rq + tmp_arr_lq
        ####
        tmp_regex = fsm.creat_regex_not_from_arr(tmp_final_arr)
        machine.add(sn, tmp_regex, do_replace, sn)
    ####
    machine.orig_str = j_str
    machine.do_replace = do_replace
    machine.do_throw = do_throw
    ####
    return (machine)
Пример #28
0
def init_wfsmat(*args,**kwargs):
    r = eftl.optional_arg(init_root(),*args)
    orig_data = eftl.dflt_kwargs('orig_data',undefined,**kwargs)
    m = Wfsmat([[r]])
    m._orig_data = orig_data
    return(m)
Пример #29
0
def _get_rtrn(x, y, m, **kwargs):
    rtrn = eftl.dflt_kwargs("rtrn", "ele", **kwargs)
    if (rtrn == "ele"):
        return (m[x][y])
    else:
        return ([x, y])