Sha256: a6f8976b206d7aee141ad8019944e22bae3209c5be73cddfc09e05b832e21cb2

Contents?: true

Size: 1014 Bytes

Versions: 4

Compression:

Stored size: 1014 Bytes

Contents

require 'gs1/validations/check_digit_validation'
require 'gs1/validations/date_validation'
require 'gs1/validations/length_validation'

module GS1
  # Module for handling validations.
  #
  module Validations
    def self.included(base)
      base.extend ClassMethods
      base.send :include, InstanceMethods
      base.send :include, CheckDigitValidation
      base.send :include, DateValidation
      base.send :include, LengthValidation
    end

    # Adding validation class methods.
    #
    module ClassMethods
      def valid_data?(data)
        new(data).valid?
      end
    end

    # Adding validation instance methods.
    #
    module InstanceMethods
      def valid?
        errors.clear

        validate

        errors.empty?
      end

      def errors
        @errors ||= []
      end

      def validate
        self.class.definitions.each_key do |definition|
          next if definition == :separator

          public_send("validate_#{definition}")
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
gs1-1.1.0 lib/gs1/validations.rb
gs1-1.0.0 lib/gs1/validations.rb
gs1-0.1.8 lib/gs1/validations.rb
gs1-0.1.7 lib/gs1/validations.rb