class Cloaca::Operations::CheckRowValuesUnique
Public Class Methods
new( case_sensitive: false, column_delimiter:, index: 0, input:, output:, ** )
click to toggle source
# File lib/cloaca/operations/check_row_values_unique.rb, line 4 def initialize( case_sensitive: false, column_delimiter:, index: 0, input:, output:, ** ) @case_sensitive = case_sensitive @column_delimiter = column_delimiter @index = index @input = input @output = output end
Public Instance Methods
run!()
click to toggle source
# File lib/cloaca/operations/check_row_values_unique.rb, line 19 def run! duplicates = [] @input.each_with_index do |line, index| if @index == index values = line.strip.split(@column_delimiter) if !@case_sensitive values = values.group_by { |x| x.downcase.to_s } else values = values.group_by(&:to_s) end duplicates = values.select { |k,v| v.count > 1 }.map { |k, v| v.first }.sort if duplicates.any? raise("duplicate value#{'s' if duplicates.count > 1} found: #{duplicates.join(', ')}") end end @output << line end end