Can erb produce erb?

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! :wink:

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

···

On 4/6/07, talkin ruby <rubytalk.heidmotron@gmail.com> 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

@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 Becker IV

> just wondering if you could do something like this...
>
> ERB.new( some_erb_string ).result # '<%= result %>' another erb

template

···

On 4/6/07, Tim Pease <tim.pease@gmail.com> wrote:

On 4/6/07, talkin ruby <rubytalk.heidmotron@gmail.com> wrote:
>
> so that way the result could be processed by another ERB.new
>

You are an evil and twisted individual! :wink:

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

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

···

On Sat, 07 Apr 2007 04:07:16 +0900, Tim Pease wrote:

On 4/6/07, talkin ruby <rubytalk.heidmotron@gmail.com> 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! :wink:

To answer your question, though, sure! ERb can do that.

require 'erb'

@blah = '<%= @not_blah %>'
ERB.new( "blah <%= @blah %>" ).result #=> "blah <%= @not_blah %>"

--
Ken Bloom. PhD candidate. Linguistic Cognition Laboratory.
Department of Computer Science. Illinois Institute of Technology.
http://www.iit.edu/~kbloom1/

thanks! that is exactly what I needed!

···

On 4/6/07, RubyTalk@gmail.com <rubytalk@gmail.com> wrote:

@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 Becker IV

On 4/6/07, Tim Pease <tim.pease@gmail.com> wrote:
> On 4/6/07, talkin ruby <rubytalk.heidmotron@gmail.com> 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! :wink:
>
> 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
>

Ken Bloom 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! :wink:

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
=> ""

:slight_smile:

···

On Sat, 07 Apr 2007 04:07:16 +0900, Tim Pease wrote:

On 4/6/07, talkin ruby <rubytalk.heidmotron@gmail.com> wrote:

--
Alex

Ken Bloom 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! :wink:

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

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 :slight_smile:

···

On Sat, 07 Apr 2007 04:07:16 +0900, Tim Pease wrote:

On 4/6/07, talkin ruby <rubytalk.heidmotron@gmail.com> wrote:

--
Alex

Come to think of it, ERB is way too easy a language. You have to define
non-trivial to mean "includes a <% and a %>"

···

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 <rubytalk.heidmotron@gmail.com> 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! :wink:

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
=> ""

--
Ken Bloom. PhD candidate. Linguistic Cognition Laboratory.
Department of Computer Science. Illinois Institute of Technology.
http://www.iit.edu/~kbloom1/

Ken Bloom <kbloom@gmail.com> writes:

Ken Bloom 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! :wink:

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
=> ">%%<"

···

On Sun, 08 Apr 2007 16:30:11 +0900, Alex Young wrote:

On Sat, 07 Apr 2007 04:07:16 +0900, Tim Pease wrote:

On 4/6/07, talkin ruby <rubytalk.heidmotron@gmail.com> wrote:

Ken Bloom. PhD candidate. Linguistic Cognition Laboratory.

--
Christian Neukirchen <chneukirchen@gmail.com> http://chneukirchen.org

Hey, that doesn't count! It doesn't contain '<%' or '%>'. How about this:

  <%=File.new($FILENAME).readlines%>

···

On 4/9/07, Christian Neukirchen <chneukirchen@gmail.com> wrote:

Ken Bloom <kbloom@gmail.com> writes:
> 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 <chneukirchen@gmail.com> http://chneukirchen.org