X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=3rdparty%2Fmodules%2Fstdlib%2Flib%2Fpuppet%2Ffunctions%2Ffact.rb;fp=3rdparty%2Fmodules%2Fstdlib%2Flib%2Fpuppet%2Ffunctions%2Ffact.rb;h=48736ad3f4fa9a35645a0696253f2d790e101795;hb=131e09855e065be940e104d9ab0f18940cc76257;hp=dfb048b5f61d4acddd8f6c674dfcd5142daa7e95;hpb=407d322498f4fde815abf381007fbecfe5c10b2b;p=mirror%2Fdsa-puppet.git diff --git a/3rdparty/modules/stdlib/lib/puppet/functions/fact.rb b/3rdparty/modules/stdlib/lib/puppet/functions/fact.rb index dfb048b5f..48736ad3f 100644 --- a/3rdparty/modules/stdlib/lib/puppet/functions/fact.rb +++ b/3rdparty/modules/stdlib/lib/puppet/functions/fact.rb @@ -19,9 +19,9 @@ Puppet::Functions.create_function(:fact) do end def to_dot_syntax(array_path) - array_path.map do |string| - string.include?('.') ? %Q{"#{string}"} : string - end.join('.') + array_path.map { |string| + string.include?('.') ? %("#{string}") : string + }.join('.') end def fact(fact_name) @@ -30,21 +30,20 @@ Puppet::Functions.create_function(:fact) do # Transform the dot-notation string into an array of paths to walk. Make # sure to correctly extract double-quoted values containing dots as single # elements in the path. - path = fact_name.scan(/([^."]+)|(?:")([^"]+)(?:")/).map {|x| x.compact.first } + path = fact_name.scan(%r{([^."]+)|(?:")([^"]+)(?:")}).map { |x| x.compact.first } walked_path = [] path.reduce(facts) do |d, k| return nil if d.nil? || k.nil? - case - when d.is_a?(Array) + if d.is_a?(Array) begin result = d[Integer(k)] - rescue ArgumentError => e + rescue ArgumentError => e # rubocop:disable Lint/UselessAssignment : Causes errors if assigment is removed. Puppet.warning("fact request for #{fact_name} returning nil: '#{to_dot_syntax(walked_path)}' is an array; cannot index to '#{k}'") result = nil end - when d.is_a?(Hash) + elsif d.is_a?(Hash) result = d[k] else Puppet.warning("fact request for #{fact_name} returning nil: '#{to_dot_syntax(walked_path)}' is not a collection; cannot walk to '#{k}'")