barby 0.6.4 → 0.6.5

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: c3ef6b7305d1618b7f76f9b6cc9e8a0857f2aa85
4
- data.tar.gz: 531f6a94ab74935d1792e722725c83587c930ade
3
+ metadata.gz: bf63b4cabe71e145f367917c72ddd3a87b44655d
4
+ data.tar.gz: 978466b7b734651b5f9362b67136033bdcf572a7
5
5
  SHA512:
6
- metadata.gz: 0e61425386a0f576bac8e1deb0da5ed38b7a4834c50dbce8c63c1dad2f68e6bac2cbcc55af9bc14b3ad5d423dc8f5b1c4cc5907f393e42177289544278eda5ef
7
- data.tar.gz: 26a18619c3738f90a37026384c3b8703e91aa8692d052b0e24274ee98eff80788cffbc205a5b76b5ff56183d6c0f1964ab6316c512e6e95ad3ce9dbf30046a39
6
+ metadata.gz: 8152a2ea8b9b84264e904f5d50f61c6712fd238580041b5cc0852eacdce210b9e4d6a345ea753c3c4d58c62439d69ab7882006643caa31607eefedcc6226268d
7
+ data.tar.gz: 0b9e1005bc39a1ea0e8ecd6c57947be36f35e8d1a5529c48073f7d505bc82fa92a7ca1c67d987eb9f94507edd4f5b501cf58c4f994fd8339687fd1659f665404
@@ -405,6 +405,9 @@ module Barby
405
405
  LOWR_RE = /[a-z]/
406
406
  DGTS_RE = /\d{4,}/
407
407
 
408
+ # pairs of digits and FNC1 characters
409
+ CODEC_CHARS_RE = /(?:\d{2}|#{FNC1}){2,}/
410
+
408
411
  class << self
409
412
 
410
413
 
@@ -424,7 +427,7 @@ module Barby
424
427
  #shortest encoding possible
425
428
  def apply_shortest_encoding_for_data(data)
426
429
  extract_codec(data).map do |block|
427
- if possible_codec_segment?(block)
430
+ if codec_segment?(block)
428
431
  "#{CODEC}#{block}"
429
432
  else
430
433
  if control_before_lowercase?(block)
@@ -454,25 +457,15 @@ module Barby
454
457
  # # C A or B C A or B
455
458
  # extract_codec("12345abc678910DEF11") => ["1234", "5abc", "678910", "DEF11"]
456
459
  def extract_codec(data)
457
- segments = data.split(/(\d{4,})/).reject(&:empty?)
458
- segments.each_with_index do |s,i|
459
- if possible_codec_segment?(s) && s.size.odd?
460
- if i == 0
461
- if segments[1]
462
- segments[1].insert(0, s.slice!(-1))
463
- else
464
- segments[1] = s.slice!(-1)
465
- end
466
- else
467
- segments[i-1].insert(-1, s.slice!(0)) if segments[i-1]
468
- end
469
- end
470
- end
471
- segments
460
+ data.split(/
461
+ (^(?:#{CODEC_CHARS_RE})) # matches digits that appear at the beginning of the barcode
462
+ |
463
+ ((?:#{CODEC_CHARS_RE})(?!\d)) # matches digits that appear later in the barcode
464
+ /x).reject(&:empty?)
472
465
  end
473
466
 
474
- def possible_codec_segment?(data)
475
- data =~ /\A\d{4,}\Z/
467
+ def codec_segment?(data)
468
+ data =~ /\A#{CODEC_CHARS_RE}\Z/
476
469
  end
477
470
 
478
471
  def control_character?(char)
@@ -2,7 +2,7 @@ module Barby #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 6
5
- TINY = 4
5
+ TINY = 5
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: barby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.4
4
+ version: 0.6.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tore Darell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-14 00:00:00.000000000 Z
11
+ date: 2016-11-30 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Barby creates barcodes.
14
14
  email: toredarell@gmail.com