How to do this

I don't know how to explain so I will just code:

template = 'some text #{variable}' # single quotes for reason
variable = 'filled'
res = some_method(template)

Here, res should have value 'some text filled'.

Is there an easy way doing this in ruby. Hard way is of course parsing
and inserting text with my own method.

by
TheR

···

--
Posted via http://www.ruby-forum.com/.

Using ERB, here is a pretty straight forward cheatsheet/examples for you:
http://github.com/JoshCheek/JoshsRubyKickstart/blob/master/cheatsheets/erb-embedded_ruby.rb

require 'erb'

def some_method(template)
  ERB.new( template , 0 , '>' ).result
end

template = 'some text <%= variable %>'
variable = 'filled'
res = some_method(template)

res # => "some text filled"

···

On Tue, Oct 12, 2010 at 8:02 AM, Damjan Rems <d_rems@yahoo.com> wrote:

I don't know how to explain so I will just code:

template = 'some text #{variable}' # single quotes for reason
variable = 'filled'
res = some_method(template)

Here, res should have value 'some text filled'.

Is there an easy way doing this in ruby. Hard way is of course parsing
and inserting text with my own method.

by
TheR

--
Posted via http://www.ruby-forum.com/\.

I would consider using double quotes an "easy way". Either way, some
piece of code needs to to the parsing. If you only ever want to fill
in a single value you could as well use (s)printf.

Btw, parsing can be as easy as

def replace(template, values)
  template.gsub /(?<!\\)#\{([^}]*)\}/ do
    values[$1]
  end
end

template = 'foo \\#{bar}-#{bingo}-#{bongo}'
x = replace template, "bar" => "1", "bongo" => "2"
p template, x

Cheers

robert

···

On Tue, Oct 12, 2010 at 3:02 PM, Damjan Rems <d_rems@yahoo.com> wrote:

I don't know how to explain so I will just code:

template = 'some text #{variable}' # single quotes for reason
variable = 'filled'
res = some_method(template)

Here, res should have value 'some text filled'.

Is there an easy way doing this in ruby. Hard way is of course parsing
and inserting text with my own method.

--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

You could do this:

#note the double quotes inside the single ones
template = '"some text #{variable}"'
variable = 'filled'
res = eval template

A better way could be to use ERB (included in the standard library):
require 'erb'
template = ERB.new "some text <%= variable %>"
variable = 'filled'
res = template.result

I hope this helps

Stefano

···

On Tuesday 12 October 2010, Damjan Rems wrote:

>I don't know how to explain so I will just code:
>
>template = 'some text #{variable}' # single quotes for reason
>variable = 'filled'
>res = some_method(template)
>
>Here, res should have value 'some text filled'.
>
>Is there an easy way doing this in ruby. Hard way is of course parsing
>and inserting text with my own method.
>
>by
>TheR

Robert Klemme wrote in post #949495:

Btw, parsing can be as easy as

def replace(template, values)
  template.gsub /(?<!\\)#\{([^}]*)\}/ do
    values[$1]
  end
end

template = 'foo \\#{bar}-#{bingo}-#{bongo}'
x = replace template, "bar" => "1", "bongo" => "2"
p template, x

Robert thank you for this.

Ruby really is an amazing language. And after five years I still get
puzzled how some things can be so simple.

by
TheR

···

--
Posted via http://www.ruby-forum.com/\.