From 201ae59eacaff289a8a5bb45f7d301c1a490a119 Mon Sep 17 00:00:00 2001 From: Brice Figureau Date: Fri, 12 Jun 2009 23:24:36 +0200 Subject: Allow variable $0 to $9 to be interpolated, if ephemeral Signed-off-by: Brice Figureau --- lib/puppet/parser/scope.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'lib/puppet/parser') diff --git a/lib/puppet/parser/scope.rb b/lib/puppet/parser/scope.rb index 5b3c6d04a..71b9be27c 100644 --- a/lib/puppet/parser/scope.rb +++ b/lib/puppet/parser/scope.rb @@ -331,12 +331,17 @@ class Puppet::Parser::Scope ss = StringScanner.new(string) out = "" while not ss.eos? - if ss.scan(/^\$\{((\w*::)*\w+)\}|^\$((\w*::)*\w+)/) + if ss.scan(/^\$\{((\w*::)*\w+|[0-9]+)\}|^\$([0-9])|^\$((\w*::)*\w+)/) # If it matches the backslash, then just retun the dollar sign. if ss.matched == '\\$' out << '$' else # look the variable up - out << lookupvar(ss[1] || ss[3]).to_s || "" + # make sure $0-$9 are lookupable only if ephemeral + var = ss[1] || ss[3] || ss[4] + if var and var =~ /^[0-9]+$/ and not ephemeral?(var) + next + end + out << lookupvar(var).to_s || "" end elsif ss.scan(/^\\(.)/) # Puppet.debug("Got escape: pos:%d; m:%s" % [ss.pos, ss.matched]) -- cgit