Sha256: b6de3292045a72d62945eaf010f7833a300fc117fa8b0709273a6d8a083e1764

Contents?: true

Size: 811 Bytes

Versions: 1

Compression:

Stored size: 811 Bytes

Contents

# require 'active_support/core_ext'

module Csv2hash::StructureValidator
  class ValidationError < StandardError ; end

  def validate_structure!
    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 exception_mode
      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.3.0 lib/csv2hash/structure_validator.rb