# File lib/hiera/backend.rb, line 73 def parse_string(data, scope, extra_data={}) return nil unless data tdata = data.clone if tdata.is_a?(String) while tdata =~ /%\{(.+?)\}/ begin var = $1 val = "" # Puppet can return :undefined for unknown scope vars, # If it does then we still need to evaluate extra_data # before returning an empty string. if scope[var] && scope[var] != :undefined val = scope[var] elsif extra_data[var] val = extra_data[var] end end until val != "" || var !~ /::(.+)/ tdata.gsub!(/%\{(::)?#{var}\}/, val) end end return tdata end