Sha256: 96879575dffb4fc803d7fe5104b851bddede81426835e21fbab716dc3ef5296b

Contents?: true

Size: 831 Bytes

Versions: 1

Compression:

Stored size: 831 Bytes

Contents

# require 'active_support/core_ext'

module Csv2hash::StructureValidator
  class ValidationError < StandardError ; end

  def validate_structure!
    # binding.pry
    definition.structure_rules.each do |rule, options|
      begin
        rule_instance(rule, options).validate! data_source
      rescue => e
        self.errors << { y: nil, x: nil, message: e.message, key: nil }
        raise if break_on_failure
      end
    end
  end

  def rule_instance rule, options
    Csv2hash::StructureValidator.const_get(rule).new(options)
    # 'min_columns'.camelize.constantize.new
  end

  module Validator
    def validate! source
      source.index { |line| validate_line line }.tap do |line|
        raise Csv2hash::StructureValidator::ValidationError, error_message(line) unless line.nil?
      end
      true
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
csv2hash-0.6.0 lib/csv2hash/structure_validator.rb