Changeset 509

Show
Ignore:
Timestamp:
04/11/03 01:19:38 (6 years ago)
Author:
sholloway
Message:

Added Objects Relations
Generalized XMLBuilder to support other parsers
Correct some published properties

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/RBFoundation/RBFoundation/SubObs/Interface/PublishProperty.py

    r285 r509  
    4646        publisher = self.fnGetPublisher(obj) 
    4747        if publisher is not None: 
    48             publisher._TemplateNotifyExplicit((obj, ), {self.__name__: value}
     48            publisher._TemplateNotifyExplicit((obj, value)
    4949 
    5050#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    5555        publisher = self.fnGetPublisher(obj) 
    5656        if publisher is not None: 
    57             publisher._TemplateNotifyExplicit({self._value_name: value}) 
     57            publisher._TemplateNotifyExplicit((obj, ), {self.__name__: value}) 
    5858 
  • trunk/RBFoundation/RBFoundation/XMLBuilder.py

    r487 r509  
    3737#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    3838 
    39 from xml.parsers.expat import ParserCreate as _ParserCreate 
     39from xml.parsers.expat import ParserCreate as _ExpatParserCreate 
    4040from WeakBind import BindCallable as _BindCallable 
    4141from XMLNamespaceMap import XMLNamespaceMap 
     
    6969    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    7070 
    71     _encoding = 'ASCII' 
    7271    _seperator = '.' 
    73     _ParserFactory = _ParserCreate 
    7472    NamespaceSynonyms = {} 
    7573 
     
    171169        self._elements[-1]._addData(data) 
    172170 
    173     def SetParserFactory(self, ParserFactory): 
    174         self._ParserFactory = ParserFactory 
    175  
    176171    def _SplitQualifiedName(self, combined): 
    177172        idx = combined.rfind(self._seperator) 
     
    185180        return namespace, name 
    186181 
     182#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     183 
     184class XMLExpatBuilderMixin(object): 
     185    _encoding = 'ASCII' 
    187186    def _CreateParser(self): 
    188187        """Creates the Expat parser in a python-OO way.""" 
    189         parser = self._ParserFactory(self._encoding, self._seperator) 
     188        parser = _ExpatParserCreate(self._encoding, self._seperator) 
    190189        parser.returns_unicode = self._encoding != 'ASCII' and 1 or 0 
    191190        parser.StartElementHandler = _BindCallable(self._start_element) 
     
    198197#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    199198 
    200 class XMLBuilder(XMLBuilderMixin): 
     199class XMLBuilder(XMLBuilderMixin, XMLExpatBuilderMixin): 
    201200    """Abstract base class closer to actualizing python object building.   
    202201    See XMLObjectify, or XMLClassBuilder for more concrete builders.""" 
     
    218217    def Parse(self, *args, **kw): 
    219218        """Starts the building of python objects using the XML parser.  Assumes first argument is string-like object.""" 
    220         parser= self._PreParse() 
     219        self._elements, self._LastCompleteElement  = [], None 
     220        parser = self._CreateParser() 
    221221        parser.Parse(*args, **kw) 
    222         return self._PostParse(parser) 
     222        result, self._LastCompleteElement = self._LastCompleteElement, None 
     223        return result 
    223224 
    224225    def ParseFile(self, *args, **kw): 
    225226        """Starts the building of python objects using the XML parser.  Assumes first argument is a file-like object.""" 
    226         parser= self._PreParse() 
     227        self._elements, self._LastCompleteElement  = [], None 
     228        parser = self._CreateParser() 
    227229        parser.ParseFile(*args, **kw) 
    228         return self._PostParse(parser) 
     230        result, self._LastCompleteElement = self._LastCompleteElement, None 
     231        return result 
    229232 
    230233    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    236239        self._LastCompleteElement = XMLBuilderMixin._end_element(self, name) 
    237240 
    238     def _PreParse(self): 
    239         """Few initialization things to be done at the beginning of a parse session.""" 
    240         self._elements, self._LastCompleteElement  = [], None 
    241         return self._CreateParser() 
    242  
    243     def _PostParse(self, parser): 
    244         """Few cleanup things to be done at the end of a parse session.""" 
    245         result, self._LastCompleteElement = self._LastCompleteElement, None 
    246         return result 
    247  
  • trunk/RBFoundation/RBFoundation/__init__.py

    r432 r509  
    2828__author_email__ = 'shane.holloway@runeblade.com' 
    2929__url__ = 'http://www.runeblade.com/' 
    30 __keywords__ = ['select', 'weakbind', 'xml', 'objectify', 'xmlobjectify', 'aspect', 'oriented', 'AOP', 'aspect', 'pointcut', 'advice', 'advise'], 
     30__keywords__ = ['select', 'weakbind', 'xml', 'objectify', 'xmlobjectify', 
     31    'xmlnode', 'aspect', 'oriented', 'AOP', 'aspect', 'pointcut', 'advice', 
     32    'advise'] 
    3133__packages__ = ['RBFoundation',  
    3234                'RBFoundation.Aspects',