class CsvCop::Cop::Lint::DeplicatedElementInOneColumn

Constants

MSG

Public Class Methods

config_key() click to toggle source
# File lib/csvcop/cop/uniq_column.rb, line 16
def self.config_key
  self.name.split("::").last.to_sym
end
enable?(config) click to toggle source
# File lib/csvcop/cop/uniq_column.rb, line 12
def self.enable?(config)
  config[:AllCops][config_key][:Enable]
end
new(csv, config) click to toggle source
# File lib/csvcop/cop/uniq_column.rb, line 7
def initialize(csv, config)
  @csv = csv
  @config = config
end

Public Instance Methods

run() click to toggle source
# File lib/csvcop/cop/uniq_column.rb, line 20
def run
  return false unless DeplicatedElementInOneColumn.enable?(@config)
  on_ensure
end

Private Instance Methods

ensure_deplicated_elementes() click to toggle source
# File lib/csvcop/cop/uniq_column.rb, line 35
def ensure_deplicated_elementes
  msg = ""
  by_col_csv = @csv.by_col
  by_col_csv.each_with_index do | col, col_index |
    uniq_col = col.flatten.map{|v| v.to_s}.uniq
    col = stringify_values(col.flatten)
    
    uniq_col.each do | uniq_col_row | 
      if col.count(uniq_col_row) > 1
        msg.concat("column number:#{col_index}, #{uniq_col_row} is deplicated.\n")
      end
    end
  end

  msg
end
on_ensure() click to toggle source
# File lib/csvcop/cop/uniq_column.rb, line 26
def on_ensure
  msg = ensure_deplicated_elementes
  unless msg.empty?
    return "ununiqness element.\n#{msg}"
  end

  false
end
stringify_values(array) click to toggle source
# File lib/csvcop/cop/uniq_column.rb, line 52
def stringify_values(array)
  array.map{|v| v.to_s}
end