module Material::Components
Constants
- CLASSES_TO_DUPLICATE
Public Instance Methods
define_component_configurator(key)
click to toggle source
# File lib/material/concerns/components.rb, line 31 def define_component_configurator(key) define_singleton_method("define_#{key}".to_sym) do |**options, &block| _components[key].configure(**options, &block) end end
define_component_predicate(key)
click to toggle source
# File lib/material/concerns/components.rb, line 50 def define_component_predicate(key) method_name = "#{key}_value?".to_sym define_method(method_name) { public_send("#{key}_value".to_sym).present? } alias_method "#{key}?".to_sym, method_name end
define_component_reader(key)
click to toggle source
# File lib/material/concerns/components.rb, line 37 def define_component_reader(key) method_name = "#{key}_component".to_sym define_singleton_method(method_name) { _components[key] } delegate method_name, to: :class end
define_component_value_reader(key)
click to toggle source
# File lib/material/concerns/components.rb, line 43 def define_component_value_reader(key) method_name = "#{key}_value".to_sym define_method(method_name) { _components[key].value_for(self) } memoize method_name alias_method key, method_name unless method_defined?(key) end
inherited(base)
click to toggle source
Calls superclass method
# File lib/material/concerns/components.rb, line 15 def inherited(base) dup = _components.dup base._components = dup.each { |k, v| dup[k] = v.dup } super end
register_component(key, **options, &block)
click to toggle source
# File lib/material/concerns/components.rb, line 23 def register_component(key, **options, &block) _components[key] = Component.new(**options, &block) define_component_configurator(key) define_component_reader(key) define_component_value_reader(key) define_component_predicate(key) end