lib/hieracles/formats/yaml.rb in hieracles-0.0.1 vs lib/hieracles/formats/yaml.rb in hieracles-0.0.2

- old
+ new

@@ -18,18 +18,51 @@ def modules(_) @node.modules.to_yaml end def params(args) - @node.params_tree(true).to_yaml + commented_yaml_tree(true) end def allparams(args) - @node.params_tree(false).to_yaml + commented_yaml_tree(false) end def modules(args) @node.modules.to_yaml + end + + + def commented_yaml_tree(without_common = true) + tree = @node.params_tree(without_common) + params = Hash[@node.params(without_common)] + mergetree('---', [], tree, params) + end + + def mergetree(output, key, leaf, params) + indent = ' ' * key.count + case leaf.class.name + when 'Hash' + leaf.each do |k, v| + output += "\n" + indent + k + ': ' + output = mergetree(output, key + [k], v, params) + end + when 'Array' + yaml = leaf.to_yaml[4..-1] + aryaml = yaml.each_line.map do |l| + indent + l + end + output += "\n" + indent + "# " + params[key.join('.')][0][:file] + output += "\n" + aryaml.join().chomp + when 'String' + output += leaf + if params["#{key.join('.')}"] + output += " # " + params[key.join('.')][0][:file] + else + raise "#{key}" + end + end + output end end end end