From: Robert Klemme Date: 2011-02-09T19:39:43+09:00 Subject: Re: Proposal: String#interpolate for safe templating On Wed, Feb 9, 2011 at 10:35 AM, Samuel Williams wrote: > 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.... 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 -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/