gs1 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
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