Sha256: 07eaa78d3a7e55317429ddeb0bf6e18023a09f9979c391f531621631cc319a2d

Contents?: true

Size: 1.04 KB

Versions: 4

Compression:

Stored size: 1.04 KB

Contents

module Plutonium
  module Core
    module Definers
      module InputDefiner
        extend ActiveSupport::Concern
        include Plutonium::Core::Autodiscovery::InputDiscoverer

        def defined_inputs_for(names)
          (names - input_definitions.keys).each do |name|
            define_input(name, input: autodiscover_input(name))
          end
          input_definitions.slice(*names)
        end

        private

        def input_definitions = @input_definitions ||= {}

        def define_input(name, input: nil, type: nil, **options)
          input_definitions[name] = if input.present?
            input
          elsif type.present?
            Plutonium::Core::Fields::Inputs.build(name, type:, **options)
          elsif options.present?
            Plutonium::Core::Fields::Inputs::Factory.for_resource_attribute(context.resource_class, name, **options)
          else
            autodiscover_input(name)
          end
        end

        def input_defined?(name)
          input_definitions.key? name
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
plutonium-0.6.2 lib/plutonium/core/definers/input_definer.rb
plutonium-0.6.1 lib/plutonium/core/definers/input_definer.rb
plutonium-0.6.0 lib/plutonium/core/definers/input_definer.rb
plutonium-0.5.0 lib/plutonium/core/definers/input_definer.rb