#!/usr/bin/env python
import sys
import csv
def read_entries():
"""Read tab-separated input from stdin"""
return [e for e in csv.reader(sys.stdin,delimiter='\t') if len(e) == 7]
def read_tags():
"""Read the tags for the input from argv"""
tags = sys.argv[1:]
return (len(tags),tags)
def amp(s):
return s.replace('&','&')
def splitter(e,t):
if t[0] == '+':
t = t[1:]
return [(entry,t) for entry in e.split()]
else:
return [(e,t)]
def forms(saldo,table):
lst = []
for (gf,lem,pos,p) in table[saldo]:
lst.extend(
[' ',
' ' % amp(gf),
' ' % lem,
' ' % pos,
' ' % p,
' '])
return lst
def tag_entry(e,table):
return "\n".join(
[" ",
' '] + forms(e[0],table) +
[' ',
' ' % (e[0]),
' ' % (e[1]),
' ',
' ',
' ' % (e[2]),
' ',
' ',
' ',
' '])
def tag_entries(entries,table):
return "\n".join([tag_entry(e,table) for e in entries])
def xmlize(entries,table):
return "\n".join([
'',
'',
'',
'',
' ',
'',
'',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
tag_entries(entries,table),
'',
''])
def create_table(entries):
d = {}
s = set()
for e in entries:
if e[0] in d:
d[e[0]].append((e[4],e[3],e[5],e[6]))
else:
d[e[0]] = [(e[4],e[3],e[5],e[6])]
s.add((e[0],e[1],e[2]))
return (d,s)
if __name__ == '__main__':
entries = read_entries()
(table,entries) = create_table(entries)
print xmlize(entries,table)