class Roda::RodaPlugins::Components::ComponentRequest
Attributes
app[R]
cache[R]
component_class[R]
component_name[R]
component_opts[R]
Public Class Methods
new(app, component_class, component_name, opts = {})
click to toggle source
# File lib/roda/plugins/components.rb, line 98 def initialize app, component_class, component_name, opts = {}, block @app = app @component_class = component_class @component_name = component_name @component_opts = opts @cache = Roda::RodaCache.new @_block = block end
Public Instance Methods
block()
click to toggle source
# File lib/roda/plugins/components.rb, line 173 def block @_block end
display(&block)
click to toggle source
# File lib/roda/plugins/components.rb, line 115 def display &block on 'display', &block end
dom()
click to toggle source
# File lib/roda/plugins/components.rb, line 133 def dom cache[:dom] ||= comp_cache[:dom].dup end
dom_html()
click to toggle source
# File lib/roda/plugins/components.rb, line 137 def dom_html dom.to_html end
html() { || ... }
click to toggle source
# File lib/roda/plugins/components.rb, line 119 def html &block comp_cache[:html_loaded] ||= begin comp_cache[:html] ||= yield true end end
on(name) { |component_opts || {}| ... }
click to toggle source
# File lib/roda/plugins/components.rb, line 107 def on name, &block name = name.to_s if name == component_opts[:call].to_s throw :halt, yield(component_opts[:locals] || {}) end end
set_tmpl(name, value, keep = false)
click to toggle source
# File lib/roda/plugins/components.rb, line 145 def set_tmpl name, value, keep = false comp_tmpl[name] = value value.remove unless keep end
setup(&block)
click to toggle source
# File lib/roda/plugins/components.rb, line 126 def setup &block comp_cache[:ran_setup] ||= begin block.call comp_dom, comp_tmpl true end end
tmpl(name)
click to toggle source
# File lib/roda/plugins/components.rb, line 141 def tmpl name (cache[:tmpl] ||= {}).fetch(name){ comp_tmpl.fetch(name).dup } end
trigger(event, opts = {})
click to toggle source
# File lib/roda/plugins/components.rb, line 154 def trigger event, opts = {} event = event.to_s if opts.key?(:for) name = opts.delete(:for).to_s else name = component_name end if events = class_cache[:events][name] (events[event] || []).each do |e| if component_opts[:call] != e[:call] e_opts = opts.dup.merge({call: e[:call]}) app.component e[:component], e_opts end end end end
trigger_events()
click to toggle source
# File lib/roda/plugins/components.rb, line 150 def trigger_events trigger component_opts.dup.delete(:call), component_opts end
Private Instance Methods
class_cache()
click to toggle source
# File lib/roda/plugins/components.rb, line 187 def class_cache component_class.send(:cache) end
comp_dom()
click to toggle source
# File lib/roda/plugins/components.rb, line 179 def comp_dom comp_cache[:dom] ||= Nokogiri::HTML(comp_cache[:html]) end
comp_tmpl()
click to toggle source
# File lib/roda/plugins/components.rb, line 183 def comp_tmpl comp_cache[:tmpl] ||= {} end
component_cache()
click to toggle source
# File lib/roda/plugins/components.rb, line 191 def component_cache class_cache["#{component_name}_cache"] ||= {} end
Also aliased as: comp_cache