Class: Templater::Variables
- Inherits:
-
OpenStruct
- Object
- OpenStruct
- Templater::Variables
- Defined in:
- lib/templater.rb
Overview
Indexing
Author: Stefan Rusterholz Contact: [email protected]> Version: 0.0.1 Date: 2007-10-12
About
Used by Templater to resolve variables.
Synopsis
tmpl = Variables.new(delegator, :variable => "content") { |exception|
do_something_with_exception
}
Instance Method Summary collapse
-
#initialize(delegator = nil, variables = {}, &on_error) ⇒ Variables
constructor
Arguments * delegator: All method calls and undefined variables are delegated to this object as method call.
-
#inspect ⇒ Object
:nodoc:.
-
#method_missing(m, *a, &b) ⇒ Object
:nodoc:.
Methods inherited from OpenStruct
#[], #[]=, #__hash__, #to_hash
Constructor Details
#initialize(delegator = nil, variables = {}, &on_error) ⇒ Variables
Arguments
-
delegator: All method calls and undefined variables are delegated to this object as method call.
-
variables: A hash with variables in it, keys must be Symbols.
-
&on_error: The block is yielded in case of an exception with the exception as argument
67 68 69 70 71 |
# File 'lib/templater.rb', line 67 def initialize(delegator=nil, variables={}, &on_error) super(variables) @delegator = delegator @on_error = on_error || RaiseExceptions end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(m, *a, &b) ⇒ Object
:nodoc:
73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/templater.rb', line 73 def method_missing(m, *a, &b) # :nodoc: if @table.key?(m) || m.to_s =~ /=$/ then super elsif @delegator && @delegator.respond_to?(m) then @delegator.send(m, *a, &b) if @delegator else raise NameError, "undefined local variable or method `#{m}'" end rescue Exception => e @on_error.call(e) end |
Instance Method Details
#inspect ⇒ Object
:nodoc:
85 86 87 |
# File 'lib/templater.rb', line 85 def inspect # :nodoc: @table.inspect end |