from xmldt import XmlDt as dt, Element
import sys
from textwrap import wrap , fill

remtag  = lambda s,e: e.c         ### gostava: dt.remtag
remtree = lambda s,e: ""          ### gostava: dt.remtree

def toxml(q,v,c):                 ### gostava que fosse predefinida
    if isinstance(c,(list,set)):
        return set.join("",[Element(q,v,x).xml, x in c])
    return Element(q,v,c).xml

class pcarta (dt):
    def __default__(s, e): return e.xml

    teiHeader = orig = availability = pc = lb   = remtree
    abbr = choice = reg = text = body           = remtag

    def persName(s,e): 
        return toxml("a", {"href": e.c}, e.c)

    def pb(s, e): 
        return f'[{e["n"]}]'

    def gap(s, e):
        return '(???)'

    def opener(s, e):
        return f"\n{e.c}\n------------------\n"

    def closer(s, e):
        return f"\n------------------\n{e.c}\n"

    def text(s, e): 
        return f"\n------------------\n{e.c}\n"

    def p(s, e): 
        return fill(e.c,width=70, initial_indent='   ')+"\n\n"

    def signed(s, e):
        return f"\n\nSig:{e.c}\n"

    @dt.dt_tag("TEI.2")              
    def TEI_2(s, e):  # 1 occ
        return e.contents + "END!"

#    #def  TEI.2(self, ele): pass # 1 
#    #def     teiHeader(self, ele): pass # 1 
    #def        fileDesc(self, ele): pass # 1 
    #def           titleStmt(self, ele): pass # 1 
    #def              title(self, ele): pass # 1 
    #def              author(self, ele): pass # 2 attested: 1
    #def              respStmt(self, ele): pass # 1 
    #def                 resp(self, ele): pass # 2 
    #def                 name(self, ele): pass # 2 
    #def                 date(self, ele): pass # 3 when: 1
    #def              respStmtm(self, ele): pass # 1 
    #def           publicationStmt(self, ele): pass # 1 
    #def              authority(self, ele): pass # 1 
    #def                 p(self, ele): pass # 12 
    #def              idno(self, ele): pass # 2 
    #def              availability(self, ele): pass # 1 status: 1
    #def           sourceDesc(self, ele): pass # 1 
    #def              letDesc(self, ele): pass # 1 
    #def                 letIdentifier(self, ele): pass # 1 
    #def                    country(self, ele): pass # 1 
    #def                    region(self, ele): pass # 1 
    #def                    settlement(self, ele): pass # 1 
    #def                    collection(self, ele): pass # 1 
    #def                 letHeading(self, ele): pass # 1 
    #def                    letPart(self, ele): pass # 1 n: 1
    #def                       addressee(self, ele): pass # 1 attested: 1
    #def                       placeLet(self, ele): pass # 1 attested: 1
    #def                       dateLet(self, ele): pass # 1 attested: 1
    #def                 physDesc(self, ele): pass # 1 
    #def                    type(self, ele): pass # 1 
    #def                    support(self, ele): pass # 1 
    #def                    extent(self, ele): pass # 1 
    #def                       dimensions(self, ele): pass # 1 
    #def                          height(self, ele): pass # 1 units: 1
    #def                          width(self, ele): pass # 1 units: 1
    #def                    paraphernalia(self, ele): pass # 1 
    #def                       paraphList(self, ele): pass # 1 
    #def                          paraphItem(self, ele): pass # 1 id: 1
    #def                             paraphDesc(self, ele): pass # 1 
    #def                 envOcc(self, ele): pass # 1 occ: 1
    #def                 letContents(self, ele): pass # 1 
#    #def     text(self, ele): pass # 1 
#    #def        body(self, ele): pass # 1 
#    #def           pb(self, ele): pass # 2 n: 2
#    #def           opener(self, ele): pass # 1 
    #def              salute(self, ele): pass # 1 
    #def                 persName(self, ele): pass # 2 
#    #def              pc(self, ele): pass # 1 
#    #def              lb(self, ele): pass # 15 
#    #def              gap(self, ele): pass # 3 
#    #def              choice(self, ele): pass # 2 
#    #def                 orig(self, ele): pass # 2 
#    #def                 reg(self, ele): pass # 2 
#    #def           closer(self, ele): pass # 1 
#    #def                 signed(self, ele): pass # 1 
#    #def                       abbr(self, ele): pass # 1 expand: 1

file = sys.argv[1]
print(pcarta(filename=file))
