Changeset 5

Show
Ignore:
Timestamp:
02/08/02 00:35:25 (7 years ago)
Author:
sholloway
Message:

*** empty log message ***

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/RBPrivate/Prototypes/Shane/XMLBuilder.py

    r4 r5  
    99#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    1010 
    11 class XMLBuilder:  
    12     seperator = '.' 
     11class XMLBuilderMixin:  
     12    _seperator = '.' 
    1313    e_no_class_registered = "No Class Registered" 
    1414 
    15     def GetElementFactory(self, namespace, node): 
     15    def __init__(self): 
     16        self._elements, self._LastCompleteElement  = [], None 
     17 
     18    def _GetElementFactory(self, namespace, node, attributes): 
    1619        raise self.e_no_class_registered, '%s %s' % (namespace, node) 
    1720 
    1821    def _start_element(self, name, attributes): 
    19         idx = max(0, name.rfind(self.seperator)) 
     22        idx = max(0, name.rfind(self._seperator)) 
    2023        namespace = name[0:idx] 
    21         node = name[idx + len(self.seperator):] 
    22         build_factory = self.GetElementFactory(namespace, node
     24        node = name[idx + len(self._seperator):] 
     25        build_factory = self._GetElementFactory(namespace, node, attributes
    2326        object = build_factory(namespace, node, attributes) 
    2427        if self._elements: 
     
    2932    def _end_element(self, name): 
    3033        self._elements[-1]._xmlInitComplete() 
    31         self.result = self._elements.pop() 
     34        self._LastCompleteElement = self._elements.pop() 
    3235 
    3336    def _char_data(self, data): 
    3437        self._elements[-1]._addData(data) 
    3538 
     39#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     40 
     41class XMLBuilder(XMLBuilderMixin): 
    3642    def __call__(self, *args, **kw): 
    3743        return apply(self.Parse, args, kw) 
    3844 
    3945    def Parse(self, *args, **kw): 
    40         self._elements, self.result  = [], None 
    41         parser = ParserCreate('ASCII', self.seperator) 
     46        self._elements, self._LastCompleteElement  = [], None 
     47        parser = ParserCreate('ASCII', self._seperator) 
    4248        parser.returns_unicode = 0 
    4349        parser.StartElementHandler = self._start_element 
     
    4551        parser.CharacterDataHandler = self._char_data 
    4652        apply(parser.Parse, args, kw) 
    47         result, self.result = self.result, None 
     53        result, self._LastCompleteElement = self._LastCompleteElement, None 
    4854        return result 
    4955 
  • trunk/RBPrivate/Prototypes/Shane/XMLObjectify.py

    r4 r5  
    8585     
    8686class Objectifier(XMLBuilder.XMLBuilder):  
    87     seperator = '.' 
    8887    objectified_class = _Objectified  
    8988    Objectify = XMLBuilder.XMLBuilder.Parse