class Volt::SubContext
A sub context takes in a hash of local variables that should be available in front of the current context. It basically proxies the local variables first, then failing those proxies the context.
SubContext
is also used for the attrs in controllers. You can pass return_nils to have missing values return nil (as in attrs).
Attributes
locals[R]
Public Class Methods
new(locals = nil, context = nil, return_nils = false)
click to toggle source
# File lib/volt/page/sub_context.rb, line 11 def initialize(locals = nil, context = nil, return_nils = false) @locals = locals.symbolize_keys if locals @context = context @return_nils = return_nils end
Public Instance Methods
inspect()
click to toggle source
# File lib/volt/page/sub_context.rb, line 21 def inspect "#<SubContext #{@locals.inspect} context:#{@context.inspect}>" end
method_missing(method_name, *args, &block)
click to toggle source
# File lib/volt/page/sub_context.rb, line 25 def method_missing(method_name, *args, &block) method_name = method_name.to_sym if @locals && @locals.key?(method_name) obj = @locals[method_name] # TODORW: Might get a normal proc, flag internal procs obj = obj.call(*args) if obj.is_a?(Proc) return obj elsif @return_nils && method_name[-1] != '=' return nil elsif @context return @context.send(method_name, *args, &block) end fail NoMethodError.new("undefined method `#{method_name}' for \"#{inspect}\":#{self.class}") end
respond_to?(method_name)
click to toggle source
# File lib/volt/page/sub_context.rb, line 17 def respond_to?(method_name) !!((@locals && @locals[method_name.to_sym]) || (@context && @context.respond_to?(method_name.to_sym))) end