Sha256: 12ab54d3394f34a5a8cffc135d3511d20ed169c5ed7fbfb5017bd966d22cacda

Contents?: true

Size: 520 Bytes

Versions: 1

Compression:

Stored size: 520 Bytes

Contents

require 'forwardable'

module RussianPost
  module Barcode
    class Base
      extend Forwardable

      def_delegator :barcode, :=~

      attr_reader :barcode, :digits

      def self.format
        /.*/
      end

      def initialize(barcode)
        @barcode = barcode.strip.upcase
        @digits  = barcode.scan(/\d/).map { |d| d.to_i }
      end

      def valid?
        (barcode =~ self.class.format || false) && digits.last == checkdigit
      end

      def to_s
        barcode
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
russianpost-0.7.0 lib/russianpost/barcode/base.rb