gs1 0.1.6 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2f15d386486f27cc92e1ba01d9c3d03f0633c7ac
4
- data.tar.gz: e4f0b5717132652127aafeeccdda4253d68a8201
3
+ metadata.gz: ae7268afd40d4a599155c51582aacd7f7d3f8c52
4
+ data.tar.gz: 930790ac5f42cc782f3460aaa0e68671f53e0208
5
5
  SHA512:
6
- metadata.gz: 3d3f0d9472329eafe49f3bdbf6326672c442d74b8132f07d3a21d0083d7d617fd1309af82d24ba78bd3585d61b7f6daf5ecec8fcad5f72595a29d2024afdea16
7
- data.tar.gz: 03d8e6d2faf2249b3077c38d67d90535f6a82d6d2fb1aec42c71e90cf9054497ab122a89014478840420c23f0c969ea1fa2c9316ebd933e623c5d395c5521c64
6
+ metadata.gz: bd8d48770b37423a9abe783d4169294f81a7f519ca753b35ef399934e485f8684dabe2da64f96a5749f823a4f37123936116c1e15a92611f60d865e8432c7a8d
7
+ data.tar.gz: aeb9b655ddf9550c05fc755a7cd8a3a0705f0051ceb23e755a97cc316457115c2e3611c27d3087df92805e242c6ca94258975496df98e79e2db75ebf81f69855
@@ -6,6 +6,8 @@ module GS1
6
6
  include Definitions
7
7
 
8
8
  def initialize(options = {})
9
+ @params_order = options.keys
10
+
9
11
  self.class.records.each do |record|
10
12
  data = options.fetch(record.underscore_name, nil)
11
13
 
@@ -8,13 +8,14 @@ module GS1
8
8
  def to_s(level: AIDCMarketingLevels::ENHANCED, separator: GS1.configuration.barcode_separator)
9
9
  return unless valid?(level: level)
10
10
 
11
- [
12
- gtin.to_ai,
13
- expiration_date&.to_ai,
14
- batch&.to_ai,
15
- separator,
16
- serial_number&.to_ai
17
- ].compact.join
11
+ @params_order.each_with_object('') do |param, out|
12
+ record = send(param)
13
+
14
+ next unless record.to_ai
15
+
16
+ out << record.to_ai
17
+ out << separator if record.class.separator? && param != @params_order.last
18
+ end
18
19
  end
19
20
 
20
21
  def valid?(level: AIDCMarketingLevels::ENHANCED)
data/lib/gs1/batch.rb CHANGED
@@ -29,5 +29,6 @@ module GS1
29
29
  AI = AI::BATCH_LOT
30
30
 
31
31
  define :length, allowed: 1..20
32
+ define :separator
32
33
  end
33
34
  end
@@ -15,7 +15,7 @@ module GS1
15
15
  module ClassMethods
16
16
  attr_reader :definitions
17
17
 
18
- DEFINITIONS = %i[check_digit date date_month_based length].freeze
18
+ DEFINITIONS = %i[check_digit date date_month_based length separator].freeze
19
19
 
20
20
  def define(key, options = {})
21
21
  raise UnknownDefinition, "#{key} is not a valid definition" unless DEFINITIONS.include?(key)
@@ -40,6 +40,11 @@ module GS1
40
40
  {}
41
41
  end
42
42
 
43
+ # Boolean value
44
+ def normalize_separator_options(_options)
45
+ true
46
+ end
47
+
43
48
  # Defaults barcode length to allowed length if not explicitly defined, only
44
49
  # if there is one significant allowed.
45
50
  def normalize_length_options(options)
@@ -67,6 +72,10 @@ module GS1
67
72
  option_value
68
73
  end
69
74
 
75
+ def separator?
76
+ definitions[:separator]
77
+ end
78
+
70
79
  def barcode_length
71
80
  lengths[:barcode]
72
81
  end
@@ -27,5 +27,6 @@ module GS1
27
27
  AI = AI::SERIAL
28
28
 
29
29
  define :length, allowed: 1..20
30
+ define :separator
30
31
  end
31
32
  end
@@ -39,6 +39,8 @@ module GS1
39
39
 
40
40
  def validate
41
41
  self.class.definitions.each_key do |definition|
42
+ next if definition == :separator
43
+
42
44
  public_send("validate_#{definition}")
43
45
  end
44
46
  end
data/lib/gs1/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module GS1
2
- VERSION = '0.1.6'.freeze
2
+ VERSION = '0.1.7'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gs1
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Åhman
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-12-02 00:00:00.000000000 Z
11
+ date: 2018-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler