Module: Card::View::Options::VooApi
- Included in:
- Card::View::Options
- Defined in:
- lib/card/view/options/voo_api.rb
Overview
The methods of the VooApi module allow developers to read and write options dynamically.
Instance Attribute Summary collapse
-
#normalized_options ⇒ Hash
readonly
- @normalized_options are determined upon initialization and do not change after that.
Class Method Summary collapse
Instance Method Summary collapse
-
#items ⇒ Hash
"items", the option used to configure views of each of a list of cards, is currently the only Hash option (thus this accessor override).
- #normalize_cache(value) ⇒ Object
-
#normalize_editor(value) ⇒ Object
ACCESSOR_HELPERS methods that follow the normalize_#key pattern are called by accessors (arguably that should be done during normalization!).
-
#slot_options ⇒ Hash
options to be used in data attributes of card slots (normalized options with standard keys) FIXME: what we really want is options as they were when render was called.
Instance Attribute Details
#normalized_options ⇒ Hash (readonly)
- @normalized_options are determined upon initialization and do not change after that.
12 13 14 |
# File 'lib/card/view/options/voo_api.rb', line 12 def @normalized_options end |
Class Method Details
.define_getter(option_key) ⇒ Object
26 27 28 29 30 31 32 |
# File 'lib/card/view/options/voo_api.rb', line 26 def define_getter option_key define_method option_key do norm_method = "normalize_#{option_key}" value = [option_key] try(norm_method, value) || value end end |
.define_setter(option_key) ⇒ Object
34 35 36 37 38 |
# File 'lib/card/view/options/voo_api.rb', line 34 def define_setter option_key define_method "#{option_key}=" do |value| [option_key] = value end end |
.included(base) ⇒ Object
15 16 17 18 19 20 21 22 23 24 |
# File 'lib/card/view/options/voo_api.rb', line 15 def included base # Developers can also set most options directly via accessors, # eg voo.title = "King" # :view, :show, and :hide have non-standard access (see #accessible_keys) base.accessible_keys.each do |option_key| define_getter option_key unless option_key == :items define_setter option_key end end |
Instance Method Details
#items ⇒ Hash
"items", the option used to configure views of each of a list of cards, is currently the only Hash option (thus this accessor override)
44 45 46 |
# File 'lib/card/view/options/voo_api.rb', line 44 def items [:items] ||= {} end |
#normalize_cache(value) ⇒ Object
76 77 78 |
# File 'lib/card/view/options/voo_api.rb', line 76 def normalize_cache value value&.to_sym end |
#normalize_editor(value) ⇒ Object
ACCESSOR_HELPERS methods that follow the normalize_#key pattern are called by accessors (arguably that should be done during normalization!)
72 73 74 |
# File 'lib/card/view/options/voo_api.rb', line 72 def normalize_editor value value&.to_sym end |
#slot_options ⇒ Hash
options to be used in data attributes of card slots (normalized options with standard keys) FIXME: what we really want is options as they were when render was called. normalized is wrong because it can get changed before render. live is wrong because they can get changed after. current solution is a compromise.
54 55 56 57 58 |
# File 'lib/card/view/options/voo_api.rb', line 54 def .merge(view: requested_view).select do |k, _v| Options.all_keys.include? k end end |