class Eql::Proxy
Proxy
class proxies adapaters helpers and params to a template
Public Class Methods
generate(adapter)
click to toggle source
Generate a proxy class for given adapter
@param [Eql::Adapters::Base] adapter
@return [Eql::Proxy] returns generated class
# File lib/eql/proxy.rb, line 74 def generate(adapter) generated[adapter.class] ||= begin helpers = AdapterFactory.adapter_helpers(adapter) Class.new(self) do helpers.each { |h| include h } end end end
generated()
click to toggle source
Cached generated proxy classes
@return [Hash{Symbol => Eql::Proxy}]
# File lib/eql/proxy.rb, line 63 def generated @generated ||= {} end
new(builder, params = nil)
click to toggle source
@param [Eql::Builder] builder @param [Object] params template's params to proxy
# File lib/eql/proxy.rb, line 10 def initialize(builder, params = nil) @builder = builder @params = params if @params.is_a?(Hash) @params = params.keys.each_with_object({}) do |key, ret| ret[key.respond_to?(:to_sym) ? key.to_sym : key] = params[key] end end end
Public Instance Methods
get_binding()
click to toggle source
Get proxy binding
@return [Binding]
# File lib/eql/proxy.rb, line 50 def get_binding # binding.name # => :binding # if we have variable with the 'name' name we need to make a closure name = send(:name) if respond_to?(:name) binding end
method_missing(name, *args, &block)
click to toggle source
# File lib/eql/proxy.rb, line 34 def method_missing(name, *args, &block) return @params[name] if @params.is_a?(Hash) && @params.key?(name) @params.send(name, *args, &block) end
render(tmpl, params = @params)
click to toggle source
Render partial template
@param [String] tmpl partial's name @param [Object] params template's params
@return [String] returns rendered template
# File lib/eql/proxy.rb, line 28 def render(tmpl, params = @params) b = @builder.clone b.load(tmpl, params) b.render end
respond_to_missing?(name, *)
click to toggle source
Calls superclass method
# File lib/eql/proxy.rb, line 39 def respond_to_missing?(name, *) @params.is_a?(Hash) && @params.key?(name) || @params.respond_to?(name) || super end