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 +4 -4
- data/CHANGELOG.md +21 -1
- data/README.md +5 -1
- data/lib/rqrcode/export/html.rb +23 -38
- data/lib/rqrcode/export/svg.rb +133 -77
- data/lib/rqrcode/qrcode/qrcode.rb +1 -0
- data/lib/rqrcode/version.rb +1 -1
- metadata +51 -23
- data/.github/FUNDING.yml +0 -4
- data/.github/workflows/ruby.yml +0 -27
- data/.gitignore +0 -13
- data/.rspec +0 -2
- data/.standard.yml +0 -1
- data/Gemfile +0 -4
- data/Gemfile.lock +0 -82
- data/Rakefile +0 -10
- data/_config.yml +0 -1
- data/bin/console +0 -14
- data/images/ansi-screen-shot.png +0 -0
- data/images/github-qrcode.png +0 -0
- data/images/github-qrcode.svg +0 -32
- data/rqrcode.gemspec +0 -39
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: eac90f6e8b69031c243aab170efd37d9bfe552a5972dbc6c0dbf9e8d73d0653d
|
|
4
|
+
data.tar.gz: 203c2f454559f54c9d2f0629dd787ca799d668e0944edfbee5cfaffcaa1e1c6c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.
|
|
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.
|
|
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.
|
data/lib/rqrcode/export/html.rb
CHANGED
|
@@ -3,49 +3,34 @@
|
|
|
3
3
|
module RQRCode
|
|
4
4
|
module Export
|
|
5
5
|
module HTML
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
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.
|
|
36
|
+
RQRCode::QRCode.include RQRCode::Export::HTML
|
data/lib/rqrcode/export/svg.rb
CHANGED
|
@@ -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
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
|
|
57
|
-
path = []
|
|
93
|
+
path_parts = []
|
|
58
94
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
-
|
|
72
|
-
|
|
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
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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
|
-
|
|
80
|
-
|
|
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
|
|
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="#{
|
|
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?
|
|
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.
|
|
283
|
+
RQRCode::QRCode.include RQRCode::Export::SVG
|
data/lib/rqrcode/version.rb
CHANGED
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.
|
|
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:
|
|
41
|
+
name: benchmark-ips
|
|
28
42
|
requirement: !ruby/object:Gem::Requirement
|
|
29
43
|
requirements:
|
|
30
44
|
- - "~>"
|
|
31
45
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '
|
|
33
|
-
type: :
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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.
|
|
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:
|
|
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
data/.github/workflows/ruby.yml
DELETED
|
@@ -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
data/.rspec
DELETED
data/.standard.yml
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
ruby_version: 2.7
|
data/Gemfile
DELETED
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
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__)
|
data/images/ansi-screen-shot.png
DELETED
|
Binary file
|
data/images/github-qrcode.png
DELETED
|
Binary file
|
data/images/github-qrcode.svg
DELETED
|
@@ -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
|