From: SEKI Masatoshi Date: 2012-06-21T07:49:37+09:00 Subject: Re: Does ERB have recursive template support? > > Same here: > > #!/opt/bin/ruby19 > > require 'erb' > > def rt(s) > e = ERB.new(s) > recursive = lambda {|a, level| e.result(binding)} > end > > arr = [ > 1, > 2, > [3], > [4, [5]], > 6 > ] > > e = rt %Q{ > <%= ' ' * level %>open level=<%= level %> > <% > if Enumerable === a > a.each do |x| > %><%= recursive[x, level + 1] %><% > end > else > %><%= ' ' * level %><%= a %><% > end > %> > <%= ' ' * level %>close level=<%= level %> > } > > p arr > puts e[arr, 0] > > Kind regards > > robert I like ERB#def_method. #!/opt/bin/ruby19 require 'erb' class View ERB.new(<open level=<%= level %> <% if Enumerable === a a.each do |x| %><%= draw(x, level + 1) %><% end else %><%= ' ' * level %><%= a %><% end %> <%= ' ' * level %>close level=<%= level %> EOS end arr = [ 1, 2, [3], [4, [5]], 6 ] view = View.new p arr puts view.draw(arr)