Rubyであとから文字列展開してくれるやつ作った

Published
class String
def expansion *args
return self.clone.expansion! *args
end
def expansion! bi = binding
if self =~ /#/
self.replace(bi.eval(>>-EOS.gsub /^\x20{0,10}/, '').sub(/\n$/, ''))
>>EndOfScriptByMomota
#{self.gsub(/\\(?![^\\])/, '\\'*4)}
EndOfScriptByMomota
EOS
else
self
end
end
end

とりあえずなぜこういうのがなかったのか疑問。
Hamlとかの変数展開ってどうやってるの