Hi,
I’m curious if anyone has considered a method called interpolate:
class String
def interpolate(binding, filename, lineno)
… magic …
end
end
It would have a similar effect as %Q, but the input would already exist
as a string rather than being parsed. This would avoid lots of escaping
issues. i.e.
eval("%Q{" + buffer + “}”) is fine as long as buffer doesn’t contain {
or } in the wrong place…
Does this seem useful? I’m personally working on a template system and
would find such a function very helpful. Not sure where to start if I
was going to implement it - I downloaded the 1.9.2 source code but
couldn’t really find out where I’d add the code.
Kind regards,
Samuel
On Wed, Feb 9, 2011 at 10:35 AM, Samuel W.
[email protected] wrote:
It would have a similar effect as %Q, but the input would already exist as a
string rather than being parsed. This would avoid lots of escaping issues. i.e.
eval(“%Q{” + buffer + “}”) is fine as long as buffer doesn’t contain { or }
in the wrong place…
Well, you can do
buffer.gsub(%r<[#{}]>, ‘\\\&’)
but that is probably not what you want. 
Does this seem useful? I’m personally working on a template system and would
find such a function very helpful. Not sure where to start if I was going to
implement it - I downloaded the 1.9.2 source code but couldn’t really find out
where I’d add the code.
I am not sure I understand how that would resolve your escaping
problem: the method in question cannot know whether you want specific
characters (namely #{ and }) as they are or as meta characters. Am I
missing something?
Kind regards
robert
Samuel W. wrote in post #980514:
Does this seem useful? I’m personally working on a template system and
would find such a function very helpful.
Of course if this is a programming exercise it’s worthwhile for the
learning experience, but I hope you realise there are many templating
systems already out there 
First hit for “ruby templating” in google:
http://www.hokstad.com/mini-reviews-of-19-ruby-template-engines.html
I thought I had come across one which used #{…} style interpolation,
but I can’t remember where now. I might have been imagining it.
Brian C. wrote in post #980620:
First hit for “ruby templating” in google:
Mini reviews of 19 Ruby template engines
… and that’s not even complete. It doesn’t mention “mustache” for
instance:
I thought I had come across one which used #{…} style interpolation,
but I can’t remember where now. I might have been imagining it.
It might have been Ezamar.