Changeset 280
- Timestamp:
- 09/08/02 01:56:25 (6 years ago)
- Files:
-
- trunk/RBFoundation/RBFoundation/Aspects/Advice.py (modified) (2 diffs)
- trunk/RBFoundation/RBFoundation/ChainedDict.py (modified) (3 diffs)
- trunk/RBFoundation/RBFoundation/ContextApply.py (modified) (5 diffs)
- trunk/RBFoundation/RBFoundation/WeakBind.py (modified) (5 diffs)
- trunk/RBFoundation/RBFoundation/XMLObjectify.py (modified) (4 diffs)
- trunk/RBFoundation/RBFoundation/XSDConverter.py (modified) (1 diff)
- trunk/RBSkinning/RBSkinning/InheritableSettings.py (modified) (4 diffs)
- trunk/RBSkinning/RBSkinning/SkinContext.py (modified) (2 diffs)
- trunk/RBSkinning/RBSkinning/SkinObject.py (modified) (1 diff)
- trunk/RBSkinning/RBSkinning/UtilitySkinElements.py (modified) (1 diff)
- trunk/RBSkinning/RBSkinning/skin/template.py (modified) (1 diff)
- trunk/RBSkinning/RBSkinning/xmlPython/for_.py (modified) (2 diffs)
- trunk/RBSkinning/RBSkinning/xmlPython/if_.py (modified) (1 diff)
- trunk/RBSkinning/RBSkinning/xmlPython/module.py (modified) (1 diff)
- trunk/RBSkinning/RBSkinning/xmlPython/while_.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/RBFoundation/RBFoundation/Aspects/Advice.py
r257 r280 59 59 60 60 def AdviseBefore(self, obj, name, *args, **kw): 61 try: Method = self.AdviseMethods['before'] 62 except KeyError: pass 63 else: return Method(obj, name, *args, **kw) 61 if 'before' in self.AdviseMethods: 62 return self.AdviseMethods['before'](obj, name, *args, **kw) 64 63 65 64 def AdviseAfter(self, obj, name, result, *args, **kw): 66 try: Method = self.AdviseMethods['after']67 except KeyError: return result68 else: return Method(obj, name, result, *args, **kw)65 if 'after' in self.AdviseMethods: 66 return self.AdviseMethods['after'](obj, name, result, *args, **kw) 67 else: return result 69 68 70 69 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 113 112 114 113 def __call__(self, *args, **kw): 115 try: BeforeMethod = self.advice.AdviseMethods['before'] 116 except KeyError: pass 117 else: BeforeMethod(self.obj, *args, **kw) 114 BeforeMethod = self.advice.AdviseMethods.get('before') 115 if BeforeMethod is not None: BeforeMethod(self.obj, *args, **kw) 118 116 119 117 result = self.method(*args, **kw) 120 118 121 try: AfterMethod = self.advice.AdviseMethods['after'] 122 except KeyError: pass 123 else: AfterMethod(self.obj, result, *args, **kw) 119 AfterMethod = self.advice.AdviseMethods.get('after') 120 if AfterMethod is not None: AfterMethod(self.obj, result, *args, **kw) 124 121 125 122 return result trunk/RBFoundation/RBFoundation/ChainedDict.py
r253 r280 36 36 37 37 def SetChained(self, chained): 38 if chained is not None: 39 self.chained = chained 40 else: self.chained = {} 38 self.chained = chained or {} 41 39 42 40 def GetChained(self): … … 48 46 49 47 def __init__(self, data=None, chained=None): 50 if data is not None: 51 self.source = data 52 else: self.source = {} 53 self.SetChained(chained) 48 self.source = data or {} 49 self.chained = chained or {} 54 50 55 51 def __contains__(self, obj): 56 52 return self.source.__contains__(obj) or self.chained.__contains__(obj) 57 53 58 def __getitem__(self, *args, **kw): 59 try: 60 return self.source.__getitem__(*args, **kw) 61 except KeyError: 62 return self.chained.__getitem__(*args, **kw) 54 def __getitem__(self, key): 55 if key in self.source: 56 return self.source[key] 57 else: return self.chained[key] 63 58 64 59 def __setitem__(self, *args, **kw): … … 75 70 76 71 def get(self, key, *args): 77 try: 78 return self.source.__getitem__(key) 79 except KeyError: 80 return self.chained.get(key, *args) 72 if key in self.source: 73 return self.source[key] 74 else: return self.chained.get(key, *args) 81 75 82 76 def clear(self, *args, **kw): trunk/RBFoundation/RBFoundation/ContextApply.py
r253 r280 73 73 """ 74 74 def __call__(self, *args, **kw): 75 return self._DoCall( args + self.args,_JoinKW(kw, self.kw))75 return self._DoCall(*(args + self.args), **_JoinKW(kw, self.kw)) 76 76 77 77 class ContextApply_s_p_mixin(object): … … 81 81 """ 82 82 def __call__(self, *args, **kw): 83 return self._DoCall( self.args + args,_JoinKW(self.kw, kw))83 return self._DoCall(*(self.args + args), **_JoinKW(self.kw, kw)) 84 84 85 85 class ContextApply_p_mixin(object): … … 91 91 def SaveContext(self, args, kw): pass 92 92 def __call__(self, *args, **kw): 93 return self._DoCall( args,kw)93 return self._DoCall(*args, **kw) 94 94 95 95 class ContextApply_s_mixin(object): … … 100 100 """ 101 101 def __call__(self, *args, **kw): 102 return self._DoCall( self.args,self.kw)102 return self._DoCall(*self.args, **self.kw) 103 103 104 104 class ContextApply_0_mixin(object): … … 111 111 def SaveContext(self, args, kw): pass 112 112 def __call__(self, *args, **kw): 113 return self._DoCall( tuple(), {})113 return self._DoCall() 114 114 115 115 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ trunk/RBFoundation/RBFoundation/WeakBind.py
r253 r280 99 99 return self.im_func and 1 or 0 100 100 101 def __call__(self, *args, **kw):102 return self._DoCall(args, kw)101 #def __call__(self, *args, **kw): 102 # return self._DoCall(args, kw) 103 103 104 104 def __eq__(self, other): … … 112 112 return not self.__eq__(other) 113 113 114 def _DoCall(self, args,kw):114 def _DoCall(self, *args, **kw): 115 115 if self.im_self: 116 116 im_self = self.im_self() … … 121 121 else: raise weakref.ReferenceError, "weakly-referenced object no longer exists" 122 122 else: return self.im_func(*args, **kw) 123 __call__ = _DoCall 123 124 124 125 BoundCallable = WeakBoundCallable … … 150 151 return self.callback is not None and 1 or 0 151 152 152 def __call__(self, *args, **kw):153 return self._DoCall(args, kw)153 #def __call__(self, *args, **kw): 154 # return self._DoCall(args, kw) 154 155 155 156 def __eq__(self, other): … … 163 164 return not self.__eq__(other) 164 165 165 def _DoCall(self, args,kw):166 def _DoCall(self, *args, **kw): 166 167 return self.callback(*args, **kw) 168 __call__ = _DoCall 167 169 168 170 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ trunk/RBFoundation/RBFoundation/XMLObjectify.py
r277 r280 176 176 self._elements = [] 177 177 178 def __getattribute__(self, name):179 """Allows for the node.attribute or node.subnode semantics"""180 if '_' != name[0]:181 _attributes = self._attributes182 if name in self._attributes: return _attributes[name]183 xmlName = name.replace('_', '-')184 if '-' == xmlName[-1]: xmlName = xmlName[:-1]185 if xmlName in _attributes:186 return _attributes[xmlName]187 result = self._getElements(node=xmlName)188 if result:189 return result190 return XMLBuilder.XMLBuilderObjectBase.__getattribute__(self, name)191 192 178 def __call__(self, joinstr=''): 193 179 """One way to get the PC data out of the node. See __str__, __int__, __float__, and __complex__. … … 339 325 nsOuter.update(self.__namespace_map__) 340 326 341 try:327 if self.__namespace__ in nsOuter: 342 328 nodePrefix = nsOuter[self.__namespace__] 343 e xcept KeyError:329 else: 344 330 # Remove old default namespace 345 331 nodePrefix = None 346 for key, value in nsOuter.ite ms():332 for key, value in nsOuter.iteritems(): 347 333 if value is nodePrefix: del nsOuter[key] 348 for key, value in self.__namespace_map__.ite ms():334 for key, value in self.__namespace_map__.iteritems(): 349 335 if value is nodePrefix: del self.__namespace_map__[key] 350 336 # Add current namespace as "default" … … 367 353 368 354 # Attributes 369 lstAttrResult = []370 355 for attrname, attrvalue in self._attributes.iteritems(): 371 356 if isinstance(attrname, tuple): 372 357 if attrname[1] not in self._attributes: 373 358 prefix = nsOuter[attrname[0]] 374 if prefix: lstAttrResult.append(' %s:%s=%s' % (prefix, attrname[1], quoteattr(attrvalue))) 375 else: lstAttrResult.append(' %s=%s' % (attrname[1], quoteattr(attrvalue))) 376 elif nodePrefix: 377 lstAttrResult.append(' %s:%s=%s' % (nodePrefix, attrname[1], quoteattr(attrvalue))) 378 else: lstAttrResult.append(' %s=%s' % (attrname, quoteattr(attrvalue))) 379 if lstAttrResult: 380 result += ''.join(lstAttrResult) 359 if prefix: result += ' %s:%s=%s' % (prefix, attrname[1], quoteattr(attrvalue)) 360 else: result += ' %s=%s' % (attrname[1], quoteattr(attrvalue)) 361 #else: will be handled in not extended name form 362 elif nodePrefix: result += ' %s:%s=%s' % (nodePrefix, attrname[1], quoteattr(attrvalue)) 363 else: result += ' %s=%s' % (attrname, quoteattr(attrvalue)) 381 364 382 365 # Result constrution … … 425 408 426 409 class ObjectifiedXML(BaseObjectifiedXML): 410 def __getattribute__(self, name): 411 """Allows for the node.attribute or node.subnode semantics""" 412 if '_' != name[0]: 413 _attributes = self._attributes 414 if name in self._attributes: return _attributes[name] 415 xmlName = name.replace('_', '-') 416 if '-' == xmlName[-1]: xmlName = xmlName[:-1] 417 if xmlName in _attributes: 418 return _attributes[xmlName] 419 result = self._getElements(node=xmlName) 420 if result: 421 return result 422 return XMLBuilder.XMLBuilderObjectBase.__getattribute__(self, name) 423 427 424 def __setattr__(self, name, value): 428 425 """Allows user to create new attributes, or change values using node.attribute semantics""" trunk/RBFoundation/RBFoundation/XSDConverter.py
r267 r280 100 100 101 101 for key in other._elements: 102 try:102 if key in self._elements: 103 103 self._elements[key]._XSDMerge(other._elements[key]) 104 e xcept KeyError:104 else: 105 105 temp = other._elements[key] 106 106 temp._mincount = 0 trunk/RBSkinning/RBSkinning/InheritableSettings.py
r253 r280 82 82 def _SaveSettings(self, settings=None, SettingPrefix=None): 83 83 settings = settings or self.local_settings 84 try: 84 if self.BaseSettingsLevel in settings: 85 SettingLevel = int(settings[self.BaseSettingsLevel]) 86 del settings[self.BaseSettingsLevel] 87 else: SettingLevel = None 88 if self.BaseSettingsSave in settings: 85 89 SettingName = settings[self.BaseSettingsSave] 86 90 del settings[self.BaseSettingsSave] 87 except KeyError: SettingName = None88 try:89 SettingLevel = int(settings[self.BaseSettingsLevel])90 del settings[self.BaseSettingsLevel]91 except KeyError: SettingLevel = None92 if SettingName:93 91 return self._SaveSettingsAdv(SettingName, settings, SettingPrefix, SettingLevel) 94 92 … … 99 97 # Get inherited settings 100 98 newsettings = {} 101 self._InheritSettings(newsettings, strtolist(self.default_settings.get(self.BaseSettingsInherit, '')), Resilliant=1) 102 self._InheritSettings(newsettings, strtolist(settings.get(self.BaseSettingsInherit, ''))) 99 BaseSettingsList = self.default_settings.get(self.BaseSettingsInherit, '') 100 if BaseSettingsList: self._InheritSettings(newsettings, strtolist(BaseSettingsList), Resilliant=1) 101 BaseSettingsList = settings.get(self.BaseSettingsInherit, '') 102 if BaseSettingsList: self._InheritSettings(newsettings, strtolist(BaseSettingsList)) 103 103 104 104 # Merge the two settings … … 106 106 else: newsettings = settings 107 107 108 try: del newsettings[self.BaseSettingsInherit]109 except KeyError: pass108 if self.BaseSettingsInherit in newsettings: 109 del newsettings[self.BaseSettingsInherit] 110 110 111 try: self._SaveSettings(newsettings) 112 except KeyError: pass 111 self._SaveSettings(newsettings) 113 112 114 113 # now set our settings to be a chained grouping of 115 114 # the modified incoming settings, and the chained settings 116 115 self.settings = ChainedDict(newsettings) 117 self.settings. SetChained(self.default_settings)116 self.settings.chained = self.default_settings 118 117 119 118 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 133 132 def _GetSourceSettings(self): 134 133 try: return self.settings.source 135 except AttributeError: return {}134 except AttributeError: return self.settings 136 135 source_settings = property(fget=_GetSourceSettings) 137 136 trunk/RBSkinning/RBSkinning/SkinContext.py
r253 r280 26 26 from __future__ import generators 27 27 28 myStat = {} 28 29 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 29 30 #~ Class … … 39 40 40 41 def __getattribute__(self, name): 41 if name[0] != '_' or name in ['__root__', '__skinner__']: 42 if name not in self.__dict__ and self._NextContext: 43 return self._NextContext.__getattribute__(name) 42 if name in ('__dict__', '_NextContext'): 43 return object.__getattribute__(self, name) 44 elif name[0] != '_' or name in ('__root__', '__skinner__'): 45 ctx = self 46 while ctx and (name not in ctx.__dict__): 47 ctx = ctx._NextContext 48 if ctx: return ctx.__dict__[name] 44 49 return object.__getattribute__(self, name) 45 50 trunk/RBSkinning/RBSkinning/SkinObject.py
r277 r280 102 102 Returns the resultant context.""" 103 103 result = self.context 104 if force or (self.parent() and self.parent().context is not self.context):104 if force or self.context._NextContext: 105 105 self.context = self.context._NextContext 106 106 return result trunk/RBSkinning/RBSkinning/UtilitySkinElements.py
r253 r280 79 79 80 80 # Emulate the End of an element 81 result =owner._end_element(name)81 owner._end_element(name) 82 82 83 83 # Emulate the namespace end calls 84 84 for prefix in self.namespacemap.itervalues(): 85 85 owner._end_namespace_decl_handler(prefix) 86 87 # Return our result88 return result89 86 90 87 def RestoreChildren(self, owner=None): trunk/RBSkinning/RBSkinning/skin/template.py
r264 r280 92 92 setattr(self.context, '::invoke:' + InvokeName, weakref.proxy(self)) 93 93 TemplateOuter.RestoreChildren(self.owner) 94 delattr(self.context, '::invoke:' + InvokeName) 94 95 self.parent().PopContext() 95 96 trunk/RBSkinning/RBSkinning/xmlPython/for_.py
r265 r280 45 45 def SkinInitialize(self): 46 46 if self.parent(): 47 self.parent().PushContext( )47 self.parent().PushContext(force=1) 48 48 self.object = self.EvalLocal(self.settings['collection']) 49 49 self.StoreChildren(self.object and 1 or 0) … … 54 54 setattr(self.context, name, each) 55 55 self.RestoreChildren() 56 56 if self.parent(): 57 self.parent().PopContext() trunk/RBSkinning/RBSkinning/xmlPython/if_.py
r253 r280 43 43 44 44 def SkinInitialize(self): 45 self.PushContext()46 45 self.object = self.EvalLocal(self.settings['condition']) 47 46 self.StoreChildren(self.object and 1 or 0) trunk/RBSkinning/RBSkinning/xmlPython/module.py
r266 r280 48 48 49 49 # Create the module 50 module = types.ModuleType( )51 module.__name__ = module50 module = types.ModuleType(name) 51 module.__name__ = name 52 52 module.__doc__ = """Module generated by xmlPython.module""" 53 53 module.__dict__.update(self._GetEvalLocals(**Variables)) trunk/RBSkinning/RBSkinning/xmlPython/while_.py
r266 r280 44 44 def SkinInitialize(self): 45 45 if self.parent(): 46 self.parent().PushContext( )47 self.condition = self.settings['condition']46 self.parent().PushContext(force=1) 47 self.condition = compile(self.settings['condition'], 'xmlPython.while', 'eval') 48 48 self.object = self.EvalLocal(self.condition) 49 49 self.StoreChildren(self.object and 1 or 0) … … 54 54 self.object = self.EvalLocal(self.condition) 55 55 del self.condition 56 if self.parent(): 57 self.parent().PopContext() 56 58
