class Docks::Containers::Component
Public: a container for Component
symbols.
Public Class Methods
new(component_hash = {})
click to toggle source
Calls superclass method
# File lib/docks/containers/component_container.rb, line 18 def initialize(component_hash = {}) super self[:states] ||= [] self[:variants] ||= [] self[:subcomponents] ||= [] self[:included_symbols] ||= [] end
type()
click to toggle source
Public: the type of symbols that should be encapsulated by this container. This is compared against a symbol’s ‘symbol_type` to determine which container to use.
Returns the type String.
# File lib/docks/containers/component_container.rb, line 16 def self.type; Docks::Types::Symbol::COMPONENT end
Public Instance Methods
find(descriptor)
click to toggle source
Calls superclass method
# File lib/docks/containers/component_container.rb, line 48 def find(descriptor) super || find_in_members(descriptor) end
has_demo?()
click to toggle source
# File lib/docks/containers/component_container.rb, line 39 def has_demo? !((markup || "") + (helper || "")).empty? end
subcomponents(options = {}, &block)
click to toggle source
# File lib/docks/containers/component_container.rb, line 27 def subcomponents(options = {}, &block) subcomponents = if options.fetch(:recursive, false) recursive_subcomponents else self[:subcomponents] end block_given? ? subcomponents.each(&block) : subcomponents end
Also aliased as: subcomponent
summary()
click to toggle source
Calls superclass method
# File lib/docks/containers/component_container.rb, line 52 def summary summary = super [:states, :variants, :subcomponents].each do |property| summary[property] = fetch(property, []).map(&:summary) end summary end
variations(&block)
click to toggle source
# File lib/docks/containers/component_container.rb, line 43 def variations(&block) variations = states + variants block_given? ? variations.each(&block) : variations end
Protected Instance Methods
find_in_members(descriptor)
click to toggle source
# File lib/docks/containers/component_container.rb, line 71 def find_in_members(descriptor) descriptor = Descriptor.new(descriptor) found = if !(descriptor.member? && descriptor.symbol != fetch(:name, nil)) possible_variation_name = descriptor.member || descriptor.symbol variations.find { |variation| variation.find(descriptor) } || false else false end return found if found # Can't do a regular #find since each component searches its subcomponents subcomponents.each do |subcomponent| break if found = subcomponent.find(descriptor) end found end
recursive_subcomponents()
click to toggle source
# File lib/docks/containers/component_container.rb, line 64 def recursive_subcomponents self[:subcomponents].inject([]) do |all_subcomponents, subcomponent| all_subcomponents << subcomponent all_subcomponents.concat(subcomponent.recursive_subcomponents) end end