blockstack_zones/parse_zone_file.py
def flatten(text):
    """
    Flatten the text:
    * make sure each record is on one line.
    * remove parenthesis 
    """
    lines = text.split("\n")

    # tokens: sequence of non-whitespace separated by '' where a newline was
    tokens = []
    for l in lines:
        if len(l) == 0:
            continue 

        l = l.replace("\t", " ")
        tokens += filter(lambda x: len(x) > 0, l.split(" ")) + ['']

    # find (...) and turn it into a single line ("capture" it)
    capturing = False
    captured = []

    flattened = []
    while len(tokens) > 0:
        tok = tokens.pop(0)
        if not capturing and len(tok) == 0:
            # normal end-of-line
            if len(captured) > 0:
                flattened.append(" ".join(captured))
                captured = []
            continue 

        if tok.startswith("("):
            # begin grouping
            tok = tok.lstrip("(")
            capturing = True

        if capturing and tok.endswith(")"):
            # end grouping.  next end-of-line will turn this sequence into a flat line
            tok = tok.rstrip(")")
            capturing = False 

        captured.append(tok)

    return "\n".join(flattened)
def flatten(text):
    """
    Flatten the text:
    * make sure each record is on one line.
    * remove parenthesis 
    """
    lines = text.split("\n")

    # tokens: sequence of non-whitespace separated by '' where a newline was
    tokens = []
    for l in lines:
        if len(l) == 0:
            continue 

        l = l.replace("\t", " ")
        tokens += filter(lambda x: len(x) > 0, l.split(" ")) + ['']

    # find (...) and turn it into a single line ("capture" it)
    capturing = False
    captured = []

    flattened = []
    while len(tokens) > 0:
        tok = tokens.pop(0)
        if not capturing and len(tok) == 0:
            # normal end-of-line
            if len(captured) > 0:
                flattened.append(" ".join(captured))
                captured = []
            continue 

        if tok.startswith("("):
            # begin grouping
            tok = tok.lstrip("(")
            capturing = True

        if capturing and tok.endswith(")"):
            # end grouping.  next end-of-line will turn this sequence into a flat line
            tok = tok.rstrip(")")
            capturing = False 

        captured.append(tok)

    return "\n".join(flattened)
def flatten ( text ) : lines = text . split ( "\n" ) # tokens: sequence of non-whitespace separated by '' where a newline was tokens = [ ] for l in lines : if len ( l ) == 0 : continue l = l . replace ( "\t" , " " ) tokens += filter ( lambda x : len ( x ) > 0 , l . split ( " " ) ) + [ '' ] # find (...) and turn it into a single line ("capture" it) capturing = False captured = [ ] flattened = [ ] while len ( tokens ) > 0 : tok = tokens . pop ( 0 ) if not capturing and len ( tok ) == 0 : # normal end-of-line if len ( captured ) > 0 : flattened . append ( " " . join ( captured ) ) captured = [ ] continue if tok . startswith ( "(" ) : # begin grouping tok = tok . lstrip ( "(" ) capturing = True if capturing and tok . endswith ( ")" ) : # end grouping.  next end-of-line will turn this sequence into a flat line tok = tok . rstrip ( ")" ) capturing = False captured . append ( tok ) return "\n" . join ( flattened )
Flatten the text:
    * make sure each record is on one line.
    * remove parenthesis
Flatten the text : * make sure each record is on one line . * remove parenthesis