Sha256: 85e24c9652290e597ab139cf5983a4479b99795cffa5117a12affa89cd6fc34c

Contents?: true

Size: 1.13 KB

Versions: 12

Compression:

Stored size: 1.13 KB

Contents

module Plutonium
  module Core
    module Fields
      module Inputs
        class Base
          attr_reader :name, :user_options

          def initialize(name, **user_options)
            @name = name
            @user_options = user_options
          end

          def render(view_context, f, record, **)
            raise NotImplementedError, "#{self.class}#render"
          end

          def collect(params)
            # Handles multi parameter attributes
            # https://www.cookieshq.co.uk/posts/rails-spelunking-date-select
            # https://www.cookieshq.co.uk/posts/multiparameter-attributes

            # Matches
            # - parameter
            # - parameter(1)
            # - parameter(2)
            # - parameter(1i)
            # - parameter(2f)
            regex = /^#{param}(\(\d+[if]?\))?$/
            keys = params.select { |key, value| regex.match?(key) }.keys
            params.slice(*keys)
          end

          protected

          def input_options = {}

          def param = name

          def options = @options ||= input_options.deep_merge(@user_options)
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
plutonium-0.12.9 lib/plutonium/core/fields/inputs/base.rb
plutonium-0.12.8 lib/plutonium/core/fields/inputs/base.rb
plutonium-0.12.7 lib/plutonium/core/fields/inputs/base.rb
plutonium-0.12.5 lib/plutonium/core/fields/inputs/base.rb
plutonium-0.12.4 lib/plutonium/core/fields/inputs/base.rb
plutonium-0.12.3 lib/plutonium/core/fields/inputs/base.rb
plutonium-0.12.2 lib/plutonium/core/fields/inputs/base.rb
plutonium-0.12.1 lib/plutonium/core/fields/inputs/base.rb
plutonium-0.12.0 lib/plutonium/core/fields/inputs/base.rb
plutonium-0.11.2 lib/plutonium/core/fields/inputs/base.rb
plutonium-0.11.1 lib/plutonium/core/fields/inputs/base.rb
plutonium-0.11.0 lib/plutonium/core/fields/inputs/base.rb