Module: Glimmer::Web::Component::ClassMethods
- Includes:
- Glimmer
- Defined in:
- lib/glimmer/web/component.rb
Instance Method Summary collapse
- #after_render(&block) ⇒ Object
- #before_render(&block) ⇒ Object
-
#create(*args) ⇒ Object
Creates component without rendering.
- #def_option_attr_accessors(new_options) ⇒ Object
- #keyword ⇒ Object
- #markup(&block) ⇒ Object
- #option(new_option, default: nil) ⇒ Object (also: #attribute)
- #options(*new_options) ⇒ Object (also: #attributes)
-
#render(*args) ⇒ Object
Creates and renders component.
-
#shortcut_keyword ⇒ Object
Returns shortcut keyword to use for this component (keyword minus namespace).
Instance Method Details
#after_render(&block) ⇒ Object
84 85 86 87 |
# File 'lib/glimmer/web/component.rb', line 84 def after_render(&block) @after_render_blocks ||= [] @after_render_blocks << block end |
#before_render(&block) ⇒ Object
75 76 77 78 |
# File 'lib/glimmer/web/component.rb', line 75 def before_render(&block) @before_render_blocks ||= [] @before_render_blocks << block end |
#create(*args) ⇒ Object
Creates component without rendering
99 100 101 102 103 104 |
# File 'lib/glimmer/web/component.rb', line 99 def create(*args) args << {} unless args.last.is_a?(Hash) args.last[:render] = false rendered_component = send(keyword, *args) rendered_component end |
#def_option_attr_accessors(new_options) ⇒ Object
64 65 66 67 68 69 70 71 72 73 |
# File 'lib/glimmer/web/component.rb', line 64 def def_option_attr_accessors() .each do |option, default| define_method(option) do [:"#{option}"] end define_method("#{option}=") do |option_value| self.[:"#{option}"] = option_value end end end |
#keyword ⇒ Object
89 90 91 |
# File 'lib/glimmer/web/component.rb', line 89 def keyword self.name.underscore.gsub('::', '__') end |
#markup(&block) ⇒ Object
80 81 82 |
# File 'lib/glimmer/web/component.rb', line 80 def markup(&block) @markup_block = block end |
#option(new_option, default: nil) ⇒ Object Also known as: attribute
54 55 56 57 58 59 60 61 |
# File 'lib/glimmer/web/component.rb', line 54 def option(new_option, default: nil) new_option = new_option.to_s.to_sym = {new_option => default} '@options = options.merge(new_options)' = .merge() 'def_option_attr_accessors(new_options)' def_option_attr_accessors() end |
#options(*new_options) ⇒ Object Also known as: attributes
Allows defining convenience option accessors for an array of option names Example: ‘options :color1, :color2` defines `#color1` and `#color2` where they return the instance values `options` and `options` respectively. Can be called multiple times to set more options additively. When passed no arguments, it returns list of all option names captured so far
42 43 44 45 46 47 48 49 50 51 |
# File 'lib/glimmer/web/component.rb', line 42 def (*) = .compact.map(&:to_s).map(&:to_sym) if .empty? ||= {} # maps options to defaults else = .reduce({}) {|, new_option| .merge(new_option => nil)} = .merge() def_option_attr_accessors() end end |
#render(*args) ⇒ Object
Creates and renders component
107 108 109 110 |
# File 'lib/glimmer/web/component.rb', line 107 def render(*args) rendered_component = send(keyword, *args) rendered_component end |
#shortcut_keyword ⇒ Object
Returns shortcut keyword to use for this component (keyword minus namespace)
94 95 96 |
# File 'lib/glimmer/web/component.rb', line 94 def shortcut_keyword self.name.underscore.gsub('::', '__').split('__').last end |