Author: dmeyer
Date: Sun Mar 18 19:04:34 2007
New Revision: 9351

Modified:
   trunk/core/src/fxdparser2.py

Log:
add dirname and root attributes

Modified: trunk/core/src/fxdparser2.py
==============================================================================
--- trunk/core/src/fxdparser2.py        (original)
+++ trunk/core/src/fxdparser2.py        Sun Mar 18 19:04:34 2007
@@ -1,3 +1,5 @@
+# python imports
+import os
 import codecs
 from xml.dom import minidom
 
@@ -18,6 +20,11 @@
             return self._node.getAttribute
         if attr == 'children':
             return self
+        if attr == 'root':
+            node = self._node
+            while node.parentNode:
+                node = node.parentNode
+            return node
         return getattr(self._node, attr)
 
     def __iter__(self):
@@ -33,19 +40,13 @@
     def _set_content(self, value):
         if not isinstance(value, (unicode, str)):
             value = str(value)
-        node = self._node
-        while node.parentNode:
-            node = node.parentNode
-        node = node.createTextNode(value)
+        node = self.root.createTextNode(value)
         self._node.appendChild(node)
         
     content = property(_get_content, _set_content, None, 'cdata content')
 
     def add_child(self, name, content=None, **kwargs):
-        node = self._node
-        while node.parentNode:
-            node = node.parentNode
-        node = node.createElement(name)
+        node = self.root.createElement(name)
         self._node.appendChild(node)
         node = Wrapper(node)
         if content is not None:
@@ -82,9 +83,6 @@
             writer.write("/>%s"%(newl))
 
     def save(self, filename):
-        node = self._node
-        while node.parentNode:
-            node = node.parentNode
         f = codecs.open(filename, 'w', 'utf8')
         f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
         self._writexml(f, '', '    ', '\n')
@@ -92,11 +90,14 @@
 
 def Document(filename=None):
     if filename:
-        tree = minidom.parse(filename).firstChild
+        doc = minidom.parse(filename)
+        doc.dirname = os.path.dirname(filename)
+        tree = doc.firstChild
         if tree.nodeName != 'freevo':
             raise RuntimeError('%s is not fxd file' % filename)
         return Wrapper(tree)
     doc = minidom.Document()
+    doc.dirname = ''
     tree = doc.createElement('freevo')
     doc.appendChild(tree)
     return Wrapper(tree)

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to