From: Dirk M. <di...@us...> - 2004-10-29 18:13:52
|
Update of /cvsroot/freevo/freevo/src/util In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11397 Modified Files: fxdparser.py Log Message: cleanup, new header Index: fxdparser.py =================================================================== RCS file: /cvsroot/freevo/freevo/src/util/fxdparser.py,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** fxdparser.py 28 Oct 2004 19:33:38 -0000 1.18 --- fxdparser.py 29 Oct 2004 18:13:34 -0000 1.19 *************** *** 1,33 **** # -*- coding: iso-8859-1 -*- ! # ----------------------------------------------------------------------- # fxdparser.py - Parser for fxd files ! # ----------------------------------------------------------------------- # $Id$ # ! # Notes: ! # Todo: ! # ! # ----------------------------------------------------------------------- ! # $Log$ ! # Revision 1.18 2004/10/28 19:33:38 dischi ! # cleanup utils: ! # o remove config dependency when possible ! # o add sysconfig support ! # o shorten to 80 chars/line ! # o add new header ! # o add more docs ! # ! # Revision 1.17 2004/10/26 19:14:52 dischi ! # adjust to new sysconfig file # ! # Revision 1.16 2004/07/10 12:33:42 dischi ! # header cleanup # ! # Revision 1.15 2004/03/06 10:15:22 dischi ! # patches from Sylvain # - # ----------------------------------------------------------------------- - # Freevo - A Home Theater PC framework - # Copyright (C) 2002 Krister Lagerstrom, et al. # Please see the file freevo/Docs/CREDITS for a complete list of authors. # --- 1,19 ---- # -*- coding: iso-8859-1 -*- ! # ----------------------------------------------------------------------------- # fxdparser.py - Parser for fxd files ! # ----------------------------------------------------------------------------- # $Id$ # ! # This file handles the basic fxd fileparsing. It is possible to register ! # specific handlers for parsing the different subnodes after <freevo>. ! # The parsed fxd is stored in the vfs for faster access later. # ! # ----------------------------------------------------------------------------- ! # Freevo - A Home Theater PC framework ! # Copyright (C) 2002-2004 Krister Lagerstrom, Dirk Meyer, et al. # ! # First Edition: Dirk Meyer <dm...@tz...> ! # Maintainer: Dirk Meyer <dm...@tz...> # # Please see the file freevo/Docs/CREDITS for a complete list of authors. # *************** *** 46,63 **** # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # ! # ----------------------------------------------------------------------- */ ! import os import stat import traceback - - # XML support - from xml.utils import qp_xml - - import util import codecs class XMLnode: --- 32,50 ---- # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # ! # ----------------------------------------------------------------------------- + # python imports import os import stat import traceback import codecs + # xml support + from xml.utils import qp_xml + # freevo utils + import vfs + import fileops + import cache class XMLnode: *************** *** 65,69 **** One node for the FXDtree """ ! def __init__(self, name, attr = [], first_cdata=None, following_cdata=None): self.name = name self.attr_list = [] --- 52,57 ---- One node for the FXDtree """ ! def __init__(self, name, attr = [], first_cdata=None, ! following_cdata=None): self.name = name self.attr_list = [] *************** *** 74,78 **** self.first_cdata = first_cdata self.following_cdata = following_cdata ! def items(self): return self.attr_list --- 62,66 ---- self.first_cdata = first_cdata self.following_cdata = following_cdata ! def items(self): return self.attr_list *************** *** 81,85 **** class FXDtree(qp_xml.Parser): """ ! class to parse and write fxd files """ def __init__(self, filename): --- 69,73 ---- class FXDtree(qp_xml.Parser): """ ! Class to parse and write fxd files """ def __init__(self, filename): *************** *** 94,101 **** else: self.tree = None ! cache = vfs.getoverlay(filename + '.raw') ! if os.path.isfile(filename) and os.path.isfile(cache) and \ ! os.stat(cache)[stat.ST_MTIME] >= os.stat(filename)[stat.ST_MTIME]: ! self.tree = util.read_pickle(cache) if not self.tree: f = vfs.open(filename) --- 82,89 ---- else: self.tree = None ! cachename = vfs.getoverlay(filename + '.raw') ! if os.path.isfile(filename) and os.path.isfile(cachename) and \ ! fileops.mtime(cachename) >= fileops.mtime(filename): ! self.tree = cache.load(cachename) if not self.tree: f = vfs.open(filename) *************** *** 103,108 **** f.close() if self.tree: ! util.save_pickle(self.tree, cache) ! def add(self, node, parent=None, pos=None): --- 91,96 ---- f.close() if self.tree: ! cache.save(cachename, self.tree) ! def add(self, node, parent=None, pos=None): *************** *** 139,143 **** f.close() if self.tree: ! util.save_pickle(self.tree, vfs.getoverlay(filename + '.raw')) --- 127,131 ---- f.close() if self.tree: ! cache.save(vfs.getoverlay(filename + '.raw'), self.tree) *************** *** 160,164 **** data = Unicode(elem.first_cdata).replace(u'&', u'&') f.write(u'>' + data) ! for child in elem.children: self._dump_recurse(f, child, depth=depth+1) --- 148,152 ---- data = Unicode(elem.first_cdata).replace(u'&', u'&') f.write(u'>' + data) ! for child in elem.children: self._dump_recurse(f, child, depth=depth+1) *************** *** 181,185 **** class to help parsing fxd files """ ! class XMLnode(XMLnode): """ --- 169,173 ---- class to help parsing fxd files """ ! class XMLnode(XMLnode): """ *************** *** 187,191 **** """ pass ! def __init__(self, filename): self.tree = FXDtree(filename) --- 175,179 ---- """ pass ! def __init__(self, filename): self.tree = FXDtree(filename) *************** *** 196,200 **** self.filename = filename ! def set_handler(self, name, callback, mode='r', force=False): """ --- 184,188 ---- self.filename = filename ! def set_handler(self, name, callback, mode='r', force=False): """ *************** *** 210,216 **** self.write_callback[name] = [ callback, force ] else: ! debug('unknown mode %s for fxd handler' % mode, 0) - def parse(self): """ --- 198,213 ---- self.write_callback[name] = [ callback, force ] else: ! print 'fxdparser: unknown mode %s for fxd handler' % mode ! ! ! def __format_text(self, text): ! while len(text) and text[0] in (u' ', u'\t', u'\n'): ! text = text[1:] ! text = re.sub(u'\n[\t *]', u' ', text) ! while len(text) and text[-1] in (u' ', u'\t', u'\n'): ! text = text[:-1] ! return text ! def parse(self): """ *************** *** 255,260 **** # and save self.tree.save() ! ! def get_children(self, node, name, deep=1): """ --- 252,257 ---- # and save self.tree.save() ! ! def get_children(self, node, name, deep=1): """ *************** *** 282,287 **** self.add(child, node) return child ! ! def childcontent(self, node, name): """ --- 279,284 ---- self.add(child, node) return child ! ! def childcontent(self, node, name): """ *************** *** 290,294 **** for child in node.children: if child.name == name: ! return util.format_text(child.textof()) return '' --- 287,291 ---- for child in node.children: if child.name == name: ! return self.__format_text(child.textof()) return '' *************** *** 296,302 **** def getattr(self, node, name, default=''): """ ! return the attribute of the node or the 'default' if the atrribute is not ! set. If 'node' is 'None', it return the user defined data in the fxd ! object. """ r = default --- 293,299 ---- def getattr(self, node, name, default=''): """ ! return the attribute of the node or the 'default' if the atrribute ! is not set. If 'node' is 'None', it return the user defined data ! in the fxd object. """ r = default *************** *** 329,334 **** def setattr(self, node, name, value): """ ! sets the attribute of the node or if node is 'None', set user defined data ! for the fxd parser. """ if node: --- 326,331 ---- def setattr(self, node, name, value): """ ! sets the attribute of the node or if node is 'None', set user ! defined data for the fxd parser. """ if node: *************** *** 343,347 **** rerurn the text of the node """ ! return util.format_text(node.textof()) --- 340,344 ---- rerurn the text of the node """ ! return self.__format_text(node.textof()) *************** *** 362,366 **** else: nodes = [] ! for node in nodes: for child in node.children: --- 359,363 ---- else: nodes = [] ! for node in nodes: for child in node.children: *************** *** 369,375 **** continue if child.name in map: ! object.info[map[child.name]] = util.format_text(txt) ! object.info[child.name] = util.format_text(txt) ! def add(self, node, parent=None, pos=None): --- 366,372 ---- continue if child.name in map: ! object.info[map[child.name]] = self.__format_text(txt) ! object.info[child.name] = self.__format_text(txt) ! def add(self, node, parent=None, pos=None): |