rqrcode 3.1.1 → 3.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f2e5b37e7950d851e7d30a741c8e5f864672aea6ddbcba04cd795c3c7baeb537
4
- data.tar.gz: fb7717b92ed60dad9148af306f5e9f27af0db52edf4ee91fff954e26bdbfb8dc
3
+ metadata.gz: eac90f6e8b69031c243aab170efd37d9bfe552a5972dbc6c0dbf9e8d73d0653d
4
+ data.tar.gz: 203c2f454559f54c9d2f0629dd787ca799d668e0944edfbee5cfaffcaa1e1c6c
5
5
  SHA512:
6
- metadata.gz: 3d95f1e28d62071296333f5ac5bd92fc8e5b874aaf0a2336b78c59321edf89f2e5a17a00490613fa9d4cd95e6bf9cb6a3bf765e1ce7a5acbe7f14dec89659d96
7
- data.tar.gz: 1a8e90c80aa7596199a67119d493891597e13e4dd5b400e2f62fc0e57057947aa7ea9234fab34b0a1fc324cd39fed9069a1ff92da061673627cba8c7fbb95ea1
6
+ metadata.gz: 4e437e362fd0f12e9cba38500d5abf29586db767ee8c1983b893747b5664ca57000a92383f3944f278fa4f9bf5b6b7446853bf261d6fb008742f6c0eec9a4c35
7
+ data.tar.gz: 9f3518501241b15821eeb5fddaca92433971415323932c8d63d5c973738f319d148e1a97e4b5a2dd62b68dd55e237e5ff290f3059031f35812385debd8a6f118
data/CHANGELOG.md CHANGED
@@ -7,6 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [3.2.0] - 2025-06-12
11
+
12
+ ### Added
13
+
14
+ - Comprehensive benchmarking suite in `benchmark/` directory for measuring performance and memory usage across all export formats (SVG, PNG, HTML, ANSI)
15
+ - `benchmark_helper.rb` providing shared utilities for IPS, memory, and stack profiling
16
+ - Rake tasks for running benchmarks individually or all at once
17
+ - `benchmark/README.md` explaining usage, metrics, and interpretation of results
18
+ - `AGENTS.md` as a development guide for AI agents
19
+
20
+ ### Changed
21
+
22
+ - **SVG rendering**: Improved by **+130%** (from 184 i/s to 424 i/s) with **71% memory reduction**
23
+ - **HTML rendering**: Now the fastest export format at **1,876 i/s** (rendering-only benchmark)
24
+ - **Memory efficiency**: HTML now uses **6x less memory** than SVG (previously 22x)
25
+ - Updated minimum Ruby version requirement to >= 3.2.0
26
+ - Updated GitHub workflow Ruby matrix to test only supported versions (3.2, 3.3, 3.4, 4.0)
27
+ - Updated `README.md` with benchmark documentation and contribution guidelines
28
+
10
29
  ## [3.1.1] - 2025-11-25
11
30
 
12
31
  - Update required_ruby_version to support >= rather than ~> ready for Ruby 4
@@ -83,7 +102,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
83
102
  - bump dependencies
84
103
  - fix `required_ruby_version` for Ruby 3 support
85
104
 
86
- [unreleased]: https://github.com/whomwah/rqrcode/compare/v3.1.1...HEAD
105
+ [unreleased]: https://github.com/whomwah/rqrcode/compare/v3.2.0...HEAD
106
+ [3.2.0]: https://github.com/whomwah/rqrcode/compare/v3.1.1...v3.2.0
87
107
  [3.1.1]: https://github.com/whomwah/rqrcode/compare/v3.1.0...v3.1.1
88
108
  [3.1.0]: https://github.com/whomwah/rqrcode/compare/v3.0.0...v3.1.0
89
109
  [3.0.0]: https://github.com/whomwah/rqrcode/compare/v2.2.0...v3.0.0
data/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  [RQRCode](https://github.com/whomwah/rqrcode) is a library for creating and rendering QR codes into various formats. It has a simple interface with all the standard QR code options. It was adapted from the Javascript library by Kazuhiko Arase.
7
7
 
8
8
  - QR code is trademarked by Denso Wave inc
9
- - Minimum Ruby version is `>= 3.0.0`
9
+ - Minimum Ruby version is `>= 3.2.0`
10
10
 
11
11
  ## Installing
12
12
 
@@ -275,6 +275,10 @@ $ rake standard # checks
275
275
  $ rake standard:fix # fixes
276
276
  ```
277
277
 
278
+ ## Benchmarks
279
+
280
+ RQRCode includes comprehensive performance benchmarks for tracking export format performance over time. See the [benchmark README](benchmark/README.md) for details on running benchmarks, interpreting results, and current performance baselines.
281
+
278
282
  ## Contributing
279
283
 
280
284
  I am not currently accepting any new renderers as the current `as_png`, `as_svg` and `as_ansi` work for most cases. If you need something different from what's available, the [`rqrcode_core`](https://github.com/whomwah/rqrcode_core) gem gives you access to all the QR Code information you will need so makes it simple to generate your own.
@@ -3,49 +3,34 @@
3
3
  module RQRCode
4
4
  module Export
5
5
  module HTML
6
- #
7
- # Use this module to HTML-ify the QR code if you just want the default HTML
8
- def as_html
9
- ["<table>", rows.as_html, "</table>"].join
10
- end
11
-
12
- private
13
-
14
- def rows
15
- Rows.new(@qrcode)
16
- end
6
+ TABLE_OPEN = "<table>"
7
+ TABLE_CLOSE = "</table>"
8
+ TR_OPEN = "<tr>"
9
+ TR_CLOSE = "</tr>"
10
+ TD_BLACK = '<td class="black"></td>'
11
+ TD_WHITE = '<td class="white"></td>'
17
12
 
18
- class Rows < Struct.new(:qr)
19
- def as_html
20
- rows.map(&:as_html).join
21
- end
22
-
23
- def rows
24
- qr.modules.each_with_index.map { |qr_module, row_index| Row.new(qr, qr_module, row_index) }
25
- end
26
- end
27
-
28
- class Row < Struct.new(:qr, :qr_module, :row_index)
29
- def as_html
30
- ["<tr>", cells.map(&:as_html).join, "</tr>"].join
31
- end
32
-
33
- def cells
34
- qr.modules.each_with_index.map { |qr_module, col_index| Cell.new(qr, col_index, row_index) }
35
- end
36
- end
37
-
38
- class Cell < Struct.new(:qr, :col_index, :row_index)
39
- def as_html
40
- "<td class=\"#{html_class}\"></td>"
13
+ def as_html
14
+ qr = @qrcode
15
+ module_count = qr.module_count
16
+
17
+ estimated_size = (module_count * module_count * 26) + (module_count * 9) + 15
18
+ result = String.new(capacity: estimated_size)
19
+
20
+ result << TABLE_OPEN
21
+ module_count.times do |row_index|
22
+ result << TR_OPEN
23
+ module_count.times do |col_index|
24
+ result << (qr.checked?(row_index, col_index) ? TD_BLACK : TD_WHITE)
25
+ end
26
+ result << TR_CLOSE
41
27
  end
28
+ result << TABLE_CLOSE
42
29
 
43
- def html_class
44
- qr.checked?(row_index, col_index) ? "black" : "white"
45
- end
30
+ result
46
31
  end
47
32
  end
48
33
  end
49
34
  end
50
35
 
51
- RQRCode::QRCode.send :include, RQRCode::Export::HTML
36
+ RQRCode::QRCode.include RQRCode::Export::HTML
@@ -15,76 +15,153 @@ module RQRCode
15
15
  end
16
16
 
17
17
  class Path < BaseOutputSVG
18
+ # Direction constants for edge representation
19
+ # Edges stored as [start_x, start_y, direction] arrays instead of Struct
20
+ DIR_UP = 0
21
+ DIR_DOWN = 1
22
+ DIR_LEFT = 2
23
+ DIR_RIGHT = 3
24
+
25
+ # Pre-computed end coordinate deltas: [dx, dy] for each direction
26
+ DIR_DELTAS = [
27
+ [0, -1], # UP
28
+ [0, 1], # DOWN
29
+ [-1, 0], # LEFT
30
+ [1, 0] # RIGHT
31
+ ].freeze
32
+
33
+ # SVG path commands indexed by direction constant
34
+ DIR_PATH_COMMANDS = ["v-", "v", "h-", "h"].freeze
35
+
18
36
  def build(module_size, options = {})
19
- # Extract values from options
20
37
  color = options[:color]
21
38
  offset_x = options[:offset_x].to_i
22
39
  offset_y = options[:offset_y].to_i
23
40
 
24
- # Prefix hexadecimal colors unless using a named color (symbol)
25
- color = "##{color}" unless color.is_a?(Symbol)
26
-
27
41
  modules_array = @qrcode.modules
28
- matrix_width = matrix_height = modules_array.length + 1
29
- empty_row = [Array.new(matrix_width - 1, false)]
30
- edge_matrix = Array.new(matrix_height) { Array.new(matrix_width) }
31
-
32
- (empty_row + modules_array + empty_row).each_cons(2).with_index do |row_pair, row_index|
33
- first_row, second_row = row_pair
34
-
35
- # horizontal edges
36
- first_row.zip(second_row).each_with_index do |cell_pair, column_index|
37
- edge = case cell_pair
38
- when [true, false] then Edge.new column_index + 1, row_index, :left
39
- when [false, true] then Edge.new column_index, row_index, :right
42
+ module_count = modules_array.length
43
+ matrix_size = module_count + 1
44
+
45
+ # Edge matrix stores arrays of [x, y, direction] tuples
46
+ edge_matrix = Array.new(matrix_size) { Array.new(matrix_size) }
47
+ edge_count = 0
48
+
49
+ # Process horizontal edges (between vertically adjacent cells)
50
+ (module_count + 1).times do |row_index|
51
+ module_count.times do |col_index|
52
+ above = row_index > 0 && modules_array[row_index - 1][col_index]
53
+ below = row_index < module_count && modules_array[row_index][col_index]
54
+
55
+ if above && !below
56
+ # Edge going left at (col+1, row)
57
+ x = col_index + 1
58
+ y = row_index
59
+ (edge_matrix[y][x] ||= []) << [x, y, DIR_LEFT]
60
+ edge_count += 1
61
+ elsif !above && below
62
+ # Edge going right at (col, row)
63
+ x = col_index
64
+ y = row_index
65
+ (edge_matrix[y][x] ||= []) << [x, y, DIR_RIGHT]
66
+ edge_count += 1
40
67
  end
41
-
42
- (edge_matrix[edge.start_y][edge.start_x] ||= []) << edge if edge
43
68
  end
69
+ end
44
70
 
45
- # vertical edges
46
- ([false] + second_row + [false]).each_cons(2).each_with_index do |cell_pair, column_index|
47
- edge = case cell_pair
48
- when [true, false] then Edge.new column_index, row_index, :down
49
- when [false, true] then Edge.new column_index, row_index + 1, :up
71
+ # Process vertical edges (between horizontally adjacent cells)
72
+ module_count.times do |row_index|
73
+ (module_count + 1).times do |col_index|
74
+ left = col_index > 0 && modules_array[row_index][col_index - 1]
75
+ right = col_index < module_count && modules_array[row_index][col_index]
76
+
77
+ if left && !right
78
+ # Edge going down at (col, row)
79
+ x = col_index
80
+ y = row_index
81
+ (edge_matrix[y][x] ||= []) << [x, y, DIR_DOWN]
82
+ edge_count += 1
83
+ elsif !left && right
84
+ # Edge going up at (col, row+1)
85
+ x = col_index
86
+ y = row_index + 1
87
+ (edge_matrix[y][x] ||= []) << [x, y, DIR_UP]
88
+ edge_count += 1
50
89
  end
51
-
52
- (edge_matrix[edge.start_y][edge.start_x] ||= []) << edge if edge
53
90
  end
54
91
  end
55
92
 
56
- edge_count = edge_matrix.flatten.compact.count
57
- path = []
93
+ path_parts = []
58
94
 
59
- while edge_count > 0
60
- edge_loop = []
61
- next_matrix_cell = edge_matrix.find(&:any?).find { |cell| cell&.any? }
62
- edge = next_matrix_cell.first
63
-
64
- while edge
65
- edge_loop << edge
66
- matrix_cell = edge_matrix[edge.start_y][edge.start_x]
67
- matrix_cell.delete edge
68
- edge_matrix[edge.start_y][edge.start_x] = nil if matrix_cell.empty?
69
- edge_count -= 1
95
+ # Track search position to avoid re-scanning from beginning
96
+ search_y = 0
97
+ search_x = 0
70
98
 
71
- # try to find an edge continuing the current edge
72
- edge = edge_matrix[edge.end_y][edge.end_x]&.first
99
+ while edge_count > 0
100
+ # Find next non-empty cell, starting from last position
101
+ start_edge = nil
102
+ found_y = search_y
103
+ found_x = search_x
104
+
105
+ # Continue from where we left off
106
+ (search_y...matrix_size).each do |y|
107
+ start_col = (y == search_y) ? search_x : 0
108
+ (start_col...matrix_size).each do |x|
109
+ cell = edge_matrix[y][x]
110
+ next unless cell && !cell.empty?
111
+
112
+ start_edge = cell.first
113
+ found_y = y
114
+ found_x = x
115
+ break
116
+ end
117
+ break if start_edge
73
118
  end
74
119
 
75
- first_edge = edge_loop.first
76
- edge_loop_string = SVG_PATH_COMMANDS[:move]
77
- edge_loop_string += "#{first_edge.start_x} #{first_edge.start_y}"
120
+ # Update search position for next iteration
121
+ search_y = found_y
122
+ search_x = found_x
123
+
124
+ # Build path string directly without intermediate edge_loop array
125
+ path_str = String.new(capacity: 64)
126
+ path_str << "M" << start_edge[0].to_s << " " << start_edge[1].to_s
127
+
128
+ current_edge = start_edge
129
+ current_dir = nil
130
+ current_count = 0
78
131
 
79
- edge_loop.chunk(&:direction).to_a[0...-1].each do |direction, edges|
80
- edge_loop_string << "#{SVG_PATH_COMMANDS[direction]}#{edges.length}"
132
+ while current_edge
133
+ ex, ey, edir = current_edge
134
+
135
+ # Remove edge from matrix
136
+ cell = edge_matrix[ey][ex]
137
+ cell.delete(current_edge)
138
+ edge_matrix[ey][ex] = nil if cell.empty?
139
+ edge_count -= 1
140
+
141
+ # Accumulate consecutive edges in same direction
142
+ if edir == current_dir
143
+ current_count += 1
144
+ else
145
+ # Flush previous direction
146
+ path_str << DIR_PATH_COMMANDS[current_dir] << current_count.to_s if current_dir
147
+ current_dir = edir
148
+ current_count = 1
149
+ end
150
+
151
+ # Find next edge at end coordinates
152
+ delta = DIR_DELTAS[edir]
153
+ next_x = ex + delta[0]
154
+ next_y = ey + delta[1]
155
+ next_cell = edge_matrix[next_y]&.[](next_x)
156
+ current_edge = next_cell&.first
81
157
  end
82
- edge_loop_string << SVG_PATH_COMMANDS[:close]
83
158
 
84
- path << edge_loop_string
159
+ # Don't output the last direction segment - close path instead
160
+ path_str << "z"
161
+ path_parts << path_str
85
162
  end
86
163
 
87
- @result << %{<path d="#{path.join}" fill="#{color}" transform="translate(#{offset_x},#{offset_y}) scale(#{module_size})"/>}
164
+ @result << %{<path d="#{path_parts.join}" fill="#{color}" transform="translate(#{offset_x},#{offset_y}) scale(#{module_size})"/>}
88
165
  end
89
166
  end
90
167
 
@@ -95,38 +172,14 @@ module RQRCode
95
172
  offset_x = options[:offset_x].to_i
96
173
  offset_y = options[:offset_y].to_i
97
174
 
98
- # Prefix hexadecimal colors unless using a named color (symbol)
99
- color = "##{color}" unless color.is_a?(Symbol)
100
-
101
175
  @qrcode.modules.each_index do |c|
102
- tmp = []
103
176
  @qrcode.modules.each_index do |r|
177
+ next unless @qrcode.checked?(c, r)
178
+
104
179
  x = r * module_size + offset_x
105
180
  y = c * module_size + offset_y
106
-
107
- next unless @qrcode.checked?(c, r)
108
- tmp << %(<rect width="#{module_size}" height="#{module_size}" x="#{x}" y="#{y}" fill="#{color}"/>)
181
+ @result << %(<rect width="#{module_size}" height="#{module_size}" x="#{x}" y="#{y}" fill="#{color}"/>)
109
182
  end
110
-
111
- @result << tmp.join
112
- end
113
- end
114
- end
115
-
116
- class Edge < Struct.new(:start_x, :start_y, :direction)
117
- def end_x
118
- case direction
119
- when :right then start_x + 1
120
- when :left then start_x - 1
121
- else start_x
122
- end
123
- end
124
-
125
- def end_y
126
- case direction
127
- when :down then start_y + 1
128
- when :up then start_y - 1
129
- else start_y
130
183
  end
131
184
  end
132
185
  end
@@ -184,7 +237,7 @@ module RQRCode
184
237
  color = options[:color] || "000"
185
238
  shape_rendering = options[:shape_rendering] || "crispEdges"
186
239
  module_size = options[:module_size] || 11
187
- standalone = options[:standalone].nil? ? true : options[:standalone]
240
+ standalone = options[:standalone].nil? || options[:standalone]
188
241
  viewbox = options[:viewbox].nil? ? false : options[:viewbox]
189
242
  svg_attributes = options[:svg_attributes] || {}
190
243
 
@@ -204,6 +257,9 @@ module RQRCode
204
257
  open_tag = %(<svg #{svg_tag_attributes}>)
205
258
  close_tag = "</svg>"
206
259
 
260
+ # Prefix hexadecimal colors unless using a named color (symbol)
261
+ color = "##{color}" unless color.is_a?(Symbol)
262
+
207
263
  output_tag = (use_path ? Path : Rect).new(@qrcode)
208
264
  output_tag.build(module_size, offset_x: offset_x, offset_y: offset_y, color: color)
209
265
 
@@ -224,4 +280,4 @@ module RQRCode
224
280
  end
225
281
  end
226
282
 
227
- RQRCode::QRCode.send :include, RQRCode::Export::SVG
283
+ RQRCode::QRCode.include RQRCode::Export::SVG
@@ -5,6 +5,7 @@ require "forwardable"
5
5
  module RQRCode # :nodoc:
6
6
  class QRCode
7
7
  extend Forwardable
8
+
8
9
  def_delegators :@qrcode, :to_s
9
10
  def_delegators :@qrcode, :modules # deprecated
10
11
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RQRCode
4
- VERSION = "3.1.1"
4
+ VERSION = "3.2.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rqrcode
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.1
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Duncan Robertson
@@ -9,6 +9,20 @@ bindir: exe
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: chunky_png
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '1.0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '1.0'
12
26
  - !ruby/object:Gem::Dependency
13
27
  name: rqrcode_core
14
28
  requirement: !ruby/object:Gem::Requirement
@@ -24,33 +38,47 @@ dependencies:
24
38
  - !ruby/object:Gem::Version
25
39
  version: '2.0'
26
40
  - !ruby/object:Gem::Dependency
27
- name: chunky_png
41
+ name: benchmark-ips
28
42
  requirement: !ruby/object:Gem::Requirement
29
43
  requirements:
30
44
  - - "~>"
31
45
  - !ruby/object:Gem::Version
32
- version: '1.0'
33
- type: :runtime
46
+ version: '2.0'
47
+ type: :development
34
48
  prerelease: false
35
49
  version_requirements: !ruby/object:Gem::Requirement
36
50
  requirements:
37
51
  - - "~>"
38
52
  - !ruby/object:Gem::Version
39
- version: '1.0'
53
+ version: '2.0'
40
54
  - !ruby/object:Gem::Dependency
41
55
  name: bundler
42
56
  requirement: !ruby/object:Gem::Requirement
43
57
  requirements:
44
58
  - - "~>"
45
59
  - !ruby/object:Gem::Version
46
- version: '2.0'
60
+ version: '4.0'
47
61
  type: :development
48
62
  prerelease: false
49
63
  version_requirements: !ruby/object:Gem::Requirement
50
64
  requirements:
51
65
  - - "~>"
52
66
  - !ruby/object:Gem::Version
53
- version: '2.0'
67
+ version: '4.0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: memory_profiler
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '1.0'
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '1.0'
54
82
  - !ruby/object:Gem::Dependency
55
83
  name: rake
56
84
  requirement: !ruby/object:Gem::Requirement
@@ -79,6 +107,20 @@ dependencies:
79
107
  - - "~>"
80
108
  - !ruby/object:Gem::Version
81
109
  version: '3.5'
110
+ - !ruby/object:Gem::Dependency
111
+ name: stackprof
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '0.2'
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '0.2'
82
124
  - !ruby/object:Gem::Dependency
83
125
  name: standard
84
126
  requirement: !ruby/object:Gem::Requirement
@@ -103,22 +145,9 @@ executables: []
103
145
  extensions: []
104
146
  extra_rdoc_files: []
105
147
  files:
106
- - ".github/FUNDING.yml"
107
- - ".github/workflows/ruby.yml"
108
- - ".gitignore"
109
- - ".rspec"
110
- - ".standard.yml"
111
148
  - CHANGELOG.md
112
- - Gemfile
113
- - Gemfile.lock
114
149
  - LICENSE.txt
115
150
  - README.md
116
- - Rakefile
117
- - _config.yml
118
- - bin/console
119
- - images/ansi-screen-shot.png
120
- - images/github-qrcode.png
121
- - images/github-qrcode.svg
122
151
  - lib/rqrcode.rb
123
152
  - lib/rqrcode/export.rb
124
153
  - lib/rqrcode/export/ansi.rb
@@ -128,7 +157,6 @@ files:
128
157
  - lib/rqrcode/qrcode.rb
129
158
  - lib/rqrcode/qrcode/qrcode.rb
130
159
  - lib/rqrcode/version.rb
131
- - rqrcode.gemspec
132
160
  homepage: https://github.com/whomwah/rqrcode
133
161
  licenses:
134
162
  - MIT
@@ -142,14 +170,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
142
170
  requirements:
143
171
  - - ">="
144
172
  - !ruby/object:Gem::Version
145
- version: '3.0'
173
+ version: '3.2'
146
174
  required_rubygems_version: !ruby/object:Gem::Requirement
147
175
  requirements:
148
176
  - - ">="
149
177
  - !ruby/object:Gem::Version
150
178
  version: '0'
151
179
  requirements: []
152
- rubygems_version: 3.7.2
180
+ rubygems_version: 4.0.3
153
181
  specification_version: 4
154
182
  summary: A library to encode QR Codes
155
183
  test_files: []
data/.github/FUNDING.yml DELETED
@@ -1,4 +0,0 @@
1
- # These are supported funding model platforms
2
-
3
- github: whomwah
4
- buy_me_a_coffee: duncanrobertson
@@ -1,27 +0,0 @@
1
- name: rqrcode
2
-
3
- on:
4
- push:
5
- branches:
6
- - main
7
- - release
8
- pull_request: # Runs on any PR regardless of target branch
9
-
10
- jobs:
11
- Build:
12
- strategy:
13
- fail-fast: false
14
- matrix:
15
- os: [ubuntu-latest, macos-latest]
16
- ruby: ["3.0", "3.1", "3.2", "3.3", "3.4"]
17
- runs-on: ${{ matrix.os }}
18
- steps:
19
- - uses: actions/checkout@v3
20
- - uses: ruby/setup-ruby@v1
21
- with:
22
- ruby-version: ${{ matrix.ruby }}
23
- bundler-cache: true # runs 'bundle install' and caches installed gems automatically
24
- - name: Run Tests for Ruby ${{ matrix.ruby }} on ${{ matrix.os }}
25
- run: bundle exec rake spec
26
- - name: StandardRB check for Ruby ${{ matrix.ruby }} on ${{ matrix.os }}
27
- run: bundle exec standardrb --format progress
data/.gitignore DELETED
@@ -1,13 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /_yardoc/
4
- /coverage/
5
- /doc/
6
- /pkg/
7
- /spec/reports/
8
- /tmp/
9
- /.devcontainer/
10
- .rvmrc
11
- *.sublime-project
12
- *.sublime-workspace
13
- *.gem
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --color
2
- --require spec_helper
data/.standard.yml DELETED
@@ -1 +0,0 @@
1
- ruby_version: 2.7
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- # Specify your gem's dependencies in rqrcode-base.gemspec
4
- gemspec
data/Gemfile.lock DELETED
@@ -1,82 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- rqrcode (3.1.1)
5
- chunky_png (~> 1.0)
6
- rqrcode_core (~> 2.0)
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- ast (2.4.2)
12
- chunky_png (1.4.0)
13
- diff-lcs (1.5.1)
14
- json (2.7.2)
15
- language_server-protocol (3.17.0.3)
16
- lint_roller (1.1.0)
17
- parallel (1.26.3)
18
- parser (3.3.5.0)
19
- ast (~> 2.4.1)
20
- racc
21
- racc (1.8.1)
22
- rainbow (3.1.1)
23
- rake (13.2.1)
24
- regexp_parser (2.9.2)
25
- rqrcode_core (2.0.1)
26
- rspec (3.13.0)
27
- rspec-core (~> 3.13.0)
28
- rspec-expectations (~> 3.13.0)
29
- rspec-mocks (~> 3.13.0)
30
- rspec-core (3.13.1)
31
- rspec-support (~> 3.13.0)
32
- rspec-expectations (3.13.2)
33
- diff-lcs (>= 1.2.0, < 2.0)
34
- rspec-support (~> 3.13.0)
35
- rspec-mocks (3.13.1)
36
- diff-lcs (>= 1.2.0, < 2.0)
37
- rspec-support (~> 3.13.0)
38
- rspec-support (3.13.1)
39
- rubocop (1.66.1)
40
- json (~> 2.3)
41
- language_server-protocol (>= 3.17.0)
42
- parallel (~> 1.10)
43
- parser (>= 3.3.0.2)
44
- rainbow (>= 2.2.2, < 4.0)
45
- regexp_parser (>= 2.4, < 3.0)
46
- rubocop-ast (>= 1.32.2, < 2.0)
47
- ruby-progressbar (~> 1.7)
48
- unicode-display_width (>= 2.4.0, < 3.0)
49
- rubocop-ast (1.32.3)
50
- parser (>= 3.3.1.0)
51
- rubocop-performance (1.22.1)
52
- rubocop (>= 1.48.1, < 2.0)
53
- rubocop-ast (>= 1.31.1, < 2.0)
54
- ruby-progressbar (1.13.0)
55
- standard (1.41.0)
56
- language_server-protocol (~> 3.17.0.2)
57
- lint_roller (~> 1.0)
58
- rubocop (~> 1.66.0)
59
- standard-custom (~> 1.0.0)
60
- standard-performance (~> 1.5)
61
- standard-custom (1.0.2)
62
- lint_roller (~> 1.0)
63
- rubocop (~> 1.50)
64
- standard-performance (1.5.0)
65
- lint_roller (~> 1.1)
66
- rubocop-performance (~> 1.22.0)
67
- unicode-display_width (2.6.0)
68
-
69
- PLATFORMS
70
- aarch64-linux
71
- ruby
72
- x86_64-linux
73
-
74
- DEPENDENCIES
75
- bundler (~> 2.0)
76
- rake (~> 13.0)
77
- rqrcode!
78
- rspec (~> 3.5)
79
- standard (~> 1.41)
80
-
81
- BUNDLED WITH
82
- 2.4.10
data/Rakefile DELETED
@@ -1,10 +0,0 @@
1
- begin
2
- require "standard/rake"
3
- require "rspec/core/rake_task"
4
-
5
- RSpec::Core::RakeTask.new(:spec)
6
-
7
- task default: [:spec, "standard:fix"]
8
- rescue LoadError
9
- # no standard/rspec available
10
- end
data/_config.yml DELETED
@@ -1 +0,0 @@
1
- theme: jekyll-theme-slate
data/bin/console DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "rqrcode"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start(__FILE__)
Binary file
Binary file
@@ -1,32 +0,0 @@
1
- <?xml version="1.0" standalone="yes"?>
2
- <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" width="174" height="174" shape-rendering="crispEdges">
3
- <rect width="6" height="6" x="0" y="0" style="fill:#000"/><rect width="6" height="6" x="6" y="0" style="fill:#000"/><rect width="6" height="6" x="12" y="0" style="fill:#000"/><rect width="6" height="6" x="18" y="0" style="fill:#000"/><rect width="6" height="6" x="24" y="0" style="fill:#000"/><rect width="6" height="6" x="30" y="0" style="fill:#000"/><rect width="6" height="6" x="36" y="0" style="fill:#000"/><rect width="6" height="6" x="54" y="0" style="fill:#000"/><rect width="6" height="6" x="60" y="0" style="fill:#000"/><rect width="6" height="6" x="66" y="0" style="fill:#000"/><rect width="6" height="6" x="78" y="0" style="fill:#000"/><rect width="6" height="6" x="108" y="0" style="fill:#000"/><rect width="6" height="6" x="114" y="0" style="fill:#000"/><rect width="6" height="6" x="132" y="0" style="fill:#000"/><rect width="6" height="6" x="138" y="0" style="fill:#000"/><rect width="6" height="6" x="144" y="0" style="fill:#000"/><rect width="6" height="6" x="150" y="0" style="fill:#000"/><rect width="6" height="6" x="156" y="0" style="fill:#000"/><rect width="6" height="6" x="162" y="0" style="fill:#000"/><rect width="6" height="6" x="168" y="0" style="fill:#000"/>
4
- <rect width="6" height="6" x="0" y="6" style="fill:#000"/><rect width="6" height="6" x="36" y="6" style="fill:#000"/><rect width="6" height="6" x="60" y="6" style="fill:#000"/><rect width="6" height="6" x="66" y="6" style="fill:#000"/><rect width="6" height="6" x="78" y="6" style="fill:#000"/><rect width="6" height="6" x="84" y="6" style="fill:#000"/><rect width="6" height="6" x="90" y="6" style="fill:#000"/><rect width="6" height="6" x="96" y="6" style="fill:#000"/><rect width="6" height="6" x="108" y="6" style="fill:#000"/><rect width="6" height="6" x="120" y="6" style="fill:#000"/><rect width="6" height="6" x="132" y="6" style="fill:#000"/><rect width="6" height="6" x="168" y="6" style="fill:#000"/>
5
- <rect width="6" height="6" x="0" y="12" style="fill:#000"/><rect width="6" height="6" x="12" y="12" style="fill:#000"/><rect width="6" height="6" x="18" y="12" style="fill:#000"/><rect width="6" height="6" x="24" y="12" style="fill:#000"/><rect width="6" height="6" x="36" y="12" style="fill:#000"/><rect width="6" height="6" x="48" y="12" style="fill:#000"/><rect width="6" height="6" x="54" y="12" style="fill:#000"/><rect width="6" height="6" x="72" y="12" style="fill:#000"/><rect width="6" height="6" x="90" y="12" style="fill:#000"/><rect width="6" height="6" x="108" y="12" style="fill:#000"/><rect width="6" height="6" x="120" y="12" style="fill:#000"/><rect width="6" height="6" x="132" y="12" style="fill:#000"/><rect width="6" height="6" x="144" y="12" style="fill:#000"/><rect width="6" height="6" x="150" y="12" style="fill:#000"/><rect width="6" height="6" x="156" y="12" style="fill:#000"/><rect width="6" height="6" x="168" y="12" style="fill:#000"/>
6
- <rect width="6" height="6" x="0" y="18" style="fill:#000"/><rect width="6" height="6" x="12" y="18" style="fill:#000"/><rect width="6" height="6" x="18" y="18" style="fill:#000"/><rect width="6" height="6" x="24" y="18" style="fill:#000"/><rect width="6" height="6" x="36" y="18" style="fill:#000"/><rect width="6" height="6" x="48" y="18" style="fill:#000"/><rect width="6" height="6" x="54" y="18" style="fill:#000"/><rect width="6" height="6" x="60" y="18" style="fill:#000"/><rect width="6" height="6" x="78" y="18" style="fill:#000"/><rect width="6" height="6" x="90" y="18" style="fill:#000"/><rect width="6" height="6" x="102" y="18" style="fill:#000"/><rect width="6" height="6" x="114" y="18" style="fill:#000"/><rect width="6" height="6" x="120" y="18" style="fill:#000"/><rect width="6" height="6" x="132" y="18" style="fill:#000"/><rect width="6" height="6" x="144" y="18" style="fill:#000"/><rect width="6" height="6" x="150" y="18" style="fill:#000"/><rect width="6" height="6" x="156" y="18" style="fill:#000"/><rect width="6" height="6" x="168" y="18" style="fill:#000"/>
7
- <rect width="6" height="6" x="0" y="24" style="fill:#000"/><rect width="6" height="6" x="12" y="24" style="fill:#000"/><rect width="6" height="6" x="18" y="24" style="fill:#000"/><rect width="6" height="6" x="24" y="24" style="fill:#000"/><rect width="6" height="6" x="36" y="24" style="fill:#000"/><rect width="6" height="6" x="60" y="24" style="fill:#000"/><rect width="6" height="6" x="66" y="24" style="fill:#000"/><rect width="6" height="6" x="72" y="24" style="fill:#000"/><rect width="6" height="6" x="78" y="24" style="fill:#000"/><rect width="6" height="6" x="84" y="24" style="fill:#000"/><rect width="6" height="6" x="90" y="24" style="fill:#000"/><rect width="6" height="6" x="96" y="24" style="fill:#000"/><rect width="6" height="6" x="102" y="24" style="fill:#000"/><rect width="6" height="6" x="114" y="24" style="fill:#000"/><rect width="6" height="6" x="132" y="24" style="fill:#000"/><rect width="6" height="6" x="144" y="24" style="fill:#000"/><rect width="6" height="6" x="150" y="24" style="fill:#000"/><rect width="6" height="6" x="156" y="24" style="fill:#000"/><rect width="6" height="6" x="168" y="24" style="fill:#000"/>
8
- <rect width="6" height="6" x="0" y="30" style="fill:#000"/><rect width="6" height="6" x="36" y="30" style="fill:#000"/><rect width="6" height="6" x="60" y="30" style="fill:#000"/><rect width="6" height="6" x="66" y="30" style="fill:#000"/><rect width="6" height="6" x="90" y="30" style="fill:#000"/><rect width="6" height="6" x="102" y="30" style="fill:#000"/><rect width="6" height="6" x="108" y="30" style="fill:#000"/><rect width="6" height="6" x="132" y="30" style="fill:#000"/><rect width="6" height="6" x="168" y="30" style="fill:#000"/>
9
- <rect width="6" height="6" x="0" y="36" style="fill:#000"/><rect width="6" height="6" x="6" y="36" style="fill:#000"/><rect width="6" height="6" x="12" y="36" style="fill:#000"/><rect width="6" height="6" x="18" y="36" style="fill:#000"/><rect width="6" height="6" x="24" y="36" style="fill:#000"/><rect width="6" height="6" x="30" y="36" style="fill:#000"/><rect width="6" height="6" x="36" y="36" style="fill:#000"/><rect width="6" height="6" x="48" y="36" style="fill:#000"/><rect width="6" height="6" x="60" y="36" style="fill:#000"/><rect width="6" height="6" x="72" y="36" style="fill:#000"/><rect width="6" height="6" x="84" y="36" style="fill:#000"/><rect width="6" height="6" x="96" y="36" style="fill:#000"/><rect width="6" height="6" x="108" y="36" style="fill:#000"/><rect width="6" height="6" x="120" y="36" style="fill:#000"/><rect width="6" height="6" x="132" y="36" style="fill:#000"/><rect width="6" height="6" x="138" y="36" style="fill:#000"/><rect width="6" height="6" x="144" y="36" style="fill:#000"/><rect width="6" height="6" x="150" y="36" style="fill:#000"/><rect width="6" height="6" x="156" y="36" style="fill:#000"/><rect width="6" height="6" x="162" y="36" style="fill:#000"/><rect width="6" height="6" x="168" y="36" style="fill:#000"/>
10
- <rect width="6" height="6" x="54" y="42" style="fill:#000"/><rect width="6" height="6" x="72" y="42" style="fill:#000"/><rect width="6" height="6" x="78" y="42" style="fill:#000"/><rect width="6" height="6" x="84" y="42" style="fill:#000"/><rect width="6" height="6" x="114" y="42" style="fill:#000"/>
11
- <rect width="6" height="6" x="18" y="48" style="fill:#000"/><rect width="6" height="6" x="24" y="48" style="fill:#000"/><rect width="6" height="6" x="36" y="48" style="fill:#000"/><rect width="6" height="6" x="42" y="48" style="fill:#000"/><rect width="6" height="6" x="54" y="48" style="fill:#000"/><rect width="6" height="6" x="72" y="48" style="fill:#000"/><rect width="6" height="6" x="90" y="48" style="fill:#000"/><rect width="6" height="6" x="96" y="48" style="fill:#000"/><rect width="6" height="6" x="108" y="48" style="fill:#000"/><rect width="6" height="6" x="114" y="48" style="fill:#000"/><rect width="6" height="6" x="120" y="48" style="fill:#000"/><rect width="6" height="6" x="150" y="48" style="fill:#000"/><rect width="6" height="6" x="156" y="48" style="fill:#000"/>
12
- <rect width="6" height="6" x="12" y="54" style="fill:#000"/><rect width="6" height="6" x="18" y="54" style="fill:#000"/><rect width="6" height="6" x="24" y="54" style="fill:#000"/><rect width="6" height="6" x="30" y="54" style="fill:#000"/><rect width="6" height="6" x="54" y="54" style="fill:#000"/><rect width="6" height="6" x="72" y="54" style="fill:#000"/><rect width="6" height="6" x="78" y="54" style="fill:#000"/><rect width="6" height="6" x="84" y="54" style="fill:#000"/><rect width="6" height="6" x="96" y="54" style="fill:#000"/><rect width="6" height="6" x="120" y="54" style="fill:#000"/><rect width="6" height="6" x="132" y="54" style="fill:#000"/><rect width="6" height="6" x="144" y="54" style="fill:#000"/><rect width="6" height="6" x="150" y="54" style="fill:#000"/><rect width="6" height="6" x="162" y="54" style="fill:#000"/>
13
- <rect width="6" height="6" x="6" y="60" style="fill:#000"/><rect width="6" height="6" x="18" y="60" style="fill:#000"/><rect width="6" height="6" x="36" y="60" style="fill:#000"/><rect width="6" height="6" x="48" y="60" style="fill:#000"/><rect width="6" height="6" x="78" y="60" style="fill:#000"/><rect width="6" height="6" x="108" y="60" style="fill:#000"/><rect width="6" height="6" x="132" y="60" style="fill:#000"/>
14
- <rect width="6" height="6" x="6" y="66" style="fill:#000"/><rect width="6" height="6" x="12" y="66" style="fill:#000"/><rect width="6" height="6" x="18" y="66" style="fill:#000"/><rect width="6" height="6" x="30" y="66" style="fill:#000"/><rect width="6" height="6" x="42" y="66" style="fill:#000"/><rect width="6" height="6" x="48" y="66" style="fill:#000"/><rect width="6" height="6" x="54" y="66" style="fill:#000"/><rect width="6" height="6" x="72" y="66" style="fill:#000"/><rect width="6" height="6" x="78" y="66" style="fill:#000"/><rect width="6" height="6" x="84" y="66" style="fill:#000"/><rect width="6" height="6" x="96" y="66" style="fill:#000"/><rect width="6" height="6" x="108" y="66" style="fill:#000"/><rect width="6" height="6" x="126" y="66" style="fill:#000"/><rect width="6" height="6" x="150" y="66" style="fill:#000"/><rect width="6" height="6" x="168" y="66" style="fill:#000"/>
15
- <rect width="6" height="6" x="24" y="72" style="fill:#000"/><rect width="6" height="6" x="36" y="72" style="fill:#000"/><rect width="6" height="6" x="42" y="72" style="fill:#000"/><rect width="6" height="6" x="48" y="72" style="fill:#000"/><rect width="6" height="6" x="54" y="72" style="fill:#000"/><rect width="6" height="6" x="60" y="72" style="fill:#000"/><rect width="6" height="6" x="78" y="72" style="fill:#000"/><rect width="6" height="6" x="90" y="72" style="fill:#000"/><rect width="6" height="6" x="102" y="72" style="fill:#000"/><rect width="6" height="6" x="114" y="72" style="fill:#000"/><rect width="6" height="6" x="126" y="72" style="fill:#000"/><rect width="6" height="6" x="132" y="72" style="fill:#000"/><rect width="6" height="6" x="138" y="72" style="fill:#000"/><rect width="6" height="6" x="150" y="72" style="fill:#000"/><rect width="6" height="6" x="162" y="72" style="fill:#000"/>
16
- <rect width="6" height="6" x="6" y="78" style="fill:#000"/><rect width="6" height="6" x="12" y="78" style="fill:#000"/><rect width="6" height="6" x="24" y="78" style="fill:#000"/><rect width="6" height="6" x="30" y="78" style="fill:#000"/><rect width="6" height="6" x="78" y="78" style="fill:#000"/><rect width="6" height="6" x="84" y="78" style="fill:#000"/><rect width="6" height="6" x="102" y="78" style="fill:#000"/><rect width="6" height="6" x="132" y="78" style="fill:#000"/><rect width="6" height="6" x="144" y="78" style="fill:#000"/><rect width="6" height="6" x="156" y="78" style="fill:#000"/><rect width="6" height="6" x="168" y="78" style="fill:#000"/>
17
- <rect width="6" height="6" x="0" y="84" style="fill:#000"/><rect width="6" height="6" x="12" y="84" style="fill:#000"/><rect width="6" height="6" x="18" y="84" style="fill:#000"/><rect width="6" height="6" x="30" y="84" style="fill:#000"/><rect width="6" height="6" x="36" y="84" style="fill:#000"/><rect width="6" height="6" x="42" y="84" style="fill:#000"/><rect width="6" height="6" x="48" y="84" style="fill:#000"/><rect width="6" height="6" x="72" y="84" style="fill:#000"/><rect width="6" height="6" x="78" y="84" style="fill:#000"/><rect width="6" height="6" x="108" y="84" style="fill:#000"/><rect width="6" height="6" x="114" y="84" style="fill:#000"/><rect width="6" height="6" x="120" y="84" style="fill:#000"/><rect width="6" height="6" x="150" y="84" style="fill:#000"/><rect width="6" height="6" x="162" y="84" style="fill:#000"/><rect width="6" height="6" x="168" y="84" style="fill:#000"/>
18
- <rect width="6" height="6" x="0" y="90" style="fill:#000"/><rect width="6" height="6" x="12" y="90" style="fill:#000"/><rect width="6" height="6" x="30" y="90" style="fill:#000"/><rect width="6" height="6" x="60" y="90" style="fill:#000"/><rect width="6" height="6" x="78" y="90" style="fill:#000"/><rect width="6" height="6" x="102" y="90" style="fill:#000"/><rect width="6" height="6" x="108" y="90" style="fill:#000"/><rect width="6" height="6" x="120" y="90" style="fill:#000"/><rect width="6" height="6" x="150" y="90" style="fill:#000"/><rect width="6" height="6" x="156" y="90" style="fill:#000"/>
19
- <rect width="6" height="6" x="18" y="96" style="fill:#000"/><rect width="6" height="6" x="24" y="96" style="fill:#000"/><rect width="6" height="6" x="30" y="96" style="fill:#000"/><rect width="6" height="6" x="36" y="96" style="fill:#000"/><rect width="6" height="6" x="48" y="96" style="fill:#000"/><rect width="6" height="6" x="60" y="96" style="fill:#000"/><rect width="6" height="6" x="72" y="96" style="fill:#000"/><rect width="6" height="6" x="78" y="96" style="fill:#000"/><rect width="6" height="6" x="84" y="96" style="fill:#000"/><rect width="6" height="6" x="108" y="96" style="fill:#000"/><rect width="6" height="6" x="114" y="96" style="fill:#000"/><rect width="6" height="6" x="120" y="96" style="fill:#000"/><rect width="6" height="6" x="132" y="96" style="fill:#000"/><rect width="6" height="6" x="138" y="96" style="fill:#000"/><rect width="6" height="6" x="150" y="96" style="fill:#000"/><rect width="6" height="6" x="162" y="96" style="fill:#000"/>
20
- <rect width="6" height="6" x="0" y="102" style="fill:#000"/><rect width="6" height="6" x="6" y="102" style="fill:#000"/><rect width="6" height="6" x="12" y="102" style="fill:#000"/><rect width="6" height="6" x="18" y="102" style="fill:#000"/><rect width="6" height="6" x="54" y="102" style="fill:#000"/><rect width="6" height="6" x="66" y="102" style="fill:#000"/><rect width="6" height="6" x="96" y="102" style="fill:#000"/><rect width="6" height="6" x="102" y="102" style="fill:#000"/><rect width="6" height="6" x="108" y="102" style="fill:#000"/><rect width="6" height="6" x="120" y="102" style="fill:#000"/><rect width="6" height="6" x="132" y="102" style="fill:#000"/><rect width="6" height="6" x="138" y="102" style="fill:#000"/><rect width="6" height="6" x="144" y="102" style="fill:#000"/>
21
- <rect width="6" height="6" x="0" y="108" style="fill:#000"/><rect width="6" height="6" x="6" y="108" style="fill:#000"/><rect width="6" height="6" x="18" y="108" style="fill:#000"/><rect width="6" height="6" x="24" y="108" style="fill:#000"/><rect width="6" height="6" x="36" y="108" style="fill:#000"/><rect width="6" height="6" x="60" y="108" style="fill:#000"/><rect width="6" height="6" x="72" y="108" style="fill:#000"/><rect width="6" height="6" x="90" y="108" style="fill:#000"/><rect width="6" height="6" x="120" y="108" style="fill:#000"/><rect width="6" height="6" x="144" y="108" style="fill:#000"/><rect width="6" height="6" x="168" y="108" style="fill:#000"/>
22
- <rect width="6" height="6" x="0" y="114" style="fill:#000"/><rect width="6" height="6" x="6" y="114" style="fill:#000"/><rect width="6" height="6" x="12" y="114" style="fill:#000"/><rect width="6" height="6" x="18" y="114" style="fill:#000"/><rect width="6" height="6" x="24" y="114" style="fill:#000"/><rect width="6" height="6" x="30" y="114" style="fill:#000"/><rect width="6" height="6" x="42" y="114" style="fill:#000"/><rect width="6" height="6" x="48" y="114" style="fill:#000"/><rect width="6" height="6" x="60" y="114" style="fill:#000"/><rect width="6" height="6" x="72" y="114" style="fill:#000"/><rect width="6" height="6" x="78" y="114" style="fill:#000"/><rect width="6" height="6" x="90" y="114" style="fill:#000"/><rect width="6" height="6" x="126" y="114" style="fill:#000"/><rect width="6" height="6" x="132" y="114" style="fill:#000"/><rect width="6" height="6" x="138" y="114" style="fill:#000"/><rect width="6" height="6" x="156" y="114" style="fill:#000"/><rect width="6" height="6" x="168" y="114" style="fill:#000"/>
23
- <rect width="6" height="6" x="0" y="120" style="fill:#000"/><rect width="6" height="6" x="6" y="120" style="fill:#000"/><rect width="6" height="6" x="12" y="120" style="fill:#000"/><rect width="6" height="6" x="30" y="120" style="fill:#000"/><rect width="6" height="6" x="36" y="120" style="fill:#000"/><rect width="6" height="6" x="60" y="120" style="fill:#000"/><rect width="6" height="6" x="66" y="120" style="fill:#000"/><rect width="6" height="6" x="72" y="120" style="fill:#000"/><rect width="6" height="6" x="108" y="120" style="fill:#000"/><rect width="6" height="6" x="120" y="120" style="fill:#000"/><rect width="6" height="6" x="126" y="120" style="fill:#000"/><rect width="6" height="6" x="132" y="120" style="fill:#000"/><rect width="6" height="6" x="138" y="120" style="fill:#000"/><rect width="6" height="6" x="144" y="120" style="fill:#000"/><rect width="6" height="6" x="150" y="120" style="fill:#000"/><rect width="6" height="6" x="156" y="120" style="fill:#000"/><rect width="6" height="6" x="162" y="120" style="fill:#000"/><rect width="6" height="6" x="168" y="120" style="fill:#000"/>
24
- <rect width="6" height="6" x="48" y="126" style="fill:#000"/><rect width="6" height="6" x="60" y="126" style="fill:#000"/><rect width="6" height="6" x="78" y="126" style="fill:#000"/><rect width="6" height="6" x="84" y="126" style="fill:#000"/><rect width="6" height="6" x="120" y="126" style="fill:#000"/><rect width="6" height="6" x="144" y="126" style="fill:#000"/><rect width="6" height="6" x="150" y="126" style="fill:#000"/><rect width="6" height="6" x="156" y="126" style="fill:#000"/>
25
- <rect width="6" height="6" x="0" y="132" style="fill:#000"/><rect width="6" height="6" x="6" y="132" style="fill:#000"/><rect width="6" height="6" x="12" y="132" style="fill:#000"/><rect width="6" height="6" x="18" y="132" style="fill:#000"/><rect width="6" height="6" x="24" y="132" style="fill:#000"/><rect width="6" height="6" x="30" y="132" style="fill:#000"/><rect width="6" height="6" x="36" y="132" style="fill:#000"/><rect width="6" height="6" x="48" y="132" style="fill:#000"/><rect width="6" height="6" x="66" y="132" style="fill:#000"/><rect width="6" height="6" x="72" y="132" style="fill:#000"/><rect width="6" height="6" x="114" y="132" style="fill:#000"/><rect width="6" height="6" x="120" y="132" style="fill:#000"/><rect width="6" height="6" x="132" y="132" style="fill:#000"/><rect width="6" height="6" x="144" y="132" style="fill:#000"/><rect width="6" height="6" x="156" y="132" style="fill:#000"/>
26
- <rect width="6" height="6" x="0" y="138" style="fill:#000"/><rect width="6" height="6" x="36" y="138" style="fill:#000"/><rect width="6" height="6" x="60" y="138" style="fill:#000"/><rect width="6" height="6" x="66" y="138" style="fill:#000"/><rect width="6" height="6" x="72" y="138" style="fill:#000"/><rect width="6" height="6" x="78" y="138" style="fill:#000"/><rect width="6" height="6" x="96" y="138" style="fill:#000"/><rect width="6" height="6" x="108" y="138" style="fill:#000"/><rect width="6" height="6" x="114" y="138" style="fill:#000"/><rect width="6" height="6" x="120" y="138" style="fill:#000"/><rect width="6" height="6" x="144" y="138" style="fill:#000"/><rect width="6" height="6" x="150" y="138" style="fill:#000"/><rect width="6" height="6" x="162" y="138" style="fill:#000"/><rect width="6" height="6" x="168" y="138" style="fill:#000"/>
27
- <rect width="6" height="6" x="0" y="144" style="fill:#000"/><rect width="6" height="6" x="12" y="144" style="fill:#000"/><rect width="6" height="6" x="18" y="144" style="fill:#000"/><rect width="6" height="6" x="24" y="144" style="fill:#000"/><rect width="6" height="6" x="36" y="144" style="fill:#000"/><rect width="6" height="6" x="48" y="144" style="fill:#000"/><rect width="6" height="6" x="54" y="144" style="fill:#000"/><rect width="6" height="6" x="72" y="144" style="fill:#000"/><rect width="6" height="6" x="102" y="144" style="fill:#000"/><rect width="6" height="6" x="108" y="144" style="fill:#000"/><rect width="6" height="6" x="114" y="144" style="fill:#000"/><rect width="6" height="6" x="120" y="144" style="fill:#000"/><rect width="6" height="6" x="126" y="144" style="fill:#000"/><rect width="6" height="6" x="132" y="144" style="fill:#000"/><rect width="6" height="6" x="138" y="144" style="fill:#000"/><rect width="6" height="6" x="144" y="144" style="fill:#000"/><rect width="6" height="6" x="168" y="144" style="fill:#000"/>
28
- <rect width="6" height="6" x="0" y="150" style="fill:#000"/><rect width="6" height="6" x="12" y="150" style="fill:#000"/><rect width="6" height="6" x="18" y="150" style="fill:#000"/><rect width="6" height="6" x="24" y="150" style="fill:#000"/><rect width="6" height="6" x="36" y="150" style="fill:#000"/><rect width="6" height="6" x="48" y="150" style="fill:#000"/><rect width="6" height="6" x="60" y="150" style="fill:#000"/><rect width="6" height="6" x="66" y="150" style="fill:#000"/><rect width="6" height="6" x="72" y="150" style="fill:#000"/><rect width="6" height="6" x="78" y="150" style="fill:#000"/><rect width="6" height="6" x="84" y="150" style="fill:#000"/><rect width="6" height="6" x="96" y="150" style="fill:#000"/><rect width="6" height="6" x="126" y="150" style="fill:#000"/><rect width="6" height="6" x="138" y="150" style="fill:#000"/><rect width="6" height="6" x="162" y="150" style="fill:#000"/>
29
- <rect width="6" height="6" x="0" y="156" style="fill:#000"/><rect width="6" height="6" x="12" y="156" style="fill:#000"/><rect width="6" height="6" x="18" y="156" style="fill:#000"/><rect width="6" height="6" x="24" y="156" style="fill:#000"/><rect width="6" height="6" x="36" y="156" style="fill:#000"/><rect width="6" height="6" x="60" y="156" style="fill:#000"/><rect width="6" height="6" x="66" y="156" style="fill:#000"/><rect width="6" height="6" x="72" y="156" style="fill:#000"/><rect width="6" height="6" x="90" y="156" style="fill:#000"/><rect width="6" height="6" x="126" y="156" style="fill:#000"/><rect width="6" height="6" x="144" y="156" style="fill:#000"/><rect width="6" height="6" x="156" y="156" style="fill:#000"/><rect width="6" height="6" x="162" y="156" style="fill:#000"/><rect width="6" height="6" x="168" y="156" style="fill:#000"/>
30
- <rect width="6" height="6" x="0" y="162" style="fill:#000"/><rect width="6" height="6" x="36" y="162" style="fill:#000"/><rect width="6" height="6" x="54" y="162" style="fill:#000"/><rect width="6" height="6" x="72" y="162" style="fill:#000"/><rect width="6" height="6" x="84" y="162" style="fill:#000"/><rect width="6" height="6" x="114" y="162" style="fill:#000"/><rect width="6" height="6" x="120" y="162" style="fill:#000"/><rect width="6" height="6" x="132" y="162" style="fill:#000"/><rect width="6" height="6" x="144" y="162" style="fill:#000"/><rect width="6" height="6" x="150" y="162" style="fill:#000"/><rect width="6" height="6" x="156" y="162" style="fill:#000"/><rect width="6" height="6" x="168" y="162" style="fill:#000"/>
31
- <rect width="6" height="6" x="0" y="168" style="fill:#000"/><rect width="6" height="6" x="6" y="168" style="fill:#000"/><rect width="6" height="6" x="12" y="168" style="fill:#000"/><rect width="6" height="6" x="18" y="168" style="fill:#000"/><rect width="6" height="6" x="24" y="168" style="fill:#000"/><rect width="6" height="6" x="30" y="168" style="fill:#000"/><rect width="6" height="6" x="36" y="168" style="fill:#000"/><rect width="6" height="6" x="54" y="168" style="fill:#000"/><rect width="6" height="6" x="84" y="168" style="fill:#000"/><rect width="6" height="6" x="96" y="168" style="fill:#000"/><rect width="6" height="6" x="108" y="168" style="fill:#000"/><rect width="6" height="6" x="120" y="168" style="fill:#000"/><rect width="6" height="6" x="138" y="168" style="fill:#000"/><rect width="6" height="6" x="144" y="168" style="fill:#000"/>
32
- </svg>
data/rqrcode.gemspec DELETED
@@ -1,39 +0,0 @@
1
- lib = File.expand_path("../lib", __FILE__)
2
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require "rqrcode/version"
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = "rqrcode"
7
- spec.version = RQRCode::VERSION
8
- spec.platform = Gem::Platform::RUBY
9
- spec.authors = ["Duncan Robertson"]
10
- spec.email = ["duncan@whomwah.com"]
11
-
12
- spec.summary = "A library to encode QR Codes"
13
- spec.description = <<~EOF
14
- rqrcode is a library for encoding QR Codes. The simple
15
- interface allows you to create QR Code data structures
16
- and then render them in the way you choose.
17
- EOF
18
- spec.homepage = "https://github.com/whomwah/rqrcode"
19
- spec.license = "MIT"
20
- spec.metadata = {
21
- "bug_tracker_uri" => "https://github.com/whomwah/rqrcode/issues",
22
- "changelog_uri" => "https://github.com/whomwah/rqrcode/blob/main/CHANGELOG.md"
23
- }
24
-
25
- spec.files = Dir.chdir(File.expand_path("..", __FILE__)) do
26
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
27
- end
28
- spec.bindir = "exe"
29
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
30
- spec.require_paths = ["lib"]
31
-
32
- spec.required_ruby_version = ">= 3.0"
33
- spec.add_dependency "rqrcode_core", "~> 2.0"
34
- spec.add_dependency "chunky_png", "~> 1.0"
35
- spec.add_development_dependency "bundler", "~> 2.0"
36
- spec.add_development_dependency "rake", "~> 13.0"
37
- spec.add_development_dependency "rspec", "~> 3.5"
38
- spec.add_development_dependency "standard", "~> 1.41"
39
- end