Class: Foobara::Callback::Registry::Conditioned
- Defined in:
- foobara-0.0.110/projects/callback/src/registry/conditioned.rb
Direct Known Subclasses
Defined Under Namespace
Classes: InvalidConditions
Instance Attribute Summary collapse
-
#callback_sets ⇒ Object
Returns the value of attribute callback_sets.
-
#possible_condition_keys ⇒ Object
Returns the value of attribute possible_condition_keys.
-
#possible_conditions ⇒ Object
Returns the value of attribute possible_conditions.
Attributes inherited from Base
Instance Method Summary collapse
-
#initialize(possible_conditions) ⇒ Conditioned
constructor
A new instance of Conditioned.
- #specific_callback_set_for(*args, **opts) ⇒ Object
- #unioned_callback_set_for(**conditions) ⇒ Object
Methods inherited from Base
#after, #around, #before, #error, #has_after_callbacks?, #has_around_callbacks?, #has_before_callbacks?, #has_callbacks?, #has_error_callbacks?, #register_callback, #runner
Constructor Details
#initialize(possible_conditions) ⇒ Conditioned
Returns a new instance of Conditioned.
11 12 13 14 15 16 17 |
# File 'foobara-0.0.110/projects/callback/src/registry/conditioned.rb', line 11 def initialize(possible_conditions) super() self.callback_sets = {} self.possible_conditions = possible_conditions self.possible_condition_keys = possible_conditions.keys.map(&:to_s).sort.map(&:to_sym) end |
Instance Attribute Details
#callback_sets ⇒ Object
Returns the value of attribute callback_sets.
7 8 9 |
# File 'foobara-0.0.110/projects/callback/src/registry/conditioned.rb', line 7 def callback_sets @callback_sets end |
#possible_condition_keys ⇒ Object
Returns the value of attribute possible_condition_keys.
7 8 9 |
# File 'foobara-0.0.110/projects/callback/src/registry/conditioned.rb', line 7 def possible_condition_keys @possible_condition_keys end |
#possible_conditions ⇒ Object
Returns the value of attribute possible_conditions.
7 8 9 |
# File 'foobara-0.0.110/projects/callback/src/registry/conditioned.rb', line 7 def possible_conditions @possible_conditions end |
Instance Method Details
#specific_callback_set_for(*args, **opts) ⇒ Object
19 20 21 22 23 24 |
# File 'foobara-0.0.110/projects/callback/src/registry/conditioned.rb', line 19 def specific_callback_set_for(*args, **opts) conditions = Util.args_and_opts_to_opts(args, opts) validate_conditions!(**conditions) # TODO: don't always have to validate this... key = condition_hash_to_callback_key(conditions) callback_sets[key] ||= Callback::Set.new end |
#unioned_callback_set_for(**conditions) ⇒ Object
26 27 28 29 30 31 32 33 34 35 |
# File 'foobara-0.0.110/projects/callback/src/registry/conditioned.rb', line 26 def unioned_callback_set_for(**conditions) return specific_callback_set_for if conditions.empty? full_callback_key = condition_hash_to_callback_key(conditions) all_sets = callback_key_permutations(full_callback_key).map do |callback_key| callback_sets[callback_key] end.compact all_sets.inject { |unioned, set| unioned.union(set) } || Callback::Set.new end |