Forum: Ruby can erb produce erb?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
talkin ruby (Guest)
on 2007-04-06 22:36
(Received via mailing list)
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
Tim P. (Guest)
on 2007-04-06 23:08
(Received via mailing list)
On 4/6/07, talkin ruby <removed_email_address@domain.invalid> 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 %>"


Blessings,
TwP
(Guest)
on 2007-04-07 00:35
(Received via mailing list)
@maybe= val.nil? ? true : false

blah <%%=  <%= @maybe %>  %>

I use this format in generators for rails.  I dont know if it is as
clean
looking for short example but for full rhtml pages it works well.

Stephen B. IV

On 4/6/07, Tim P. <removed_email_address@domain.invalid> wrote:
> On 4/6/07, talkin ruby <removed_email_address@domain.invalid> wrote:
> > just wondering if you could do something like this...
> >
> > ERB.new( some_erb_string ).result  #  '<%= result %>'  another erb
template
talkin ruby (Guest)
on 2007-04-07 00:48
(Received via mailing list)
thanks! that is exactly what I needed!
Ken B. (Guest)
on 2007-04-08 06:10
(Received via mailing list)
On Sat, 07 Apr 2007 04:07:16 +0900, Tim P. wrote:

>
> 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} %>

--Ken
Alex Y. (Guest)
on 2007-04-08 11:31
(Received via mailing list)
Ken B. wrote:
>>>
> 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
=> ""

:-)
Alex Y. (Guest)
on 2007-04-08 13:05
(Received via mailing list)
Ken B. wrote:
>>>
> reproducing erb program you can write that doesn't read its own file.
>
> The following solution is illegal:
> <%= open(__FILE__){|f| f.read} %>

Drat.  This nearly works:

<%=s=";\"<%=s=\#{s.inspect}\#{s}\"%\>";"<%=s=#{s.inspect}#{s}"%>

The only reason it doesn't is that ERB barfs on '%>' in a string inside
a <%= %> block, while String#inspect ignores it.  This requires...
trickery.

Luckily, we have trickery on hand.  When in doubt, reverse the data:

<%=s=">%\"}esrever.s{#}tcepsni.s{#=s=%<\";";"<%=s=#{s.inspect}#{s.reverse}"%>

That's 77 characters by my count.  77 characters of pure, twisted, evil
:-)
Ken B. (Guest)
on 2007-04-08 21:10
(Received via mailing list)
On Sun, 08 Apr 2007 16:30:11 +0900, Alex Y. wrote:

>>>>
>> If you really want to be evil and twisted, what's the smallest self-
> => ""
Come to think of it, ERB is way too easy a language. You have to define
non-trivial to mean "includes a <% and a %>"
Christian N. (Guest)
on 2007-04-09 16:56
(Received via mailing list)
Ken B. <removed_email_address@domain.invalid> writes:

>>>>>
>>>> ERB.new( "blah <%= @blah %>" ).result    #=>  "blah <%= @not_blah %>"
>> => " "
>> 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
=> ">%%<"
Harrison R. (Guest)
on 2007-04-10 22:05
(Received via mailing list)
On 4/9/07, Christian N. <removed_email_address@domain.invalid> wrote:
>
Hey, that doesn't count! It doesn't contain '<%' or '%>'.  How about
this:

  <%=File.new($FILENAME).readlines%>
This topic is locked and can not be replied to.