barby 0.6.5 → 0.6.6

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: bf63b4cabe71e145f367917c72ddd3a87b44655d
4
- data.tar.gz: 978466b7b734651b5f9362b67136033bdcf572a7
3
+ metadata.gz: 785be5fa4a1302abd27db4793aa66e35342a80d1
4
+ data.tar.gz: 70c044812cef3591c072b891ab1a827e524a9819
5
5
  SHA512:
6
- metadata.gz: 8152a2ea8b9b84264e904f5d50f61c6712fd238580041b5cc0852eacdce210b9e4d6a345ea753c3c4d58c62439d69ab7882006643caa31607eefedcc6226268d
7
- data.tar.gz: 0b9e1005bc39a1ea0e8ecd6c57947be36f35e8d1a5529c48073f7d505bc82fa92a7ca1c67d987eb9f94507edd4f5b501cf58c4f994fd8339687fd1659f665404
6
+ metadata.gz: 3bcad78fd0a01fa2184a95ccb909ec214b06bdcafa353fa5cbb70416772b8c4bf7cd94866c969e985e273f311551d6de2211bf9cd503580bda32b32b8a2b544b
7
+ data.tar.gz: 66e130f3faf4eec7044e88455b2e3ab6dd3b5da8921190568bf235d843719fb4ebac547d387bb4bee66500bfb0c76a8a65f4de89874742125d88a7b137b1d269
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ * 0.6.6
2
+
3
+ * Add support for Codabar symbology [labocho]
4
+
1
5
  * 0.6.1
2
6
 
3
7
  * Fix single-pixel error with RMagick [James Brink]
data/README.md CHANGED
@@ -12,7 +12,8 @@ lines or squares, outputters will do that for you.
12
12
  Likewise, you can easily add an outputter for a format that doesn't have one
13
13
  yet, and it will work with all existing symbologies.
14
14
 
15
- For more information, check out [the Barby wiki] [wiki].
15
+ For more information, check out [the Barby wiki][wiki].
16
+
16
17
 
17
18
  ### New require policy
18
19
 
@@ -51,24 +52,24 @@ puts barcode.to_ascii #Implicitly uses the AsciiOutputter
51
52
  require 'barby/barcode/<filename>'
52
53
  ```
53
54
 
54
- | Name | Filename | Dependencies |
55
- | ----------------------------------- | --------------------- | ------------- |
56
- | Code 25 | `code_25` | ─ |
57
- | ├─ Interleaved | `code_25_interleaved` | ─ |
58
- | └─ IATA | `code_25_iata` | ─ |
59
- | Code 39 | `code_39` | ─ |
60
- | └─ Extended | `code_39` | ─ |
61
- | Code 93 | `code_93` | ─ |
62
- | Code 128 (A, B, and C) | `code_128` | ─ |
63
- | └─ GS1 128 | `gs1_128` | ─ |
64
- | EAN-13 | `ean_13` | ─ |
65
- | ├─ Bookland | `bookland` | ─ |
66
- | └─ UPC-A | `ean_13` | ─ |
67
- | EAN-8 | `ean_8` | ─ |
68
- | UPC/EAN supplemental, 2 & 5 digits | `upc_supplemental` | ─ |
69
- | QR Code | `qr_code` | `rqrcode` |
70
- | DataMatrix (Semacode) | `data_matrix` | `semacode` |
71
- | PDF417 | `pdf_417` | JRuby |
55
+ | Name | Filename | Dependencies |
56
+ | ----------------------------------- | --------------------- | ---------------------------------- |
57
+ | Code 25 | `code_25` | ─ |
58
+ | ├─ Interleaved | `code_25_interleaved` | ─ |
59
+ | └─ IATA | `code_25_iata` | ─ |
60
+ | Code 39 | `code_39` | ─ |
61
+ | └─ Extended | `code_39` | ─ |
62
+ | Code 93 | `code_93` | ─ |
63
+ | Code 128 (A, B, and C) | `code_128` | ─ |
64
+ | └─ GS1 128 | `gs1_128` | ─ |
65
+ | EAN-13 | `ean_13` | ─ |
66
+ | ├─ Bookland | `bookland` | ─ |
67
+ | └─ UPC-A | `ean_13` | ─ |
68
+ | EAN-8 | `ean_8` | ─ |
69
+ | UPC/EAN supplemental, 2 & 5 digits | `upc_supplemental` | ─ |
70
+ | QR Code | `qr_code` | `rqrcode` |
71
+ | DataMatrix (Semacode) | `data_matrix` | `semacode` or `semacode-ruby19` |
72
+ | PDF417 | `pdf_417` | JRuby |
72
73
 
73
74
 
74
75
  ## Outputters
@@ -99,7 +100,7 @@ require 'barby/outputter/<filename>_outputter'
99
100
 
100
101
  ---
101
102
 
102
- For more information, check out [the Barby wiki] [wiki].
103
+ For more information, check out [the Barby wiki][wiki].
103
104
 
104
105
 
105
106
  [wiki]: https://github.com/toretore/barby/wiki
@@ -0,0 +1,82 @@
1
+ require "barby/barcode"
2
+
3
+ module Barby
4
+ # https://en.wikipedia.org/wiki/Codabar
5
+ class Codabar < Barcode1D
6
+ BLACK_NARROW_WIDTH = 1
7
+ WHITE_NARROW_WIDTH = 2
8
+ WIDE_WIDTH_RATE = 3
9
+ SPACING = 5 # must be equal to or wider than white narrow width
10
+ CHARACTERS = "0123456789-$:/.+ABCD".freeze
11
+ # even: black, odd: white
12
+ # 0: narrow, 1: wide
13
+ BINARY_EXPRESSION = [
14
+ "0000011", # 0
15
+ "0000110", # 1
16
+ "0001001", # 2
17
+ "1100000", # 3
18
+ "0010010", # 4
19
+ "1000010", # 5
20
+ "0100001", # 6
21
+ "0100100", # 7
22
+ "0110000", # 8
23
+ "1001000", # 9
24
+ "0001100", # -
25
+ "0011000", # $
26
+ "1000101", # :
27
+ "1010001", # /
28
+ "1010100", # .
29
+ "0010101", # +
30
+ "0011010", # A
31
+ "0101001", # B
32
+ "0001011", # C
33
+ "0001110", # D
34
+ ].each(&:freeze)
35
+ CHARACTER_TO_BINARY = Hash[CHARACTERS.chars.zip(BINARY_EXPRESSION)].freeze
36
+ FORMAT = /\A[ABCD][0123456789\-\$:\/\.\+]+[ABCD]\z/.freeze
37
+ ONE = "1".freeze
38
+ ZERO = "0".freeze
39
+
40
+ attr_accessor :data, :black_narrow_width, :white_narrow_width, :wide_width_rate, :spacing
41
+
42
+ def initialize(data)
43
+ self.data = data
44
+ raise ArgumentError, 'data not valid' unless valid?
45
+
46
+ self.black_narrow_width = BLACK_NARROW_WIDTH
47
+ self.white_narrow_width = WHITE_NARROW_WIDTH
48
+ self.wide_width_rate = WIDE_WIDTH_RATE
49
+ self.spacing = SPACING
50
+ end
51
+
52
+ def encoding
53
+ data.chars.map{|c| binary_to_bars(CHARACTER_TO_BINARY[c]) }.join(ZERO * spacing)
54
+ end
55
+
56
+ def valid?
57
+ data =~ FORMAT
58
+ end
59
+
60
+ private
61
+ def binary_to_bars(bin)
62
+ bin.chars.each_with_index.map{|c, i|
63
+ black = i % 2 == 0
64
+ narrow = c == ZERO
65
+
66
+ if black
67
+ if narrow
68
+ ONE * black_narrow_width
69
+ else
70
+ ONE * (black_narrow_width * wide_width_rate).to_i
71
+ end
72
+ else
73
+ if narrow
74
+ ZERO * white_narrow_width
75
+ else
76
+ ZERO * (white_narrow_width * wide_width_rate).to_i
77
+ end
78
+ end
79
+ }.join
80
+ end
81
+ end
82
+ end
data/lib/barby/version.rb CHANGED
@@ -2,7 +2,7 @@ module Barby #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 6
5
- TINY = 5
5
+ TINY = 6
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.5
4
+ version: 0.6.6
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-11-30 00:00:00.000000000 Z
11
+ date: 2018-08-12 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Barby creates barcodes.
14
14
  email: toredarell@gmail.com
@@ -24,6 +24,7 @@ files:
24
24
  - lib/barby.rb
25
25
  - lib/barby/barcode.rb
26
26
  - lib/barby/barcode/bookland.rb
27
+ - lib/barby/barcode/codabar.rb
27
28
  - lib/barby/barcode/code_128.rb
28
29
  - lib/barby/barcode/code_25.rb
29
30
  - lib/barby/barcode/code_25_iata.rb
@@ -69,7 +70,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
69
70
  version: '0'
70
71
  requirements: []
71
72
  rubyforge_project: barby
72
- rubygems_version: 2.5.1
73
+ rubygems_version: 2.5.2
73
74
  signing_key:
74
75
  specification_version: 4
75
76
  summary: The Ruby barcode generator