Update of /cvsroot/freevo/freevo/src In directory sc8-pr-cvs1:/tmp/cvs-serv28308
Modified Files: util.py Log Message: add a helper class to read/write fxd files Index: util.py =================================================================== RCS file: /cvsroot/freevo/freevo/src/util.py,v retrieving revision 1.54 retrieving revision 1.55 diff -C2 -d -r1.54 -r1.55 *** util.py 23 Sep 2003 20:05:29 -0000 1.54 --- util.py 2 Oct 2003 18:45:57 -0000 1.55 *************** *** 11,14 **** --- 11,17 ---- # ----------------------------------------------------------------------- # $Log$ + # Revision 1.55 2003/10/02 18:45:57 dischi + # add a helper class to read/write fxd files + # # Revision 1.54 2003/09/23 20:05:29 dischi # imdb patch from Eirik Meland *************** *** 103,106 **** --- 106,111 ---- import cPickle, pickle # pickle because sometimes cPickle doesn't work import htmlentitydefs + from xml.utils import qp_xml + import codecs if float(sys.version[0:3]) < 2.3: *************** *** 707,710 **** --- 712,795 ---- + + + + class XMLnode: + """ + One node for the FXDtree + """ + def __init__(self, name, attr = [], first_cdata=None, following_cdata=None): + self.name = name + self.attr_list = [] + for name, val in attr: + self.attr_list.append(((None, name), val)) + self.attrs = self + self.children = [] + self.first_cdata = first_cdata + self.following_cdata = following_cdata + + def items(self): + return self.attr_list + + + class FXDtree(qp_xml.Parser): + """ + class to parse and write fxd files + """ + def __init__(self, filename): + qp_xml.Parser.__init__(self) + self.filename = filename + if not os.path.isfile(filename): + self.tree = XMLnode('freevo') + else: + f = open(filename) + self.tree = self.parse(f) + f.close() + + def add(self, node, parent=None, pos=None): + if not parent: + parent = self.tree + if pos == None: + parent.children.append(node) + else: + parent.children.insert(pos, node) + + def save(self, filename=None): + if not filename: + filename = self.filename + if os.path.isfile(filename): + os.unlink(filename) + f = codecs.open(filename , 'w', encoding='utf-8') + f.write('<?xml version="1.0" ?>\n') + self._dump_recurse(f, self.tree) + f.write('\n') + f.close() + + def _dump_recurse(self, f, elem, depth=0): + f.write('<' + elem.name) + for (ns, name), value in elem.attrs.items(): + f.write(' %s="%s"' % (name, value)) + if elem.children or elem.first_cdata: + if elem.first_cdata == None: + f.write('>\n ') + for i in range(depth): + f.write(' ') + else: + f.write('>' + elem.first_cdata) + + for child in elem.children: + self._dump_recurse(f, child, depth=depth+1) + if child.following_cdata == None: + if child == elem.children[-1]: + f.write('\n') + else: + f.write('\n ') + for i in range(depth): + f.write(' ') + else: + f.write(child.following_cdata) + f.write('</%s>' % elem.name) + else: + f.write('/>') ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ Freevo-cvslog mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/freevo-cvslog