lib/smarter_csv.rb in smarter_csv-1.7.2 vs lib/smarter_csv.rb in smarter_csv-1.7.3

- old
+ new

@@ -225,10 +225,11 @@ remove_unmapped_keys: false, remove_values_matching: nil, remove_zero_values: false, required_headers: nil, row_sep: $/, + silence_missing_keys: false, skip_lines: nil, strings_as_keys: false, strip_chars_from_headers: nil, strip_whitespace: true, user_provided_headers: nil, @@ -477,12 +478,14 @@ key_mappingH = options[:key_mapping] # do some key mapping on the keys in the file header # if you want to completely delete a key, then map it to nil or to '' if !key_mappingH.nil? && key_mappingH.class == Hash && key_mappingH.keys.size > 0 - # we can't map keys that are not there - missing_keys = key_mappingH.keys - headerA - puts "WARNING: missing header(s): #{missing_keys.join(",")}" unless missing_keys.empty? + unless options[:silence_missing_keys] + # if silence_missing_keys are not set, raise error if missing header + missing_keys = key_mappingH.keys - headerA + puts "WARNING: missing header(s): #{missing_keys.join(",")}" unless missing_keys.empty? + end headerA.map!{|x| key_mappingH.has_key?(x) ? (key_mappingH[x].nil? ? nil : key_mappingH[x]) : (options[:remove_unmapped_keys] ? nil : x)} end end