def component(self, obj): result = Namespace() for class_name in class_names_for(obj.__class__): if class_name in self.config: config = Namespace(self.config.get(class_name, {})) shortcuts_config = Namespace(config.pop('shortcuts', {})) result.update(config) for shortcut_name in reversed( getattr(obj, '__tri_declarative_shortcut_stack', [])): result = Namespace(result, shortcuts_config.get(shortcut_name, {})) return result
def component(self, obj): result = Namespace() # TODO: is this wrong? Should it take classes first, then loop through shortcuts? for class_name in class_names_for(type(obj)): if class_name in self.config: config = Namespace(self.config.get(class_name, {})) shortcuts_config = Namespace(config.pop('shortcuts', {})) result.update(config) for shortcut_name in reversed( getattr(obj, '__tri_declarative_shortcut_stack', [])): result = Namespace(result, shortcuts_config.get(shortcut_name, {})) return result
def component(self, obj, is_root=False): """ Calculate the namespace of additional argument that should be applied to the given object. If is_root is set to True, assets might also be added to the namespace. """ result = Namespace() # TODO: is this wrong? Should it take classes first, then loop through shortcuts? for class_name in class_names_for(type(obj)): if class_name in self.config: config = Namespace(self.config.get(class_name, {})) shortcuts_config = Namespace(config.pop('shortcuts', {})) result.update(config) for shortcut_name in reversed(getattr(obj, '__tri_declarative_shortcut_stack', [])): result = Namespace(result, shortcuts_config.get(shortcut_name, {})) if is_root: result = Namespace(result, self.root) return result