class ActionComponent::ElementBuilder
Public Class Methods
new(base, element_name = nil, classes = nil, id = nil)
click to toggle source
# File lib/action_component/element_builder.rb, line 3 def initialize(base, element_name = nil, classes = nil, id = nil) @base = base @element_name = element_name @classes = classes @id = id end
Public Instance Methods
method_missing(method, *args, &block)
click to toggle source
# File lib/action_component/element_builder.rb, line 10 def method_missing(method, *args, &block) element_name = @element_name classes = @classes id = @id command = method.to_s command = command[-1] == '?' ? command[0..-2] : command.gsub('_', '-') if element_name if command[-1] == '!' id = command[0..-2] else classes = classes ? "#{classes} #{command}" : command end else element_name = command end if !args.empty? || block first, second = args if second.is_a?(Hash) build_options(classes, id, second) elsif first.is_a?(Hash) build_options(classes, id, first) elsif first second = build_options(classes, id) else first = build_options(classes, id) end @base.send(:element, element_name, first, second, &block) else self.class.new(@base, element_name, classes, id) end end
Private Instance Methods
build_options(classes, id, options = {})
click to toggle source
# File lib/action_component/element_builder.rb, line 50 def build_options(classes, id, options = {}) if classes if options[:class] options[:class] = "#{options[:class]} #{classes}" else options[:class] = classes end end options[:id] = id if id options end