class Idcf::Cli::Lib::Convert::Filter::FieldFilter
filter fields
Constants
- MSG_NO_TARGETS
Public Instance Methods
filter(data, condition)
click to toggle source
filter
@param data [Hash] @param condition [String] @return Hash
# File lib/idcf/cli/lib/convert/filter/field_filter.rb, line 16 def filter(data, condition) return data if condition.empty? cli_error(MSG_NO_DATA) unless [Array, Hash].include?(data.class) return extraction(data, condition) if data.class == Hash recursion(data, condition) end
Protected Instance Methods
check_extraction(data, condition)
click to toggle source
# File lib/idcf/cli/lib/convert/filter/field_filter.rb, line 55 def check_extraction(data, condition) no_targets = [] condition.split(',').each do |key| next if key.empty? no_targets << key unless data.key?(key) end return nil if no_targets.empty? cli_error(format(MSG_NO_TARGETS, field: no_targets.join(','))) end
extraction(data, condition)
click to toggle source
# File lib/idcf/cli/lib/convert/filter/field_filter.rb, line 42 def extraction(data, condition) check_extraction(data, condition) result = {} condition.split(',').each do |key| next if key.blank? val = data[key] flg = @options[:table_flag] && [Array, Hash].include?(val.class) result[key] = flg ? val.to_s : val end result end
recursion(values, condition)
click to toggle source
# File lib/idcf/cli/lib/convert/filter/field_filter.rb, line 26 def recursion(values, condition) return values unless values.class == Array [].tap do |result| values.each do |data| case data when Array result << recursion(data, condition) when Hash result << extraction(data, condition) else cli_error(MSG_NO_DATA) end end end end