Class: Temple::Mixins::CompiledDispatcher::DispatchNode Private
- Defined in:
- lib/temple/mixins/dispatcher.rb
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Instance Attribute Summary collapse
- #method ⇒ Object private
Instance Method Summary collapse
- #compile(level = 0, call_parent = nil) ⇒ Object private
-
#initialize ⇒ DispatchNode
constructor
private
A new instance of DispatchNode.
Constructor Details
#initialize ⇒ DispatchNode
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of DispatchNode.
82 83 84 85 |
# File 'lib/temple/mixins/dispatcher.rb', line 82 def initialize super { |hsh,key| hsh[key] = DispatchNode.new } @method = nil end |
Instance Attribute Details
#method ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
80 81 82 |
# File 'lib/temple/mixins/dispatcher.rb', line 80 def method @method end |
Instance Method Details
#compile(level = 0, call_parent = nil) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/temple/mixins/dispatcher.rb', line 87 def compile(level = 0, call_parent = nil) call_method = method ? (level == 0 ? "#{method}(*exp)" : "#{method}(*exp[#{level}..-1])") : call_parent if empty? raise 'Invalid dispatcher node' unless method call_method else code = String.new code << "case(exp[#{level}])\n" each do |key, child| code << "when #{key.inspect}\n " << child.compile(level + 1, call_method).gsub("\n".freeze, "\n ".freeze) << "\n".freeze end code << "else\n " << (call_method || 'exp') << "\nend" end end |