Module: WrapIt::Switches::ClassMethods
- Included in:
- Base, WrapIt::Switches
- Defined in:
- lib/wrap_it/switches.rb
Overview
WrapIt::Switches class methods
Instance Method Summary collapse
-
#switch(name, options = {}) {|state| ... } ⇒ void
Adds
switch.
Instance Method Details
#switch(name, options = {}) {|state| ... } ⇒ void
This method returns an undefined value.
Adds switch. Switch is a boolean flag. When element created, creation
arguments will be scanned for Symbol, that equals to name. If
it founded, switch turned on. Also creation options inspected. If
its contains name: true key-value pair, this pair removed from
options and switch also turned on.
This method also adds getter and setter for this switch in form name?
and name= respectively.
When html_class option specified and switch changes its state, HTML
class for element will be computed as follows. if html_class options
is true, html class produced from html_class_prefix and name of
switch. If html_class is a String, Symbol or Array of this types,
html class produced as array of html_class_prefix and each
html_class concatinations. This classes added to element if switch is
on or removed in other case.
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/wrap_it/switches.rb', line 60 def switch(name, = {}, &block) .symbolize_keys! name = name.to_sym .merge!(block: block, name: name) if .key?(:html_class) [:html_class] = if [:html_class] == true [html_class_prefix + name.to_s] else HTMLClass.sanitize([:html_class]).map do |c| html_class_prefix + c end end end define_method("#{name}?") { @switches[name] == true } define_method("#{name}=", &Switches.setter(name, &block)) @switches ||= {} @switches[name] = o_params = {} a_params = { if: Symbol, and: name } if .key?(:aliases) aliases = [[:aliases]].flatten.compact o_params[:if] = [name] + aliases a_params[:and] = [name] + aliases end option(name, **o_params) do |_, v| send("#{options[:name]}=", v == true) end argument(name, **a_params) do |_, _| send("#{options[:name]}=", true) end end |