module DecoratesBeforeRendering
Public Instance Methods
__attempt_to_decorate_(obj)
click to toggle source
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 93 def __attempt_to_decorate_ obj return obj if obj.respond_to?(:decorate) if obj src = __src_for__(obj) decorator = __normalized_decorator_for__(src) __do_decoration_ decorator, obj end end
__attempt_to_decorate_list_(objs)
click to toggle source
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 87 def __attempt_to_decorate_list_ objs [objs].flatten.compact.map do |obj| __attempt_to_decorate_(obj) end end
__auto_decorate_exposed_ones_()
click to toggle source
def render *args
__auto_decorate_exposed_ones_ super(*args)
end
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 14 def __auto_decorate_exposed_ones_ __decorate_ivars__ __decorate_exposed_ones_ __decorate_ctx_exposed_ones_ rescue StandardError => e __handle_decorate_error_(e) end
__ctx_exposed_ones_()
click to toggle source
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 42 def __ctx_exposed_ones_ return [] unless _has_exposure_storage? @__ctx_exposed_ones_ ||= _cxt_exposed_keys end
__decorate_ctx_exposed_ones_()
click to toggle source
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 71 def __decorate_ctx_exposed_ones_ __ctx_exposed_ones_.each do |name| ivar_name = "@#{name}" objs = ctx.send(name) decorated = case objs when Array __attempt_to_decorate_list_ objs else __attempt_to_decorate_ objs end ctx.send(:instance_variable_set, ivar_name, decorated) # if decorated end end
__decorate_error!(decorator)
click to toggle source
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 117 def __decorate_error! decorator raise DecoratorError, "Decorator: #{decorator} must have a #decorate method" end
__decorate_exposed_ones_()
click to toggle source
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 55 def __decorate_exposed_ones_ __exposed_ones_.each do |name| ivar_name = "@#{name}" objs = send(name) decorated = case objs when Array __attempt_to_decorate_list_ objs else __attempt_to_decorate_ objs end send(:instance_variable_set, ivar_name, decorated) # if decorated end end
__decorate_ivars__()
click to toggle source
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 159 def __decorate_ivars__ return unless __has_decorates? __validate_decorates_present_ return if __decorates_blank? __decorates__ivars __decorates_collection_ivars__ end
__decorates__ivars()
click to toggle source
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 184 def __decorates__ivars if !__decorates__.nil? __decorate_ivar_names__(__decorates__) do |ivar_name, ivar, options| decorator = options.key?(:with) ? options.fetch(:with) : __decorator_for__(ivar) if decorator decorated = __do_decoration_(decorator, ivar) instance_variable_set(ivar_name, decorated) end end end end
__decorates_blank?()
click to toggle source
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 171 def __decorates_blank? __decorates__.blank? and __decorates_collection__.blank? end
__decorates_collection_ivars__()
click to toggle source
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 175 def __decorates_collection_ivars__ if !__decorates_collection__.nil? __decorate_ivar_names__(__decorates_collection__) do |ivar_name, ivar, options| decorated = options.fetch(:with).decorate_collection(ivar) instance_variable_set(ivar_name, decorated) if decorated end end end
__decorator_for__(obj)
click to toggle source
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 143 def __decorator_for__(obj) return obj.decorator(self) if obj.respond_to? :decorator __decorator_name_for__(obj).constantize rescue FindModelError => e nil end
__decorator_name_for__(obj)
click to toggle source
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 150 def __decorator_name_for__(obj) "#{__model_name_for__(obj)}Decorator" end
__do_decoration_(decorator, obj)
click to toggle source
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 102 def __do_decoration_ decorator, obj return obj if obj.respond_to?(:decorate) return if !decorator || !obj __validate_decorator!(decorator) decorator.decorate(obj) end
__exposed_ones_()
click to toggle source
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 29 def __exposed_ones_ return [] unless _has_exposures? @__exposed_ones_ ||= _exposure_keys end
__handle_decorate_error_(e)
click to toggle source
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 22 def __handle_decorate_error_ e # puts "Error: #{e}" if defined?(::Rails) && (Rails.respond_to? :logger) Rails.logger.warn 'decorates_before_render: auto_decorate error: #{e}' end end
__has_decorates?()
click to toggle source
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 167 def __has_decorates? respond_to?(:__decorates__) end
__model_name_for__(obj)
click to toggle source
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 154 def __model_name_for__(obj) return obj.model_name if obj.respond_to?(:model_name) raise FindModelError, "#{obj} does not have an associated model" end
__normalized_decorator_for__(obj)
click to toggle source
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 130 def __normalized_decorator_for__(obj) decorator = __decorator_for__(obj) case decorator when String decorator.constantize.new obj when Class decorator.new obj else decorator end end
__src_for__(obj)
click to toggle source
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 121 def __src_for__ obj case obj when Class obj.class else obj end end
__validate_decorator!(decorator)
click to toggle source
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 111 def __validate_decorator! decorator unless decorator.respond_to? :decorate raise DecoratorError, "Decorator: #{decorator} must have a #decorate method" end end
_cxt_exposed_keys()
click to toggle source
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 47 def _cxt_exposed_keys self.class._exposure_storage.keys end
_exposure_keys()
click to toggle source
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 34 def _exposure_keys self.class._exposures.keys end
_has_exposure_storage?()
click to toggle source
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 51 def _has_exposure_storage? self.class.respond_to? :_exposure_storage end
_has_exposures?()
click to toggle source
# File lib/context_exposer/patch/decorates_before_rendering.rb, line 38 def _has_exposures? self.class.respond_to? :_exposures end