Sha256: 53e04a5821d600ceec36fb848a1cbd5cc1165834119bc032a853ac6af47f1e50
Contents?: true
Size: 1.93 KB
Versions: 2
Compression:
Stored size: 1.93 KB
Contents
class Wallaby::ResourceDecorator class << self def model_class if self < Wallaby::ResourceDecorator @model_class ||= Wallaby::Utils.to_model_class name.gsub('Decorator', ''), name end end def model_decorator if self < Wallaby::ResourceDecorator @model_decorator ||= Wallaby::DecoratorFinder.new_model model_class end end def decorate(resource) return resource if resource.is_a? Wallaby::ResourceDecorator new resource end delegate *begin Wallaby::ModelDecorator.instance_methods \ - Object.instance_methods - %i( model_class ) end, to: :model_decorator, allow_nil: true end def initialize(resource) @resource = resource @model_decorator = self.class.model_decorator || Wallaby::DecoratorFinder.new_model(model_class) end def method_missing(method_id, *args) if @resource.respond_to? method_id @resource.public_send method_id, *args else super end end delegate :to_s, :to_param, :to_params, to: :@resource delegate *begin Wallaby::ModelDecorator.instance_methods \ - %i( index_fields index_field_names show_fields show_field_names form_fields form_field_names ) \ - Object.instance_methods end, to: :@model_decorator attr_reader :model_decorator def model_class @resource.class end def resource @resource end def to_label @model_decorator.guess_title(@resource) || primary_key_value end def errors @model_decorator.form_active_errors(@resource) end def primary_key_value @resource.public_send primary_key end [ '', 'index_', 'show_', 'form_' ].each do |prefix| class_eval <<-RUBY def #{ prefix }fields @#{ prefix }fields ||= @model_decorator.#{ prefix }fields.dup.freeze end def #{ prefix }field_names @#{ prefix }field_names ||= @model_decorator.#{ prefix }field_names.dup.freeze end RUBY end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
wallaby-4.1.6 | lib/decorators/wallaby/resource_decorator.rb |
wallaby-5.0.1 | lib/decorators/wallaby/resource_decorator.rb |