def render_object_from_spec(self, obj, spec, colors='_follow_object_spec_', align=True): """ Description: render an object by using an ObjectModelSpec to get the rendering specs Input: obj: the object to be rendered spec: the ObjectModelSpec to use Notes: Creates a GroupModel and renders that All the other render_object* methods end up calling this one """ log = LoggerAdapter(logger, {'name_ext':'{}.render_object_from_spec'.format(\ self.__class__.__name__)}) log.debug("Entering: obj: {} | spec: {} | colors: {} | align: {}".format(\ obj, spec, colors, align)) #- go through and first create the ObjectModels obj_models = list() if self.is_render_iterable(obj): for i, obj_x in enumerate(obj): obj_models.append( ObjectModel(obj_x, spec, colors=next(spec.colors))) else: prologue = ColoredText('') obj_models = [ObjectModel(obj, spec, colors=next(spec.colors))] if colors == '_follow_object_spec_': colors = copy.copy(spec.colors) #- collect the ObjectModels in a GroupModel group_model = GroupModel(object_models=obj_models, colors=colors, align=align) #-TODO: wrap GroupModel in CollectionModel here return group_model.render()