class Grapple::Components::BaseComponent
Base class for components
Attributes
builder[R]
columns[R]
params[R]
records[R]
template[R]
Public Class Methods
new(columns, records, template, params, builder, settings = {})
click to toggle source
# File lib/grapple/components/base_component.rb, line 22 def initialize(columns, records, template, params, builder, settings = {}) @template = template @columns = columns @records = records @params = params @builder = builder merge_settings(settings).each do |name, value| self.send(:"#{name}=", value) end end
setting(name, default = nil)
click to toggle source
# File lib/grapple/components/base_component.rb, line 10 def self.setting(name, default = nil) attr_accessor(name) @@default_settings[self.name] = {} unless @@default_settings.has_key?(self.name) @@default_settings[self.name][name] = default end
Public Instance Methods
render(*options, &block)
click to toggle source
# File lib/grapple/components/base_component.rb, line 33 def render(*options, &block) raise StandardError.new("Component must override render method") end
Protected Instance Methods
block_or_components(components, options, &block)
click to toggle source
Renders a block if present, otherwise renders the components with options
# File lib/grapple/components/base_component.rb, line 81 def block_or_components(components, options, &block) block.nil? ? render_components(components, options, &block).join : capture_block(&block) end
capture_block(default = '', &block)
click to toggle source
# File lib/grapple/components/base_component.rb, line 75 def capture_block(default = '', &block) return default if block.nil? template.with_output_buffer(&block).html_safe end
merge_settings(settings)
click to toggle source
TODO: this is all pretty hacky
# File lib/grapple/components/base_component.rb, line 40 def merge_settings(settings) result = {} klass = self.class while klass && klass.name != 'BaseComponent' if @@default_settings[klass.name] @@default_settings[klass.name].each do |name, value| result[name] = value end end klass = klass.superclass end settings.each do |name, value| result[name] = value end result end
num_columns()
click to toggle source
Number of columns in the table
# File lib/grapple/components/base_component.rb, line 71 def num_columns @columns.length end
render_components(components, options, &block)
click to toggle source
Render an array of components
# File lib/grapple/components/base_component.rb, line 86 def render_components(components, options, &block) html = [] components.each do |component| if component == :body html << capture_block(&block) elsif options[component] === false next else args = options[component] || [] html << self.builder.send(component, *args) end end html end
t(*args)
click to toggle source
Shortcut for translations Won’t try to translate strings, just symbols
# File lib/grapple/components/base_component.rb, line 60 def t(*args) # Don't translate strings return args[0] if args.length == 1 && args[0].kind_of?(String) begin return template.t(*args) if template.method_defined?(:t) ensure return I18n.translate(*args) end end
url_parameter(param)
click to toggle source
Returns a url parameter in the namespaced format
# File lib/grapple/components/base_component.rb, line 102 def url_parameter(param) @builder.namespace ? @builder.namespace + '[' + param.to_s + ']' : param.to_s end