labrat 1.2.2 → 1.2.3

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.
data/lib/labrat/label.rb CHANGED
@@ -40,13 +40,22 @@ module Labrat
40
40
  bpm = ops.right_page_margin
41
41
  end
42
42
  out_file = File.expand_path(ops.out_file)
43
- Prawn::Document.generate(out_file, page_size: [ops.page_width, ops.page_height],
44
- left_margin: lpm, right_margin: rpm,
45
- top_margin: tpm, bottom_margin: bpm,
46
- page_layout: layout) do |pdf|
43
+ Prawn::Document.generate(
44
+ out_file,
45
+ page_size: [ops.page_width, ops.page_height],
46
+ left_margin: lpm,
47
+ right_margin: rpm,
48
+ top_margin: tpm,
49
+ bottom_margin: bpm,
50
+ page_layout: layout,
51
+ ) do |pdf|
47
52
  # Define a grid with each grid box to be used for a single label.
48
- pdf.define_grid(rows: ops.rows, columns: ops.columns,
49
- row_gutter: ops.row_gap, column_gutter: ops.column_gap)
53
+ pdf.define_grid(
54
+ rows: ops.rows,
55
+ columns: ops.columns,
56
+ row_gutter: ops.row_gap,
57
+ column_gutter: ops.column_gap,
58
+ )
50
59
  if ops.verbose
51
60
  warn "Page dimensions:"
52
61
  warn " [pg_wd, pg_ht] = [#{ops.page_width.round(2)}pt,#{ops.page_height.round(2)}pt]"
@@ -62,7 +71,7 @@ module Labrat
62
71
  if ops.label != ops.raw_label
63
72
  lab_text += "\n(#{ops.label})"
64
73
  end
65
- self.texts = (1..(ops.rows * ops.columns)).map {|n| "#{n}\n#{lab_text}"}
74
+ self.texts = (1..(ops.rows * ops.columns)).map { |n| "#{n}\n#{lab_text}" }
66
75
  ops.font_name = 'Helvetica'
67
76
  ops.font_style = 'bold'
68
77
  ops.font_size = 11
@@ -82,9 +91,15 @@ module Labrat
82
91
  box_x = ops.left_pad + ops.delta_x
83
92
  box_y = ops.bottom_pad + box_ht + ops.delta_y
84
93
  pdf.font ops.font_name, style: ops.font_style, size: ops.font_size.to_f
85
- pdf.text_box(text, width: box_wd, height: box_ht,
86
- align: ops.h_align, valign: ops.v_align,
87
- overflow: :truncate, at: [box_x, box_y])
94
+ pdf.text_box(
95
+ text,
96
+ width: box_wd,
97
+ height: box_ht,
98
+ align: ops.h_align,
99
+ valign: ops.v_align,
100
+ overflow: :truncate,
101
+ at: [box_x, box_y],
102
+ )
88
103
  if ops.verbose && !lab_dims_reported
89
104
  warn "Label text box dimensions:"
90
105
  warn " [box_wd, box_ht] = [#{box_wd.round(2)}pt,#{box_ht.round(2)}pt]"
@@ -94,7 +109,7 @@ module Labrat
94
109
  lab_dims_reported = true
95
110
  end
96
111
  if ops.verbose
97
- warn "Label \##{(k % lpp) + 1} on page #{page_num(k)} at row #{row + 1}, column #{col + 1}:"
112
+ warn "Label ##{(k % lpp) + 1} on page #{page_num(k)} at row #{row + 1}, column #{col + 1}:"
98
113
  warn '-------------------'
99
114
  warn text
100
115
  warn '-------------------'
@@ -149,8 +164,9 @@ module Labrat
149
164
  # Should we emit a new page at this point?
150
165
  def needs_new_page?(k, last_k)
151
166
  return false if k == last_k
167
+
152
168
  r, c = row_col(k + 1)
153
- (r + 1 == ops.rows && c + 1 == ops.columns)
169
+ r + 1 == ops.rows && c + 1 == ops.columns
154
170
  end
155
171
 
156
172
  # Would we just be printing blank labels?
@@ -6,18 +6,44 @@ module Labrat
6
6
  # and perhaps environment. An Options instance can be handed off to the
7
7
  # label-printing objects to inform its formatting, printing, etc.
8
8
  class Options
9
- attr_accessor :label, :raw_label, :page_width, :page_height,
10
- :left_page_margin, :right_page_margin,
11
- :top_page_margin, :bottom_page_margin,
12
- :rows, :columns, :row_gap, :column_gap, :landscape,
13
- :start_label, :grid,
14
- :h_align, :v_align,
15
- :left_pad, :right_pad, :top_pad, :bottom_pad,
16
- :delta_x, :delta_y,
17
- :font_name, :font_style, :font_size,
18
- :in_file, :nl_sep, :label_sep, :copies,
19
- :printer, :out_file, :print_command, :view_command, :view,
20
- :template, :verbose, :msg
9
+ attr_accessor :label,
10
+ :raw_label,
11
+ :page_width,
12
+ :page_height,
13
+ :left_page_margin,
14
+ :right_page_margin,
15
+ :top_page_margin,
16
+ :bottom_page_margin,
17
+ :rows,
18
+ :columns,
19
+ :row_gap,
20
+ :column_gap,
21
+ :landscape,
22
+ :start_label,
23
+ :grid,
24
+ :h_align,
25
+ :v_align,
26
+ :left_pad,
27
+ :right_pad,
28
+ :top_pad,
29
+ :bottom_pad,
30
+ :delta_x,
31
+ :delta_y,
32
+ :font_name,
33
+ :font_style,
34
+ :font_size,
35
+ :in_file,
36
+ :nl_sep,
37
+ :label_sep,
38
+ :copies,
39
+ :printer,
40
+ :out_file,
41
+ :print_command,
42
+ :view_command,
43
+ :view,
44
+ :template,
45
+ :verbose,
46
+ :msg
21
47
 
22
48
  # Initialize with an optional hash of default values for the attributes.
23
49
  def initialize(**init)
@@ -79,9 +105,9 @@ module Labrat
79
105
 
80
106
  # Command-line
81
107
  if verbose
82
- warn "Command-line:"
108
+ warn "\nCommand-line:"
83
109
  args.each do |arg|
84
- warn arg.to_s
110
+ warn arg
85
111
  end
86
112
  warn ""
87
113
  end
@@ -98,27 +124,27 @@ module Labrat
98
124
  # Allow hash-like assignment to attributes. This allows an Options object
99
125
  # to be used, for example, in the OptionParser#parse :into parameter.
100
126
  def []=(att, val)
101
- att = att.to_s.gsub('-', '_')
102
- send("#{att}=", val)
127
+ att = att.to_s.tr('-', '_')
128
+ send(:"#{att}=", val)
103
129
  end
104
130
 
105
131
  # Allow hash-like access to attributes. This allows an Options object
106
132
  # to be used, for example, in the OptionParser#parse :into parameter.
107
133
  def [](att)
108
- att = att.to_s.gsub('-', '_')
134
+ att = att.to_s.tr('-', '_')
109
135
  send(att.to_s)
110
136
  end
111
137
 
112
138
  # For testing, return an Array of the attributes as symbols.
113
139
  def self.attrs
114
140
  instance_methods(false).grep(/\A[a-z_]+=\Z/)
115
- .map { |a| a.to_s.sub(/=\z/, '').to_sym }
141
+ .map { |a| a.to_s.delete_suffix('=').to_sym }
116
142
  end
117
143
 
118
144
  # For testing, return an Array of the flags-form of the attributes, i.e.,
119
145
  # with the underscores, _, replaced with hyphens.
120
146
  def self.flags
121
- attrs.map { |a| a.gsub('_', '-') }
147
+ attrs.map { |a| a.tr('_', '-') }
122
148
  end
123
149
 
124
150
  # Return a hash of the values in this Options object. This is the
@@ -174,7 +200,7 @@ module Labrat
174
200
  # an Options object.
175
201
  def merge!(hsh)
176
202
  # Convert any separator hyphens in the hash keys to underscores
177
- hsh = hsh.to_hash.transform_keys { |key| key.to_s.gsub('-', '_').to_sym }
203
+ hsh = hsh.to_hash.transform_keys { |key| key.to_s.tr('-', '_').to_sym }
178
204
  new_hash = to_hash.merge(hsh)
179
205
  new_hash.each_pair do |k, val|
180
206
  setter = "#{k}=".to_sym
@@ -9,6 +9,7 @@ module Labrat
9
9
  unless File.readable?(fname)
10
10
  raise "Cannot open label file '#{ofname}' for reading"
11
11
  end
12
+
12
13
  File.open(fname)
13
14
  else
14
15
  $stdin
@@ -17,9 +18,9 @@ module Labrat
17
18
  texts = []
18
19
  label = nil
19
20
  file.each do |line|
20
- next if line =~ /\A#/
21
+ next if /\A\s*#/.match?(line)
21
22
 
22
- if line =~ /\A\s*\z/
23
+ if /\A\s*\z/.match?(line)
23
24
  # At blank line record any accumulated label into texts, but remove
24
25
  # the nlsep from the end.
25
26
  if label
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Labrat
4
- VERSION = "1.2.2"
4
+ VERSION = "1.2.3"
5
5
  end
metadata CHANGED
@@ -1,43 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: labrat
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel E. Doherty
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-11-29 00:00:00.000000000 Z
10
+ date: 2025-03-20 00:00:00.000000000 Z
12
11
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: matrix
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: prawn
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '2.0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '2.0'
41
12
  - !ruby/object:Gem::Dependency
42
13
  name: activesupport
43
14
  requirement: !ruby/object:Gem::Requirement
@@ -52,112 +23,28 @@ dependencies:
52
23
  - - ">="
53
24
  - !ruby/object:Gem::Version
54
25
  version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: fat_core
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
26
  - !ruby/object:Gem::Dependency
70
27
  name: fat_config
71
28
  requirement: !ruby/object:Gem::Requirement
72
29
  requirements:
73
30
  - - ">="
74
31
  - !ruby/object:Gem::Version
75
- version: 0.3.0
32
+ version: 0.4.2
76
33
  type: :runtime
77
34
  prerelease: false
78
35
  version_requirements: !ruby/object:Gem::Requirement
79
36
  requirements:
80
37
  - - ">="
81
38
  - !ruby/object:Gem::Version
82
- version: 0.3.0
83
- - !ruby/object:Gem::Dependency
84
- name: rake
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: rspec
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
39
+ version: 0.4.2
111
40
  - !ruby/object:Gem::Dependency
112
- name: pry
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: simplecov
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
- - !ruby/object:Gem::Dependency
140
- name: debug
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: 1.0.0
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: 1.0.0
153
- - !ruby/object:Gem::Dependency
154
- name: rubocop-performance
41
+ name: fat_core
155
42
  requirement: !ruby/object:Gem::Requirement
156
43
  requirements:
157
44
  - - ">="
158
45
  - !ruby/object:Gem::Version
159
46
  version: '0'
160
- type: :development
47
+ type: :runtime
161
48
  prerelease: false
162
49
  version_requirements: !ruby/object:Gem::Requirement
163
50
  requirements:
@@ -165,13 +52,13 @@ dependencies:
165
52
  - !ruby/object:Gem::Version
166
53
  version: '0'
167
54
  - !ruby/object:Gem::Dependency
168
- name: rubocop-shopify
55
+ name: matrix
169
56
  requirement: !ruby/object:Gem::Requirement
170
57
  requirements:
171
58
  - - ">="
172
59
  - !ruby/object:Gem::Version
173
60
  version: '0'
174
- type: :development
61
+ type: :runtime
175
62
  prerelease: false
176
63
  version_requirements: !ruby/object:Gem::Requirement
177
64
  requirements:
@@ -179,19 +66,19 @@ dependencies:
179
66
  - !ruby/object:Gem::Version
180
67
  version: '0'
181
68
  - !ruby/object:Gem::Dependency
182
- name: rubocop-rspec
69
+ name: prawn
183
70
  requirement: !ruby/object:Gem::Requirement
184
71
  requirements:
185
- - - ">="
72
+ - - "~>"
186
73
  - !ruby/object:Gem::Version
187
- version: '0'
188
- type: :development
74
+ version: '2.0'
75
+ type: :runtime
189
76
  prerelease: false
190
77
  version_requirements: !ruby/object:Gem::Requirement
191
78
  requirements:
192
- - - ">="
79
+ - - "~>"
193
80
  - !ruby/object:Gem::Version
194
- version: '0'
81
+ version: '2.0'
195
82
  description: |2+
196
83
 
197
84
  Labrat is a linux command-line program for quickly printing labels. Labrat uses
@@ -216,6 +103,8 @@ extensions: []
216
103
  extra_rdoc_files: []
217
104
  files:
218
105
  - ".envrc"
106
+ - ".github/workflows/main.yml"
107
+ - ".github/workflows/ruby.yml"
219
108
  - ".gitignore"
220
109
  - ".rspec"
221
110
  - ".rubocop.yml"
@@ -274,8 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
274
163
  - !ruby/object:Gem::Version
275
164
  version: '0'
276
165
  requirements: []
277
- rubygems_version: 3.5.23
278
- signing_key:
166
+ rubygems_version: 3.6.3
279
167
  specification_version: 4
280
168
  summary: Command-line and Emacs label print software.
281
169
  test_files: []