From: Christian Neukirchen Date: 2007-04-09T21:56:31+09:00 Subject: Re: can erb produce erb? Ken Bloom writes: > On Sun, 08 Apr 2007 16:30:11 +0900, Alex Young wrote: > >> Ken Bloom wrote: >>> On Sat, 07 Apr 2007 04:07:16 +0900, Tim Pease wrote: >>> >>>> On 4/6/07, talkin ruby wrote: >>>>> just wondering if you could do something like this... >>>>> >>>>> ERB.new( some_erb_string ).result # '<%= result %>' another erb >>>>> template >>>>> >>>>> so that way the result could be processed by another ERB.new >>>>> >>>>> >>>> You are an evil and twisted individual! ;) >>>> >>>> To answer your question, though, sure! ERb can do that. >>>> >>>> require 'erb' >>>> >>>> @blah = '<%= @not_blah %>' >>>> ERB.new( "blah <%= @blah %>" ).result #=> "blah <%= @not_blah %>" >>> >>> If you really want to be evil and twisted, what's the smallest self- >>> reproducing erb program you can write that doesn't read its own file. >>> >>> The following solution is illegal: >>> <%= open(__FILE__){|f| f.read} %> >> I think you mean "what's the smallest non-trivial self-reproducing erb >> program...": >> >> irb(main):012:0> ERB.new(' ').result >> => " " >> irb(main):013:0> ERB.new('').result >> => "" > > Come to think of it, ERB is way too easy a language. You have to define > non-trivial to mean "includes a <% and a %>" irb(main):001:0> ERB.new('>%%<').result => ">%%<" > Ken Bloom. PhD candidate. Linguistic Cognition Laboratory. -- Christian Neukirchen http://chneukirchen.org