module Card::View::Options::Visibility
manages showing and hiding optional view renders
Constants
- VIZ_SETTING
advanced write method
Public Instance Methods
explicit_show?(view)
click to toggle source
# File lib/card/view/options/visibility.rb, line 22 def explicit_show? view viz_hash[view&.to_sym] == :show end
hide(*views)
click to toggle source
# File lib/card/view/options/visibility.rb, line 32 def hide *views viz views, :hide end
hide!(*views)
click to toggle source
# File lib/card/view/options/visibility.rb, line 42 def hide! *views viz views, :hide, true end
hide?(view)
click to toggle source
test methods
# File lib/card/view/options/visibility.rb, line 14 def hide? view viz_hash[view&.to_sym] == :hide end
optional?()
click to toggle source
test whether view is optional (@optional is set in normalize_options @return [true/false]
# File lib/card/view/options/visibility.rb, line 67 def optional? @optional end
process_visibility()
click to toggle source
translate raw hide, show options (which can be strings, symbols, arrays, etc)
# File lib/card/view/options/visibility.rb, line 73 def process_visibility viz_hash.reverse_merge! parent.viz_hash if parent process_visibility_options live_options viz requested_view, @optional if @optional && !viz_hash[requested_view] end
show(*views)
click to toggle source
write methods
# File lib/card/view/options/visibility.rb, line 28 def show *views viz views, :show end
show!(*views)
click to toggle source
force write methods
# File lib/card/view/options/visibility.rb, line 38 def show! *views viz views, :show, true end
show?(view)
click to toggle source
# File lib/card/view/options/visibility.rb, line 18 def show? view !hide? view end
visible?(view) { || ... }
click to toggle source
# File lib/card/view/options/visibility.rb, line 59 def visible? view viz view, yield unless viz_hash[view] show? view end
viz(views, setting, force=false)
click to toggle source
# File lib/card/view/options/visibility.rb, line 50 def viz views, setting, force=false Array.wrap(views).flatten.each do |view| view = view.to_sym next if !force && viz_hash[view] viz_hash[view] = VIZ_SETTING[setting] end end
viz_hash()
click to toggle source
tracks show/hide value for each view with an explicit setting eg { toggle: :hide }
# File lib/card/view/options/visibility.rb, line 8 def viz_hash @viz_hash ||= {} end
Private Instance Methods
hide_requested_view?()
click to toggle source
if true, process returns nil
# File lib/card/view/options/visibility.rb, line 82 def hide_requested_view? optional? && hide?(requested_view) end
normalized_visibility_options()
click to toggle source
# File lib/card/view/options/visibility.rb, line 94 def normalized_visibility_options viz_hash.each_with_object({}) do |(key, val), hash| hash[val] ||= [] hash[val] << key end end
process_visibility_options(options_hash)
click to toggle source
takes an options_hash and processes it to update viz_hash
# File lib/card/view/options/visibility.rb, line 87 def process_visibility_options options_hash %i[hide show].each do |setting| views = View.normalize_list(options_hash.delete(setting)).map(&:to_sym) viz views, setting, true end end