class DR::Eruby::Context
Copy/Pasted from erubis context.rb # context object for Engine#evaluate
ex.
template = <<'END' Hello <%= @user %>! <% for item in @list %> - <%= item %> <% end %> END context = Erubis::Context.new(:user=>'World', :list=>['a','b','c']) # or # context = Erubis::Context.new # context[:user] = 'World' # context[:list] = ['a', 'b', 'c'] eruby = Erubis::Eruby.new(template) print eruby.evaluate(context)
Public Class Methods
new(hash=nil)
click to toggle source
# File lib/dr/base/eruby.rb, line 230 def initialize(hash=nil) hash.each do |name, value| self[name] = value end if hash end
Public Instance Methods
[](key)
click to toggle source
# File lib/dr/base/eruby.rb, line 236 def [](key) return instance_variable_get("@#{key}") end
[]=(key, value)
click to toggle source
# File lib/dr/base/eruby.rb, line 240 def []=(key, value) return instance_variable_set("@#{key}", value) end
each() { |key, value| ... }
click to toggle source
# File lib/dr/base/eruby.rb, line 248 def each instance_variables.each do |name| key = name[1..-1] value = instance_variable_get(name) yield(key, value) end end
keys()
click to toggle source
# File lib/dr/base/eruby.rb, line 244 def keys return instance_variables.collect { |name| name[1..-1] } end
to_h()
click to toggle source
Was to_hash, but changed to 'to_h' in commit 25d0e1e4b1a4ada40fd64945eb79823ea074d030 Indeed otherwise passing it to 'evaluate' it get interpreted as the options rather than as a context cf bugs.ruby-lang.org/issues/12884 corrected in ruby 2.4.1?
# File lib/dr/base/eruby.rb, line 260 def to_h hash = {} self.keys.each { |key| hash[key] = self[key] } return hash end
update(context_or_hash)
click to toggle source
# File lib/dr/base/eruby.rb, line 266 def update(context_or_hash) arg = context_or_hash if arg.is_a?(Hash) arg.each do |key, val| self[key] = val end else arg.instance_variables.each do |varname| key = varname[1..-1] val = arg.instance_variable_get(varname) self[key] = val end end end