Sha256: be9e021a510778441ce15c401c354c1ec11fc28fa33b2b73fb684263584a1283

Contents?: true

Size: 886 Bytes

Versions: 6

Compression:

Stored size: 886 Bytes

Contents

module Formulaic
  module Inputs
    class ArrayInput < Input
      def initialize(label, value)
        @label = label
        @value = value
      end

      def fill
        attempt_to_fill_selects ||
          attempt_to_fill_checkboxes ||
          raise_input_error
      end

      private

      def attempt_to_fill_selects
        SelectInput.new(label, value).fill
      end

      def attempt_to_fill_checkboxes
        CheckboxInput.new(label, value).fill
      end

      def contains_all_options?(nodes)
        nodes.map(&:text).to_set.superset?(value.to_set)
      end

      def raise_input_error
        raise(
          InputNotFound,
          %[Unable to find checkboxes or select[multiple] "#{label}" containing all options #{value.inspect}.]
        )
      end
    end
  end
end

require 'formulaic/inputs/checkbox_input'
require 'formulaic/inputs/select_input'

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
formulaic-0.4.0 lib/formulaic/inputs/array_input.rb
formulaic-0.3.0 lib/formulaic/inputs/array_input.rb
formulaic-0.2.0 lib/formulaic/inputs/array_input.rb
formulaic-0.1.4 lib/formulaic/inputs/array_input.rb
formulaic-0.1.3 lib/formulaic/inputs/array_input.rb
formulaic-0.1.2 lib/formulaic/inputs/array_input.rb