Module: Zena::Use::Recursion::ZafuMethods
- Defined in:
- lib/zena/use/recursion.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#r_include ⇒ Object
recursion.
Class Method Details
.included(base) ⇒ Object
5 6 7 8 |
# File 'lib/zena/use/recursion.rb', line 5 def self.included(base) base.before_process :recursion_prepare base.after_process :recursion_call end |
Instance Method Details
#r_include ⇒ Object
recursion
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/zena/use/recursion.rb', line 11 def r_include return '' if @context[:saved_template] return parser_error("missing 'template' or 'part' parameter") if !@params[:part] recursion = get_context_var('recursion', @params[:part]) return parser_error("no parent named '#{@params[:part]}'") unless recursion klass = recursion[:klass] if klass.kind_of?(Array) return parser_error("node context '#{node.klass}' incompatible with '[#{klass}]'") unless node.list_context? return parser_error("node context '[#{node.klass}]' incompatible with '[#{klass}]'") unless node.klass.first <= klass.first else return parser_error("node context '[#{node.klass}]' incompatible with '#{klass}'") if node.list_context? return parser_error("node context '#{node.klass}' incompatible with '#{klass}'") unless node.klass <= klass end depth = get_context_var('recursion', 'depth') "<% #{recursion[:proc_name]}.call(#{depth}+1,#{node}) %>" end |