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.
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\.\.\.\.
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
···
On Wed, Feb 9, 2011 at 10:35 AM, Samuel Williams <space.ship.traveller@gmail.com> wrote:
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