lib/hieracles/interpolate.rb in hieracles-0.3.2 vs lib/hieracles/interpolate.rb in hieracles-0.3.3
- old
+ new
@@ -1,19 +1,26 @@
module Hieracles
module Interpolate
def parse(data, values, interactive = false)
- data.gsub(/%\{(?:(scope|hiera|literal|alias)\(['"])?(?:::)?([^\}"']*)(?:["']\))?\}/) do |match|
+ data.gsub(regex) do |match|
if interactive && !values[$2.to_sym]
values[$2.to_sym] = ask_about($2)
values[$2.to_sym]
else
values[$2.to_sym]
end
end
end
+ def extract(data)
+ data.scan(regex).reduce([]) do |a, m|
+ a << m[1] unless a.include?(m[1])
+ a
+ end
+ end
+
def ask_about(var)
@@output.puts
@@output.puts "'#{var}' is not defined."
@@output.puts "Is it missing in your ENC source?"
@@output.puts "Maybe you should define a default value for that scope variable in your config file?"
@@ -24,9 +31,13 @@
# makes possible to set input and output
def setio(input=STDIN, output=STDOUT)
@@input = input
@@output = output
+ end
+
+ def regex
+ /%\{(?:(scope|hiera|literal|alias)\(['"])?(?:::)?([^\}"']*)(?:["']\))?\}/
end
end
end