#!/usr/bin/env python
import sys
import csv
def read_entries():
"""Read tab-separated input from stdin"""
entries = []
for l in sys.stdin:
e = l[:-1].split('\t')
if len(e) > 0:
entries.append(e)
#entries = [e for e in csv.reader(sys.stdin,delimiter='\t') if len(e) > 0]
if len(entries) < 1:
return (0,[])
else:
return (len(entries[0]),entries)
def read_tags():
"""Read the tags for the input from argv"""
args = sys.argv[1:]
return (args[0],len(args[1:]),args[1:])
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 tag_entry(zs):
return "\n".join(
[" ",
"\n".join([' <' + t + '>' + amp(e) + '' + t + '>' for (_e,_t) in zs if _t[0] != '-' for (e,t) in splitter(_e,_t)]),
" "])
def tag_entries(entries,elen,tags):
return "\n".join(
[tag_entry(zip(e,tags)) for e in entries if len(e) == elen])
def xmlize(name,entries,elen,tags):
return "\n".join([
'',
'',
'' % (name,name),
tag_entries(entries,elen,tags),
''])
if __name__ == '__main__':
(elen,entries) = read_entries()
(name,tlen,tags) = read_tags()
if(elen == tlen):
print xmlize(name, entries,elen,tags)
else:
raise Exception, "entry line - tag count mismatch"