class Inspec::Resources::CsvConfig
Public Instance Methods
parse(content)
click to toggle source
override the parse method from JsonConfig
Assuming a header row of name,col1,col2, it will output an array of hashes like so:
[ { 'name' => 'row1', 'col1' => 'value1', 'col2' => 'value2' }, { 'name' => 'row2', 'col1' => 'value3', 'col2' => 'value4' } ]
# File lib/inspec/resources/csv.rb, line 22 def parse(content) require "csv" unless defined?(CSV) # convert empty field to nil CSV::Converters[:blank_to_nil] = lambda do |field| field && field.empty? ? nil : field end # implicit conversion of values csv = CSV.new(content, headers: true, converters: %i{all blank_to_nil}) # convert to hash csv.to_a.map(&:to_hash) rescue => e raise Inspec::Exceptions::ResourceFailed, "Unable to parse CSV: #{e.message}" end
value(key)
click to toggle source
override the value method from JsonConfig
The format of the CSV hash as created by parse
is very different than what the YAML, JSON, and INI resources create, so using the value
method from JsonConfig
(which uses ObjectTraverser.extract_value
) doesn't make sense here.
# File lib/inspec/resources/csv.rb, line 44 def value(key) @params.map { |x| x[key.first.to_s] }.compact end
Private Instance Methods
resource_base_name()
click to toggle source
used by JsonConfig
to build up a full to_s method based on whether a file path, content, or command was supplied.
# File lib/inspec/resources/csv.rb, line 52 def resource_base_name "CSV" end