1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- ##
- ## $Release: 2.7.0 $
- ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
- ##
- module Erubis
- ##
- ## 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)
- ##
- class Context
- include Enumerable
- def initialize(hash=nil)
- hash.each do |name, value|
- self[name] = value
- end if hash
- end
- def [](key)
- return instance_variable_get("@#{key}")
- end
- def []=(key, value)
- return instance_variable_set("@#{key}", value)
- end
- def keys
- return instance_variables.collect { |name| name[1..-1] }
- end
- def each
- instance_variables.each do |name|
- key = name[1..-1]
- value = instance_variable_get(name)
- yield(key, value)
- end
- end
- def to_hash
- hash = {}
- self.keys.each { |key| hash[key] = self[key] }
- return hash
- end
- 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
- end
- end
|