Sha256: e843e5c72a48616382f047f00a016c5e1d2f64056af1fda35cdfbb543fc65dcb

Contents?: true

Size: 1.1 KB

Versions: 13

Compression:

Stored size: 1.1 KB

Contents

module Plutonium
  module Core
    module Definers
      module RendererDefiner
        extend ActiveSupport::Concern
        include Plutonium::Core::Autodiscovery::RendererDiscoverer

        def defined_renderers_for(*names)
          (names - renderer_definitions.keys).each do |name|
            define_renderer(name, renderer: autodiscover_renderer(name))
          end
          renderer_definitions.slice(*names)
        end

        private

        def renderer_definitions = @renderer_definitions ||= {}

        def define_renderer(name, renderer: nil, type: nil, **options)
          renderer_definitions[name] = if renderer.present?
            renderer
          elsif type.present?
            Plutonium::Core::Fields::Renderers::Factory.build(name, type:, **options)
          elsif options.present?
            Plutonium::Core::Fields::Renderers::Factory.for_resource_attribute(resource_class, name, **options)
          else
            autodiscover_renderer(name)
          end
        end

        def renderer_defined?(name)
          renderer_definitions.key? name
        end
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
plutonium-0.12.9 lib/plutonium/core/definers/renderer_definer.rb
plutonium-0.12.8 lib/plutonium/core/definers/renderer_definer.rb
plutonium-0.12.7 lib/plutonium/core/definers/renderer_definer.rb
plutonium-0.12.5 lib/plutonium/core/definers/renderer_definer.rb
plutonium-0.12.4 lib/plutonium/core/definers/renderer_definer.rb
plutonium-0.12.3 lib/plutonium/core/definers/renderer_definer.rb
plutonium-0.12.2 lib/plutonium/core/definers/renderer_definer.rb
plutonium-0.12.1 lib/plutonium/core/definers/renderer_definer.rb
plutonium-0.12.0 lib/plutonium/core/definers/renderer_definer.rb
plutonium-0.11.2 lib/plutonium/core/definers/renderer_definer.rb
plutonium-0.11.1 lib/plutonium/core/definers/renderer_definer.rb
plutonium-0.11.0 lib/plutonium/core/definers/renderer_definer.rb
plutonium-0.8.0 lib/plutonium/core/definers/renderer_definer.rb