Exemplo n.º 1
0
def parseNVSS (stream):
    linenum = 0
    datalinenum = 0
    source = None

    for line in stream:
        linenum += 1

        if line[0] == '#':
            continue

        if datalinenum % 2 == 0:
            assert source is None, 'NVSS internal logic error 1'
            source = Holder ()
            colspec = nvss_columns1
        else:
            colspec = nvss_columns2

        try:
            for key, (b0, b1) in colspec.iteritems ():
                parser = nvss_parsers.get (key, float)
                setattr (source, key, parser (line[b0:b1]))
        except Exception as e:
            raise Exception ('line %d, item %s: %s' % (linenum, key, e))

        if datalinenum % 2 == 1:
            # Fixups
            source.major_is_ul = source.major[0]
            source.major = source.major[1]
            source.minor_is_ul = source.minor[0]
            source.minor = source.minor[1]
            # Done
            yield source
            source = None

        datalinenum += 1

    assert source is None, 'NVSS internal logic error 2'