class Slim::LogicLess::Context::Scope

Attributes

dict[W]
lookup[R]

Public Class Methods

new(dict, lookup, parent = nil) click to toggle source
# File lib/slim/logic_less/context.rb, line 59
def initialize(dict, lookup, parent = nil)
  @dict, @lookup, @parent = dict, lookup, parent
end

Public Instance Methods

[](name) click to toggle source
# File lib/slim/logic_less/context.rb, line 80
def [](name)
  @lookup.each do |lookup|
    case lookup
    when :method
      return @dict.public_send(name) if @dict.respond_to?(name, false)
    when :symbol
      return @dict[name] if has_key?(name)
    when :string
      return @dict[name.to_s] if has_key?(name.to_s)
    when :instance_variable
      var_name = "@#{name}"
      return @dict.instance_variable_get(var_name) if instance_variable?(var_name)
    end
  end
  @parent[name] if @parent
end
lambda(name, &block) click to toggle source
# File lib/slim/logic_less/context.rb, line 63
def lambda(name, &block)
  @lookup.each do |lookup|
    case lookup
    when :method
      return @dict.public_send(name, &block) if @dict.respond_to?(name, false)
    when :symbol
      return @dict[name].call(&block) if has_key?(name)
    when :string
      return @dict[name.to_s].call(&block) if has_key?(name.to_s)
    when :instance_variable
      var_name = "@#{name}"
      return @dict.instance_variable_get(var_name).call(&block) if instance_variable?(var_name)
    end
  end
  @parent.lambda(name) if @parent
end
to_s() click to toggle source
# File lib/slim/logic_less/context.rb, line 97
def to_s
  @dict.to_s
end

Private Instance Methods

has_key?(name) click to toggle source
# File lib/slim/logic_less/context.rb, line 103
def has_key?(name)
  @dict.respond_to?(:has_key?) && @dict.has_key?(name)
end
instance_variable?(name) click to toggle source
# File lib/slim/logic_less/context.rb, line 107
def instance_variable?(name)
  begin
    @dict.instance_variable_defined?(name)
  rescue NameError
    false
  end
end