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

Reply via email to