Class: BarcodeValidation::DigitSequence

Inherits:
Array
  • Object
show all
Extended by:
Forwardable
Includes:
Mixin::ValueObject
Defined in:
lib/barcodevalidation/digit_sequence.rb

Direct Known Subclasses

GTIN

Constant Summary collapse

ArgumentError =
Error::ArgumentErrorClass.new(DigitSequence)

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Mixin::ValueObject

#eql?, included, #inspect, #pretty_print

Constructor Details

#initialize(values) ⇒ DigitSequence

Returns a new instance of DigitSequence.

Raises:



22
23
24
25
26
# File 'lib/barcodevalidation/digit_sequence.rb', line 22

def initialize(values)
  values = cast(values)
  raise ArgumentError, values unless values.respond_to? :map
  super(values.map { |value| BarcodeValidation::Digit.new(value) })
end

Class Method Details

.cast(input) ⇒ Object



16
17
18
19
20
# File 'lib/barcodevalidation/digit_sequence.rb', line 16

def self.cast(input)
  input = input.to_s if input.is_a? Integer
  input = input.chars if input.is_a? String
  input
end

.memoization_key(input) ⇒ Object

Memoize constructor based on the integer value given



12
13
14
# File 'lib/barcodevalidation/digit_sequence.rb', line 12

def self.memoization_key(input, *)
  input.respond_to?(:join) ? input.join : input.to_s
end

Instance Method Details

#==(other) ⇒ Object



28
29
30
31
32
33
# File 'lib/barcodevalidation/digit_sequence.rb', line 28

def ==(other)
  case other
  when String, Numeric then super(self.class.new(other))
  else super
  end
end