Class: GS1::Barcode::Base

Inherits:
Object
  • Object
show all
Includes:
Definitions
Defined in:
lib/gs1/barcode/base.rb

Overview

Base class for a barcode.

Direct Known Subclasses

Healthcare

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Definitions

included

Constructor Details

#initialize(attributes = {}, options = {}) ⇒ Base

Returns a new instance of Base.



8
9
10
11
12
13
14
15
16
17
18
# File 'lib/gs1/barcode/base.rb', line 8

def initialize(attributes = {}, options = {})
  attribute_validator = options[:attribute_validator] || AttributeValidator.new
  attributes.each do |(name, data)|
    attribute_validator.validate_data(self, name)
    attribute_validator.validate_record(self, name) do |record|
      instance_variable_set("@#{name}", record.new(data))
    end
  end

  @params_order = attributes.to_h.keys
end

Class Method Details

.for(attributes, configuration:) ⇒ Object



25
26
27
28
# File 'lib/gs1/barcode/base.rb', line 25

def for(attributes, configuration:)
  attribute_validator = AttributeValidator.for(configuration: configuration)
  new(attributes, attribute_validator: attribute_validator)
end

.from_scan(barcode, separator: GS1.configuration.barcode_separator, ai_classes: GS1.ai_classes) ⇒ Object



37
38
39
40
41
42
# File 'lib/gs1/barcode/base.rb', line 37

def from_scan(barcode, separator: GS1.configuration.barcode_separator, ai_classes: GS1.ai_classes)
  self.for(
    scan_to_params(barcode, separator: separator, ai_classes: ai_classes),
    configuration: GS1.configuration
  )
end

.from_scan!(barcode, separator: GS1.configuration.barcode_separator, ai_classes: GS1.ai_classes) ⇒ Object



30
31
32
33
34
35
# File 'lib/gs1/barcode/base.rb', line 30

def from_scan!(barcode, separator: GS1.configuration.barcode_separator, ai_classes: GS1.ai_classes)
  self.for(
    scan_to_params!(barcode, separator: separator, ai_classes: ai_classes),
    configuration: GS1.configuration
  )
end

.scan_to_params(barcode, separator: GS1.configuration.barcode_separator, ai_classes: GS1.ai_classes) ⇒ Object



49
50
51
52
# File 'lib/gs1/barcode/base.rb', line 49

def scan_to_params(barcode, separator: GS1.configuration.barcode_separator, ai_classes: GS1.ai_classes)
  Tokenizer.new(barcode, separator: separator, ai_classes: ai_classes)
           .to_params
end

.scan_to_params!(barcode, separator: GS1.configuration.barcode_separator, ai_classes: GS1.ai_classes) ⇒ Object



44
45
46
47
# File 'lib/gs1/barcode/base.rb', line 44

def scan_to_params!(barcode, separator: GS1.configuration.barcode_separator, ai_classes: GS1.ai_classes)
  Tokenizer.new(barcode, separator: separator, ai_classes: ai_classes)
           .to_params!
end

Instance Method Details

#errorsObject



20
21
22
# File 'lib/gs1/barcode/base.rb', line 20

def errors
  @errors ||= Errors.new
end