Class: ActiveInteraction::Inputs
- Inherits:
-
Object
- Object
- ActiveInteraction::Inputs
- Extended by:
- Forwardable
- Includes:
- Enumerable
- Defined in:
- lib/active_interaction/inputs.rb
Overview
Holds inputs passed to the interaction.
Instance Method Summary collapse
-
#given?(input, *rest) ⇒ Boolean
Returns
true
if the given key was in the hash passed to run. -
#to_h ⇒ Hash
Turn the inputs into a Hash.
Instance Method Details
#given?(input, *rest) ⇒ Boolean
Returns true
if the given key was in the hash passed to run.
Otherwise returns false
. Use this to figure out if an input was given,
even if it was nil
. Keys within nested hash filter can also be checked
by passing them in series. Arrays can be checked in the same manor as
hashes by passing an index.
rubocop:disable all
134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
# File 'lib/active_interaction/inputs.rb', line 134 def given?(input, *rest) filter_level = @base.class input_level = @normalized_inputs [input, *rest].each do |key_or_index| if key_or_index.is_a?(Symbol) || key_or_index.is_a?(String) key = key_or_index.to_sym key_to_s = key_or_index.to_s filter_level = filter_level.filters[key] break false if filter_level.nil? || input_level.nil? break false unless input_level.key?(key) || input_level.key?(key_to_s) input_level = input_level[key] || input_level[key_to_s] else index = key_or_index filter_level = filter_level.filters.first.last break false if filter_level.nil? || input_level.nil? break false unless index.between?(-input_level.size, input_level.size - 1) input_level = input_level[index] end end && true end |
#to_h ⇒ Hash
Turn the inputs into a Hash.
57 58 59 |
# File 'lib/active_interaction/inputs.rb', line 57 def to_h @to_h ||= @inputs.transform_values(&:value).freeze end |