Sha256: c91328005d7b90f6e3b60d24d7f44715c19783c61a533a196c3be933251f320f

Contents?: true

Size: 578 Bytes

Versions: 6

Compression:

Stored size: 578 Bytes

Contents

require "dry/inflector"

module Voom
  module Presenters
    module WebClient
      class ComponentDecoratorFactory

        def self.build(component)
          comp_class = "#{inflector.camelize(component.type)}HtmlDecorator"
          klass = if const_defined?(comp_class)
                    const_get(comp_class)
                  else
                    ComponentHtmlDecorator
                  end
          klass.new(component)
        end

        private

        def self.inflector
          @inflector ||= Dry::Inflector.new
        end

      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
voom-presenters-2.1.2 lib/voom/presenters/web_client/component_decorator_factory.rb
voom-presenters-2.1.0 lib/voom/presenters/web_client/component_decorator_factory.rb
voom-presenters-2.0.3 lib/voom/presenters/web_client/component_decorator_factory.rb
voom-presenters-2.0.2 lib/voom/presenters/web_client/component_decorator_factory.rb
voom-presenters-2.0.1 lib/voom/presenters/web_client/component_decorator_factory.rb
voom-presenters-2.0.0 lib/voom/presenters/web_client/component_decorator_factory.rb