Ejemplo n.º 1
0
def _dict_post_parse(tokens, loc, string):
    acc = tokens.tokens
    for a in list(acc):
        for tok in list(a):
            if not tok:
                continue
            if is_text(tok):
                new_tok = Annotation(tok, a.start, a.end, [])
            else:
                kv = list(tok)
                key = kv[0]
                value = kv[1:]
                new_tok = Annotation(text(key), tok.start, tok.end, value)
            acc.append(new_tok)

    return tokens
Ejemplo n.º 2
0
def extractText(tokens, loc, string):
    start, d, end = tokens
    content = string[start:end]
    annotations = [
        Annotation(k, v[0].start, v[-1].end, v) for k, v in d.items()
    ]
    return ParseResults(d.type, start, end, [content] + annotations)
Ejemplo n.º 3
0
 def group_list(tokens):
     start, end = tokens.start, tokens.end
     # RE-MATCH  :(
     sub_string = tokens.tokens[0]
     found = tokens.type.regex.match(sub_string)
     lookup = dict(reversed(p) for p in found.re.groupindex.items())
     ann = []
     pe = 0
     for i, (s, e) in enumerate(found.regs[1:], start=1):
         if s == -1:
             continue  # NOT FOUND
         g = sub_string[s:e]
         if pe <= s:
             ann.append(g)
         pe = e
         ii = chr(i + ord("0"))
         ann.append(Annotation(ii, s + start, e + start, [g]))
         n = lookup.get(i)
         if n:
             ann.append(Annotation(n, s + start, e + start, [g]))
     return ParseResults(_plain_group, start, end, ann)
Ejemplo n.º 4
0
def _dict_post_parse(tokens, loc, string):
    acc = tokens.tokens
    for a in list(acc):
        for tok in list(a):
            if not tok:
                continue
            kv = list(tok)
            key = kv[0]
            value = kv[1:]
            new_tok = Annotation(text(key), value)
            acc.append(new_tok)

    return tokens