usps_intelligent_barcode 1.0.0 → 1.1.0
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 +5 -5
- data/.gitignore +6 -0
- data/.ruby-version +1 -0
- data/{CHANGELOG.markdown → CHANGELOG.md} +27 -12
- data/Gemfile +2 -16
- data/Gemfile.lock +74 -85
- data/LICENSE.md +7 -0
- data/{README.markdown → README.md} +56 -36
- data/VERSION +1 -1
- data/doc/font_installation.md +55 -0
- data/doc/migration.md +47 -0
- data/doc/publishing.md +75 -0
- data/examples/example.rb +4 -4
- data/examples/generate_pdf.rb +70 -0
- data/fonts/LICENSE +47 -0
- data/fonts/USPSIMBCompact.ttf +0 -0
- data/fonts/USPSIMBStandard.ttf +0 -0
- data/lib/usps_intelligent_barcode/barcode.rb +33 -30
- data/lib/usps_intelligent_barcode/barcode_id.rb +5 -0
- data/lib/usps_intelligent_barcode/mailer_id.rb +6 -1
- data/lib/usps_intelligent_barcode/project_dirs.rb +19 -0
- data/lib/usps_intelligent_barcode/routing_code.rb +20 -10
- data/lib/usps_intelligent_barcode/serial_number.rb +6 -1
- data/lib/usps_intelligent_barcode/service_type.rb +6 -1
- data/lib/usps_intelligent_barcode/usps_fonts.rb +48 -0
- data/lib/usps_intelligent_barcode.rb +2 -0
- data/rake/bundler.rb +1 -0
- data/rake/version.rb +33 -0
- data/rake/yard.rb +1 -0
- data/usps_intelligent_barcode.gemspec +24 -97
- metadata +67 -46
- data/USPS-intelligent-barcode.gemspec +0 -95
- data/rake/jeweler.rb +0 -23
- data/spec/bar_map_spec.rb +0 -30
- data/spec/bar_position_spec.rb +0 -40
- data/spec/bar_symbol_spec.rb +0 -39
- data/spec/barcode_id_spec.rb +0 -106
- data/spec/barcode_spec.rb +0 -213
- data/spec/character_position_spec.rb +0 -25
- data/spec/codeword_map_spec.rb +0 -22
- data/spec/crc_spec.rb +0 -21
- data/spec/mailer_id_spec.rb +0 -124
- data/spec/numeric_conversions_spec.rb +0 -23
- data/spec/routing_code_spec.rb +0 -180
- data/spec/serial_number_spec.rb +0 -117
- data/spec/service_type_spec.rb +0 -93
- data/spec/spec_helper.rb +0 -9
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
lib_dir = File.expand_path('../lib', __dir__)
|
|
4
|
+
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
5
|
+
require 'usps_intelligent_barcode'
|
|
6
|
+
|
|
7
|
+
begin
|
|
8
|
+
require 'prawn'
|
|
9
|
+
rescue LoadError
|
|
10
|
+
puts "This example requires the 'prawn' gem."
|
|
11
|
+
puts "Install it with: gem install prawn"
|
|
12
|
+
exit 1
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Generate a PDF using a USPS Intelligent Mail Barcode font
|
|
16
|
+
#
|
|
17
|
+
# Uses bundled USPS IMB fonts - no installation required.
|
|
18
|
+
|
|
19
|
+
class BarcodeToPDFFont
|
|
20
|
+
OUTPUT_FILENAME = 'barcode_font.pdf'
|
|
21
|
+
FONT_NAME = 'USPSIMBStandard'
|
|
22
|
+
FONT_FILE = Imb::UspsFonts.standard_font_path
|
|
23
|
+
FONT_SIZE = Imb::UspsFonts.font_size
|
|
24
|
+
|
|
25
|
+
def initialize(barcode)
|
|
26
|
+
@barcode = barcode
|
|
27
|
+
@letters = barcode.barcode_letters
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def generate(path)
|
|
31
|
+
Prawn::Document.generate(path, page_size: 'LETTER') do |pdf|
|
|
32
|
+
pdf.text "USPS Intelligent Mail Barcode (Font-Based)", size: 16, style: :bold
|
|
33
|
+
pdf.move_down 10
|
|
34
|
+
pdf.text "Barcode ID: #{@barcode.barcode_id.to_s}"
|
|
35
|
+
pdf.text "Service Type: #{@barcode.service_type.to_s}"
|
|
36
|
+
pdf.text "Mailer ID: #{@barcode.mailer_id.to_s}"
|
|
37
|
+
pdf.text "Serial Number: #{@barcode.serial_number.to_s}"
|
|
38
|
+
pdf.text "Routing Code: #{@barcode.routing_code.to_s}"
|
|
39
|
+
pdf.text "\n"
|
|
40
|
+
pdf.text "Barcode string: #{@letters}", size: 8
|
|
41
|
+
pdf.text "\n"
|
|
42
|
+
pdf.text "Barcode string printed with font #{FONT_NAME} #{FONT_SIZE}"
|
|
43
|
+
render_barcode(pdf)
|
|
44
|
+
pdf.move_down 10
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
private
|
|
49
|
+
|
|
50
|
+
def render_barcode(pdf)
|
|
51
|
+
pdf.font_families.update(FONT_NAME => { normal: FONT_FILE })
|
|
52
|
+
pdf.font(FONT_NAME) do
|
|
53
|
+
pdf.text @letters, size: FONT_SIZE
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Example usage
|
|
59
|
+
barcode = Imb::Barcode.new(
|
|
60
|
+
'01', # barcode_id
|
|
61
|
+
'234', # service_type
|
|
62
|
+
'567094', # mailer_id
|
|
63
|
+
'987654321', # serial_number
|
|
64
|
+
'01234567891' # routing_code
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
pdf_generator = BarcodeToPDFFont.new(barcode)
|
|
68
|
+
path = "/tmp/barcode_to_pdf.pdf"
|
|
69
|
+
pdf_generator.generate(path)
|
|
70
|
+
puts "Generated #{path}"
|
data/fonts/LICENSE
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
USPS Intelligent Mail Barcode Fonts License
|
|
2
|
+
============================================
|
|
3
|
+
|
|
4
|
+
Copyright © US Postal Service 2009
|
|
5
|
+
|
|
6
|
+
LICENSE GRANT
|
|
7
|
+
|
|
8
|
+
The Postal Service grants you a world-wide, royalty-free, non-exclusive license
|
|
9
|
+
to use the Software, Documentation, and Fonts in the mailing industry without
|
|
10
|
+
paying a royalty or other fee, including rights to reproduce, display, merge,
|
|
11
|
+
sell, distribute, sublicense, and translate them; and the right to create
|
|
12
|
+
derivative works.
|
|
13
|
+
|
|
14
|
+
CONDITIONS
|
|
15
|
+
|
|
16
|
+
Redistribution of the Software, Documentation, and/or Fonts must contain:
|
|
17
|
+
(a) the copyright notice set forth above
|
|
18
|
+
(b) this list of conditions
|
|
19
|
+
(c) the disclaimer noted below
|
|
20
|
+
|
|
21
|
+
You may redistribute your versions of the Software and/or Fonts if your versions
|
|
22
|
+
were created by making modifications or improvements for a legitimate purpose in
|
|
23
|
+
furtherance of your or another's business.
|
|
24
|
+
|
|
25
|
+
The US Postal Service reserves the right to change this License in any manner
|
|
26
|
+
within reason at its discretion.
|
|
27
|
+
|
|
28
|
+
DISCLAIMER
|
|
29
|
+
|
|
30
|
+
THE POSTAL SERVICE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
|
31
|
+
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
32
|
+
PURPOSE. IN NO EVENT SHALL THE POSTAL SERVICE BE LIABLE FOR ANY SPECIAL,
|
|
33
|
+
INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
|
34
|
+
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
35
|
+
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
|
|
36
|
+
THIS SOFTWARE.
|
|
37
|
+
|
|
38
|
+
FONTS INCLUDED
|
|
39
|
+
|
|
40
|
+
- USPSIMBStandard.ttf - Primary USPS Intelligent Mail Barcode font
|
|
41
|
+
- USPSIMBCompact.ttf - Compact variant of the USPS Intelligent Mail Barcode font
|
|
42
|
+
|
|
43
|
+
OFFICIAL SOURCE
|
|
44
|
+
|
|
45
|
+
Official USPS font downloads and documentation:
|
|
46
|
+
https://postalpro.usps.com/mailing/encoder-software-and-fonts
|
|
47
|
+
https://postalpro.usps.com/onecodesolution
|
|
Binary file
|
|
Binary file
|
|
@@ -6,7 +6,8 @@ require 'usps_intelligent_barcode/crc'
|
|
|
6
6
|
# The namespace for everything in this library.
|
|
7
7
|
module Imb
|
|
8
8
|
|
|
9
|
-
# This class
|
|
9
|
+
# This class turns a collection of fields into a string of symbols
|
|
10
|
+
# for printing using a barcode font.
|
|
10
11
|
class Barcode
|
|
11
12
|
|
|
12
13
|
include Memoizer
|
|
@@ -26,8 +27,6 @@ module Imb
|
|
|
26
27
|
# @return [RoutingCode]
|
|
27
28
|
attr_reader :routing_code
|
|
28
29
|
|
|
29
|
-
# @param
|
|
30
|
-
|
|
31
30
|
# Create a new barcode
|
|
32
31
|
#
|
|
33
32
|
# @param barcode_id [String] Nominally a String, but can be
|
|
@@ -65,34 +64,8 @@ module Imb
|
|
|
65
64
|
def barcode_letters
|
|
66
65
|
symbols.map(&:letter).join
|
|
67
66
|
end
|
|
68
|
-
|
|
69
|
-
private
|
|
70
|
-
|
|
71
|
-
# :stopdoc:
|
|
72
|
-
BAR_MAP = BarMap.new
|
|
73
|
-
CODEWORD_MAP = CodewordMap.new
|
|
74
|
-
CRC = Crc.new
|
|
75
|
-
# :startdoc:
|
|
76
|
-
|
|
77
|
-
def validate_components
|
|
78
|
-
components.each do |component|
|
|
79
|
-
component.validate(long_mailer_id?)
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
67
|
|
|
83
|
-
|
|
84
|
-
[
|
|
85
|
-
@routing_code,
|
|
86
|
-
@barcode_id,
|
|
87
|
-
@service_type,
|
|
88
|
-
@mailer_id,
|
|
89
|
-
@serial_number,
|
|
90
|
-
]
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
def long_mailer_id?
|
|
94
|
-
@mailer_id.long?
|
|
95
|
-
end
|
|
68
|
+
# @!group Algorithm Steps - Public for testing
|
|
96
69
|
|
|
97
70
|
# The components ("fields" in the spec) are turned into a single
|
|
98
71
|
# number that the spec calls "binary_data"). This is done through
|
|
@@ -181,6 +154,36 @@ module Imb
|
|
|
181
154
|
end
|
|
182
155
|
end
|
|
183
156
|
|
|
157
|
+
# @!endgroup
|
|
158
|
+
|
|
159
|
+
private
|
|
160
|
+
|
|
161
|
+
# :stopdoc:
|
|
162
|
+
BAR_MAP = BarMap.new
|
|
163
|
+
CODEWORD_MAP = CodewordMap.new
|
|
164
|
+
CRC = Crc.new
|
|
165
|
+
# :startdoc:
|
|
166
|
+
|
|
167
|
+
def validate_components
|
|
168
|
+
components.each do |component|
|
|
169
|
+
component.validate(long_mailer_id?)
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
def components
|
|
174
|
+
[
|
|
175
|
+
@routing_code,
|
|
176
|
+
@barcode_id,
|
|
177
|
+
@service_type,
|
|
178
|
+
@mailer_id,
|
|
179
|
+
@serial_number,
|
|
180
|
+
]
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
def long_mailer_id?
|
|
184
|
+
@mailer_id.long?
|
|
185
|
+
end
|
|
186
|
+
|
|
184
187
|
# Map the "characters" to symbols. Here is where the barcode is made.
|
|
185
188
|
#
|
|
186
189
|
# @return [Array<BarSymbol>]
|
|
@@ -47,11 +47,16 @@ module Imb
|
|
|
47
47
|
false
|
|
48
48
|
end
|
|
49
49
|
|
|
50
|
-
# @return [Integer] The value of the mailer ID
|
|
50
|
+
# @return [Integer] The integer value of the mailer ID
|
|
51
51
|
def to_i
|
|
52
52
|
@value
|
|
53
53
|
end
|
|
54
54
|
|
|
55
|
+
# @return [String] The string value of the mailer ID
|
|
56
|
+
def to_s
|
|
57
|
+
@value.to_s
|
|
58
|
+
end
|
|
59
|
+
|
|
55
60
|
# @!group Internal
|
|
56
61
|
|
|
57
62
|
# Return true if this is a long (9 digit) mailer ID
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Imb
|
|
2
|
+
|
|
3
|
+
# Provides paths to gem directories
|
|
4
|
+
module ProjectDirs
|
|
5
|
+
|
|
6
|
+
# Returns the root directory of the gem
|
|
7
|
+
# @return [String] absolute path to gem root
|
|
8
|
+
def self.project_dir
|
|
9
|
+
File.expand_path('../..', __dir__)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# Returns the bundled fonts directory
|
|
13
|
+
# @return [String] absolute path to fonts/ directory
|
|
14
|
+
def self.font_dir
|
|
15
|
+
File.join(project_dir, 'fonts')
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -101,23 +101,25 @@ module Imb
|
|
|
101
101
|
|
|
102
102
|
# @!endgroup
|
|
103
103
|
|
|
104
|
-
protected
|
|
105
|
-
|
|
106
104
|
# Convert to an array of [zip, plus4, delivery point]
|
|
105
|
+
# @return [Array<Integer, Integer, Integer>]
|
|
106
|
+
# @note Public for testing
|
|
107
107
|
def to_a
|
|
108
108
|
[@zip, @plus4, @delivery_point]
|
|
109
109
|
end
|
|
110
110
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
111
|
+
# Convert to a string
|
|
112
|
+
def to_s
|
|
113
|
+
"%05d%04d%02d" % [
|
|
114
|
+
@zip,
|
|
115
|
+
@plus4,
|
|
116
|
+
@delivery_point,
|
|
117
|
+
]
|
|
117
118
|
end
|
|
118
|
-
|
|
119
|
-
# Convert to an integer value
|
|
120
119
|
|
|
120
|
+
# Convert to an integer value
|
|
121
|
+
# @return [Integer]
|
|
122
|
+
# @note Public for testing
|
|
121
123
|
def convert
|
|
122
124
|
if @zip && @plus4 && @delivery_point
|
|
123
125
|
@zip * 1000000 + @plus4 * 100 + @delivery_point + 1000100001
|
|
@@ -130,6 +132,14 @@ module Imb
|
|
|
130
132
|
end
|
|
131
133
|
end
|
|
132
134
|
|
|
135
|
+
private
|
|
136
|
+
|
|
137
|
+
NUM_DIGITS = 11 #:nodoc:
|
|
138
|
+
|
|
139
|
+
def arg_to_i(o)
|
|
140
|
+
o.andand.to_i
|
|
141
|
+
end
|
|
142
|
+
|
|
133
143
|
end
|
|
134
144
|
|
|
135
145
|
end
|
|
@@ -37,11 +37,16 @@ module Imb
|
|
|
37
37
|
false
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
-
# @return [Integer] The value of the serial number
|
|
40
|
+
# @return [Integer] The integer value of the serial number
|
|
41
41
|
def to_i
|
|
42
42
|
@value
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
+
# @return [String] The string value of the serial number
|
|
46
|
+
def to_s
|
|
47
|
+
@value.to_s
|
|
48
|
+
end
|
|
49
|
+
|
|
45
50
|
# @!group Internal
|
|
46
51
|
|
|
47
52
|
# Validate the value.
|
|
@@ -36,11 +36,16 @@ module Imb
|
|
|
36
36
|
false
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
-
# @return [Integer] The value of the service type
|
|
39
|
+
# @return [Integer] The integer value of the service type
|
|
40
40
|
def to_i
|
|
41
41
|
@value
|
|
42
42
|
end
|
|
43
43
|
|
|
44
|
+
# @return [Integer] The string value of the service type
|
|
45
|
+
def to_s
|
|
46
|
+
@value.to_s
|
|
47
|
+
end
|
|
48
|
+
|
|
44
49
|
# @!group Internal
|
|
45
50
|
|
|
46
51
|
# Validate the value.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
module Imb
|
|
2
|
+
|
|
3
|
+
# Provides access to bundled USPS Intelligent Mail Barcode fonts
|
|
4
|
+
class UspsFonts
|
|
5
|
+
|
|
6
|
+
# USPS recommended font size in points (16pt for standard fonts per spec)
|
|
7
|
+
STANDARD_FONT_SIZE = 16
|
|
8
|
+
|
|
9
|
+
# Returns path to the standard USPS IMB font (recommended for most use)
|
|
10
|
+
# USPSIMBStandard is the primary USPS Intelligent Mail Barcode font
|
|
11
|
+
# @return [String] absolute path to USPSIMBStandard.ttf
|
|
12
|
+
def self.standard_font_path
|
|
13
|
+
font_path('USPSIMBStandard.ttf')
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Returns path to the compact USPS IMB font
|
|
17
|
+
# USPSIMBCompact provides a more compact barcode rendering
|
|
18
|
+
# @return [String] absolute path to USPSIMBCompact.ttf
|
|
19
|
+
def self.compact_font_path
|
|
20
|
+
font_path('USPSIMBCompact.ttf')
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Returns paths to all bundled USPS fonts
|
|
24
|
+
# @return [Hash<Symbol, String>] font name symbols to file paths
|
|
25
|
+
def self.all_font_paths
|
|
26
|
+
{
|
|
27
|
+
standard: standard_font_path,
|
|
28
|
+
compact: compact_font_path
|
|
29
|
+
}
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Returns the USPS-recommended font size
|
|
33
|
+
# @return [Integer] font size in points (16pt)
|
|
34
|
+
def self.font_size
|
|
35
|
+
STANDARD_FONT_SIZE
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
private
|
|
39
|
+
|
|
40
|
+
# Returns absolute path to a font file in the bundled fonts directory
|
|
41
|
+
# @param filename [String] font filename
|
|
42
|
+
# @return [String] absolute path to font file
|
|
43
|
+
def self.font_path(filename)
|
|
44
|
+
File.join(ProjectDirs.font_dir, filename)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -12,6 +12,8 @@ require 'usps_intelligent_barcode/codeword_map'
|
|
|
12
12
|
require 'usps_intelligent_barcode/crc'
|
|
13
13
|
require 'usps_intelligent_barcode/mailer_id'
|
|
14
14
|
require 'usps_intelligent_barcode/numeric_conversions'
|
|
15
|
+
require 'usps_intelligent_barcode/project_dirs'
|
|
15
16
|
require 'usps_intelligent_barcode/routing_code'
|
|
16
17
|
require 'usps_intelligent_barcode/serial_number'
|
|
17
18
|
require 'usps_intelligent_barcode/service_type'
|
|
19
|
+
require 'usps_intelligent_barcode/usps_fonts'
|
data/rake/bundler.rb
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require "bundler/gem_tasks"
|
data/rake/version.rb
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
namespace :version do
|
|
2
|
+
VERSION_FILE = 'VERSION'
|
|
3
|
+
desc "Bump major version (X.0.0)"
|
|
4
|
+
task :bump_major do
|
|
5
|
+
bump_version(:major)
|
|
6
|
+
end
|
|
7
|
+
desc "Bump minor version (x.X.0)"
|
|
8
|
+
task :bump_minor do
|
|
9
|
+
bump_version(:minor)
|
|
10
|
+
end
|
|
11
|
+
desc "Bump patch version (x.x.X)"
|
|
12
|
+
task :bump_patch do
|
|
13
|
+
bump_version(:patch)
|
|
14
|
+
end
|
|
15
|
+
def bump_version(level)
|
|
16
|
+
current = File.read(VERSION_FILE).strip
|
|
17
|
+
major, minor, patch = current.split('.').map(&:to_i)
|
|
18
|
+
case level
|
|
19
|
+
when :major
|
|
20
|
+
major += 1
|
|
21
|
+
minor = 0
|
|
22
|
+
patch = 0
|
|
23
|
+
when :minor
|
|
24
|
+
minor += 1
|
|
25
|
+
patch = 0
|
|
26
|
+
when :patch
|
|
27
|
+
patch += 1
|
|
28
|
+
end
|
|
29
|
+
new_version = "#{major}.#{minor}.#{patch}"
|
|
30
|
+
File.write(VERSION_FILE, new_version + "\n")
|
|
31
|
+
puts "Bumped version from #{current} to #{new_version}"
|
|
32
|
+
end
|
|
33
|
+
end
|
data/rake/yard.rb
CHANGED
|
@@ -1,100 +1,27 @@
|
|
|
1
|
-
# Generated by jeweler
|
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
|
4
|
-
# -*- encoding: utf-8 -*-
|
|
5
|
-
# stub: usps_intelligent_barcode 1.0.0 ruby lib
|
|
6
|
-
|
|
7
1
|
Gem::Specification.new do |s|
|
|
8
|
-
s.name
|
|
9
|
-
s.version
|
|
10
|
-
|
|
11
|
-
s.
|
|
12
|
-
s.
|
|
13
|
-
s.
|
|
14
|
-
s.
|
|
15
|
-
s.
|
|
16
|
-
s.
|
|
17
|
-
s.
|
|
18
|
-
|
|
19
|
-
"README.markdown"
|
|
20
|
-
]
|
|
21
|
-
s.files = [
|
|
22
|
-
".travis.yml",
|
|
23
|
-
"CHANGELOG.markdown",
|
|
24
|
-
"Gemfile",
|
|
25
|
-
"Gemfile.lock",
|
|
26
|
-
"LICENSE.md",
|
|
27
|
-
"README.markdown",
|
|
28
|
-
"Rakefile",
|
|
29
|
-
"USPS-intelligent-barcode.gemspec",
|
|
30
|
-
"VERSION",
|
|
31
|
-
"examples/example.rb",
|
|
32
|
-
"lib/usps_intelligent_barcode.rb",
|
|
33
|
-
"lib/usps_intelligent_barcode/bar_map.rb",
|
|
34
|
-
"lib/usps_intelligent_barcode/bar_position.rb",
|
|
35
|
-
"lib/usps_intelligent_barcode/bar_symbol.rb",
|
|
36
|
-
"lib/usps_intelligent_barcode/bar_to_character_mapping.yml",
|
|
37
|
-
"lib/usps_intelligent_barcode/barcode.rb",
|
|
38
|
-
"lib/usps_intelligent_barcode/barcode_id.rb",
|
|
39
|
-
"lib/usps_intelligent_barcode/character_position.rb",
|
|
40
|
-
"lib/usps_intelligent_barcode/codeword_map.rb",
|
|
41
|
-
"lib/usps_intelligent_barcode/codeword_to_character_mapping.yml",
|
|
42
|
-
"lib/usps_intelligent_barcode/crc.rb",
|
|
43
|
-
"lib/usps_intelligent_barcode/mailer_id.rb",
|
|
44
|
-
"lib/usps_intelligent_barcode/numeric_conversions.rb",
|
|
45
|
-
"lib/usps_intelligent_barcode/routing_code.rb",
|
|
46
|
-
"lib/usps_intelligent_barcode/serial_number.rb",
|
|
47
|
-
"lib/usps_intelligent_barcode/service_type.rb",
|
|
48
|
-
"rake/default.rb",
|
|
49
|
-
"rake/jeweler.rb",
|
|
50
|
-
"rake/rspec.rb",
|
|
51
|
-
"rake/yard.rb",
|
|
52
|
-
"spec/bar_map_spec.rb",
|
|
53
|
-
"spec/bar_position_spec.rb",
|
|
54
|
-
"spec/bar_symbol_spec.rb",
|
|
55
|
-
"spec/barcode_id_spec.rb",
|
|
56
|
-
"spec/barcode_spec.rb",
|
|
57
|
-
"spec/character_position_spec.rb",
|
|
58
|
-
"spec/codeword_map_spec.rb",
|
|
59
|
-
"spec/crc_spec.rb",
|
|
60
|
-
"spec/mailer_id_spec.rb",
|
|
61
|
-
"spec/numeric_conversions_spec.rb",
|
|
62
|
-
"spec/routing_code_spec.rb",
|
|
63
|
-
"spec/serial_number_spec.rb",
|
|
64
|
-
"spec/service_type_spec.rb",
|
|
65
|
-
"spec/spec_helper.rb",
|
|
66
|
-
"usps_intelligent_barcode.gemspec"
|
|
67
|
-
]
|
|
68
|
-
s.homepage = "http://github.com/wconrad/usps_intelligent_barcode"
|
|
69
|
-
s.licenses = ["MIT"]
|
|
70
|
-
s.rubygems_version = "2.5.1"
|
|
71
|
-
s.summary = "Generates a USPS Intelligent Mail Barcode."
|
|
72
|
-
|
|
73
|
-
if s.respond_to? :specification_version then
|
|
74
|
-
s.specification_version = 4
|
|
75
|
-
|
|
76
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
|
77
|
-
s.add_runtime_dependency(%q<andand>, ["~> 1.3"])
|
|
78
|
-
s.add_runtime_dependency(%q<memoizer>, ["~> 1.0"])
|
|
79
|
-
s.add_development_dependency(%q<jeweler>, ["~> 2.0"])
|
|
80
|
-
s.add_development_dependency(%q<rake>, ["~> 11.2"])
|
|
81
|
-
s.add_development_dependency(%q<simplecov>, [">= 0"])
|
|
82
|
-
s.add_development_dependency(%q<yard>, ["~> 0.8.5"])
|
|
83
|
-
else
|
|
84
|
-
s.add_dependency(%q<andand>, ["~> 1.3"])
|
|
85
|
-
s.add_dependency(%q<memoizer>, ["~> 1.0"])
|
|
86
|
-
s.add_dependency(%q<jeweler>, ["~> 2.0"])
|
|
87
|
-
s.add_dependency(%q<rake>, ["~> 11.2"])
|
|
88
|
-
s.add_dependency(%q<simplecov>, [">= 0"])
|
|
89
|
-
s.add_dependency(%q<yard>, ["~> 0.8.5"])
|
|
90
|
-
end
|
|
91
|
-
else
|
|
92
|
-
s.add_dependency(%q<andand>, ["~> 1.3"])
|
|
93
|
-
s.add_dependency(%q<memoizer>, ["~> 1.0"])
|
|
94
|
-
s.add_dependency(%q<jeweler>, ["~> 2.0"])
|
|
95
|
-
s.add_dependency(%q<rake>, ["~> 11.2"])
|
|
96
|
-
s.add_dependency(%q<simplecov>, [">= 0"])
|
|
97
|
-
s.add_dependency(%q<yard>, ["~> 0.8.5"])
|
|
2
|
+
s.name = 'usps_intelligent_barcode'
|
|
3
|
+
s.version = File.read('VERSION').strip
|
|
4
|
+
s.summary = 'Generates a USPS Intelligent Mail Barcode.'
|
|
5
|
+
s.description = 'A pure Ruby library to generate a USPS Intelligent Mail barcode. It generates the string of characters to print with one of the USPS Intelligent Mail barcode fonts.'
|
|
6
|
+
s.authors = ['Wayne Conrad']
|
|
7
|
+
s.email = 'kf7qga@gmail.com'
|
|
8
|
+
s.homepage = 'https://github.com/wconrad/usps_intelligent_barcode'
|
|
9
|
+
s.license = 'MIT'
|
|
10
|
+
s.required_ruby_version = '>= 3.2.0'
|
|
11
|
+
s.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
12
|
+
f.match(%r{^(test|spec|features)/})
|
|
98
13
|
end
|
|
14
|
+
s.require_paths = ['lib']
|
|
15
|
+
s.add_runtime_dependency 'andand', '~> 1.3'
|
|
16
|
+
s.add_runtime_dependency 'memoizer', '~> 1.0'
|
|
17
|
+
s.add_development_dependency 'prawn', '~> 2.5'
|
|
18
|
+
s.add_development_dependency 'rake', '~> 13.0'
|
|
19
|
+
s.add_development_dependency 'rspec', '~> 3.12'
|
|
20
|
+
s.add_development_dependency 'rspec-its', '~> 2.0'
|
|
21
|
+
s.add_development_dependency 'simplecov', '~> 0.22'
|
|
22
|
+
s.add_development_dependency 'yard', '~> 0.9'
|
|
23
|
+
s.metadata = {
|
|
24
|
+
'source_code_uri' => 'https://github.com/wconrad/usps_intelligent_barcode',
|
|
25
|
+
'bug_tracker_uri' => 'https://github.com/wconrad/usps_intelligent_barcode/issues'
|
|
26
|
+
}
|
|
99
27
|
end
|
|
100
|
-
|