class Slim::LogicLess::Context

@api private

Public Class Methods

new(dict, lookup) click to toggle source
# File lib/slim/logic_less/context.rb, line 6
def initialize(dict, lookup)
  @scope = [Scope.new(dict, lookup)]
end

Public Instance Methods

[](name) click to toggle source
# File lib/slim/logic_less/context.rb, line 10
def [](name)
  scope[name]
end
inverted_section(name) { || ... } click to toggle source
# File lib/slim/logic_less/context.rb, line 44
def inverted_section(name)
  value = scope[name]
  yield if !value || (value.respond_to?(:empty?) && value.empty?)
end
lambda(name) { || ... } click to toggle source
# File lib/slim/logic_less/context.rb, line 14
def lambda(name)
  scope.lambda(name) do |*dict|
    if dict.empty?
      yield
    else
      new_scope do
        dict.inject(''.dup) do |result, d|
          scope.dict = d
          result << yield
        end
      end
    end
  end
end
section(name) { || ... } click to toggle source
# File lib/slim/logic_less/context.rb, line 29
def section(name)
  if dict = scope[name]
    if !dict.respond_to?(:has_key?) && dict.respond_to?(:each)
      new_scope do
        dict.each do |d|
          scope.dict = d
          yield
        end
      end
    else
      new_scope(dict) { yield }
    end
  end
end
to_s() click to toggle source
# File lib/slim/logic_less/context.rb, line 49
def to_s
  scope.to_s
end

Private Instance Methods

new_scope(dict = nil) { || ... } click to toggle source
# File lib/slim/logic_less/context.rb, line 120
def new_scope(dict = nil)
  @scope << Scope.new(dict, scope.lookup, scope)
  yield
ensure
  @scope.pop
end
scope() click to toggle source
# File lib/slim/logic_less/context.rb, line 116
def scope
  @scope.last
end