Module: DR::Eruby::BindingHelper

Extended by:
BindingHelper
Included in:
BindingHelper
Defined in:
lib/dr/base/eruby.rb

Constant Summary collapse

EMPTY_BINDING =

empty binding (at first) that stays the same and can be shared

empty_binding
BLANK_OBJECT =
Object.new

Instance Method Summary collapse

Instance Method Details

#add_variables(variables, _binding = empty_binding) ⇒ Object

add variables values to a binding; variables is a Hash



18
19
20
21
# File 'lib/dr/base/eruby.rb', line 18

def add_variables(variables, _binding=empty_binding)
  eval variables.collect{|k,v| "#{k} = variables[#{k.inspect}]; "}.join, _binding
  _binding
end

#empty_bindingObject

complement TOPLEVEL_BINDING



6
7
8
9
10
11
12
# File 'lib/dr/base/eruby.rb', line 6

def empty_binding
  #wraps into anonymous module so that 'def foo' do not pollute namespace
  Module.new do
    #regenerate a new binding
    return binding
  end
end

#local_extraction(local_keys, context_name: '_context') ⇒ Object

From Tilt/template.rb return a string extracting local_keys from a hash named _context



25
26
27
28
29
30
31
32
33
# File 'lib/dr/base/eruby.rb', line 25

def local_extraction(local_keys, context_name: '_context')
  local_keys.map do |k|
    if k.to_s =~ /\A[a-z_][a-zA-Z_0-9]*\z/
      "#{k} = #{context_name}[#{k.inspect}]"
    else
      raise "invalid locals key: #{k.inspect} (keys must be variable names)"
    end
  end.join("\n")+"\n"
end