rqrcode 3.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -2
- data/Gemfile.lock +1 -1
- data/README.md +17 -14
- data/lib/rqrcode/export/svg.rb +30 -12
- data/lib/rqrcode/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 43ab1903362d8d91be0e90db63e5fd1f1fe7ab68f217954cad099ba50244c070
|
4
|
+
data.tar.gz: 102e00189844e32950e07ca15afafd6e75c2288ea5af0df181c2daeb1ec02a2c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d939b8bf154cc50957f321023c01f065d163b8ba4d046184d0dbe99fa426c81a48454026f98f45a93c13a882990bdb0864e15c4bec4496c2e8005be78add4bb
|
7
|
+
data.tar.gz: e8c05cb0311ff4c93bec2afed05adde2797ab8669caa3d505055b536aac0b3b984524389442f238e7a12d4eaf175d83af508ba63218a8c963f7f0e600fe6e9a6
|
data/CHANGELOG.md
CHANGED
@@ -7,10 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
7
7
|
|
8
8
|
## [Unreleased]
|
9
9
|
|
10
|
+
## [3.1.0] - 2025-04-28
|
11
|
+
|
12
|
+
- Added support for `offset_x` and `offset_y` options in the `as_svg` method for independent x and y padding around QR codes [#153]
|
13
|
+
|
10
14
|
## [3.0.0] - 2025-04-24
|
11
15
|
|
12
16
|
- Drop support for Ruby <3.0 in order to keep up with dev dependencies.
|
13
|
-
- **Breaking Change**: The `rqrcode_core` gem has been updated to version
|
17
|
+
- **Breaking Change**: The `rqrcode_core` gem has been updated to version 2.0.0, which includes breaking changes. Please refer to the [rqrcode_core changelog](https://github.com/whomwah/rqrcode_core/blob/main/CHANGELOG.md)
|
14
18
|
|
15
19
|
## [2.2.0] - 2023-06-17
|
16
20
|
|
@@ -75,7 +79,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
75
79
|
- bump dependencies
|
76
80
|
- fix `required_ruby_version` for Ruby 3 support
|
77
81
|
|
78
|
-
[unreleased]: https://github.com/whomwah/rqrcode/compare/
|
82
|
+
[unreleased]: https://github.com/whomwah/rqrcode/compare/v3.1.0...HEAD
|
83
|
+
[3.1.0]: https://github.com/whomwah/rqrcode/compare/v3.0.0...v3.1.0
|
84
|
+
[3.0.0]: https://github.com/whomwah/rqrcode/compare/v2.2.0...v3.0.0
|
79
85
|
[2.2.0]: https://github.com/whomwah/rqrcode/compare/v2.1.2...v2.2.0
|
80
86
|
[2.1.2]: https://github.com/whomwah/rqrcode/compare/v2.1.1...v2.1.2
|
81
87
|
[2.1.1]: https://github.com/whomwah/rqrcode/compare/v2.1.0...v2.1.1
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -3,20 +3,17 @@
|
|
3
3
|

|
4
4
|
[](https://github.com/testdouble/standard)
|
5
5
|
|
6
|
-
|
7
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.
|
8
7
|
|
9
|
-
|
10
|
-
|
11
|
-
* For `rqrcode` releases `< 2.0.0` please use [this README](https://github.com/whomwah/rqrcode/blob/v1.2.0/README.md)
|
12
|
-
* For `rqrcode` releases `< 1.0.0` please use [this README](https://github.com/whomwah/rqrcode/blob/v0.9.0/README.md)
|
8
|
+
- QR code is trademarked by Denso Wave inc
|
9
|
+
- Minimum Ruby version is `>= 3.0.0`
|
13
10
|
|
14
11
|
## Installing
|
15
12
|
|
16
13
|
Add this line to your application's `Gemfile`:
|
17
14
|
|
18
15
|
```ruby
|
19
|
-
gem "rqrcode", "~>
|
16
|
+
gem "rqrcode", "~> 3.0"
|
20
17
|
```
|
21
18
|
|
22
19
|
or install manually:
|
@@ -70,7 +67,6 @@ Expects a string or array (for multi-segment encoding) to be parsed in, other ar
|
|
70
67
|
* :number
|
71
68
|
* :alphanumeric
|
72
69
|
* :byte_8bit
|
73
|
-
* :kanji
|
74
70
|
```
|
75
71
|
|
76
72
|
Example
|
@@ -99,6 +95,10 @@ Options:
|
|
99
95
|
|
100
96
|
offset - Padding around the QR Code in pixels
|
101
97
|
(default 0)
|
98
|
+
offset_x - X Padding around the QR Code in pixels
|
99
|
+
(default offset)
|
100
|
+
offset_y - Y Padding around the QR Code in pixels
|
101
|
+
(default offset)
|
102
102
|
fill - Background color e.g "ffffff" or :white or :currentColor
|
103
103
|
(default none)
|
104
104
|
color - Foreground color e.g "000" or :black or :currentColor
|
@@ -118,7 +118,9 @@ viewbox - Replace the `svg.width` and `svg.height` attribute with `svg.v
|
|
118
118
|
svg_attributes - A optional hash of custom <svg> attributes. Existing attributes will remain.
|
119
119
|
(default {})
|
120
120
|
```
|
121
|
+
|
121
122
|
Example
|
123
|
+
|
122
124
|
```ruby
|
123
125
|
require "rqrcode"
|
124
126
|
|
@@ -209,7 +211,6 @@ IO.binwrite("/tmp/github-qrcode.png", png.to_s)
|
|
209
211
|
|
210
212
|

|
211
213
|
|
212
|
-
|
213
214
|
### `as_ansi`
|
214
215
|
|
215
216
|
The ANSI renderer will produce as a string with ANSI color codes.
|
@@ -226,7 +227,9 @@ fill_character - The written character
|
|
226
227
|
quiet_zone_size - Padding around the edge
|
227
228
|
(default 4)
|
228
229
|
```
|
230
|
+
|
229
231
|
Example
|
232
|
+
|
230
233
|
```ruby
|
231
234
|
require "rqrcode"
|
232
235
|
|
@@ -280,9 +283,9 @@ The motivation for the above is because the rendering side of this gem takes up
|
|
280
283
|
|
281
284
|
Any contribution PR's will be greatly accepted. It's important that they are well tested and backwards compatible.
|
282
285
|
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
+
- Fork the project
|
287
|
+
- Send a pull request
|
288
|
+
- Don't touch the .gemspec, I'll do that when I release a new version
|
286
289
|
|
287
290
|
Thanks D.
|
288
291
|
|
@@ -296,9 +299,9 @@ Oh, and thanks to my bosses at https://kyan.com for giving me time to maintain t
|
|
296
299
|
|
297
300
|
## Resources
|
298
301
|
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
+
- wikipedia:: http://en.wikipedia.org/wiki/QR_Code
|
303
|
+
- Denso-Wave website:: http://www.denso-wave.com/qrcode/index-e.html
|
304
|
+
- kaywa:: http://qrcode.kaywa.com
|
302
305
|
|
303
306
|
## Copyright
|
304
307
|
|
data/lib/rqrcode/export/svg.rb
CHANGED
@@ -15,7 +15,15 @@ module RQRCode
|
|
15
15
|
end
|
16
16
|
|
17
17
|
class Path < BaseOutputSVG
|
18
|
-
def build(module_size,
|
18
|
+
def build(module_size, options = {})
|
19
|
+
# Extract values from options
|
20
|
+
color = options[:color]
|
21
|
+
offset_x = options[:offset_x].to_i
|
22
|
+
offset_y = options[:offset_y].to_i
|
23
|
+
|
24
|
+
# Prefix hexadecimal colors unless using a named color (symbol)
|
25
|
+
color = "##{color}" unless color.is_a?(Symbol)
|
26
|
+
|
19
27
|
modules_array = @qrcode.modules
|
20
28
|
matrix_width = matrix_height = modules_array.length + 1
|
21
29
|
empty_row = [Array.new(matrix_width - 1, false)]
|
@@ -76,23 +84,25 @@ module RQRCode
|
|
76
84
|
path << edge_loop_string
|
77
85
|
end
|
78
86
|
|
79
|
-
|
80
|
-
color = "##{color}" unless color.is_a?(Symbol)
|
81
|
-
|
82
|
-
@result << %{<path d="#{path.join}" fill="#{color}" transform="translate(#{offset},#{offset}) scale(#{module_size})"/>}
|
87
|
+
@result << %{<path d="#{path.join}" fill="#{color}" transform="translate(#{offset_x},#{offset_y}) scale(#{module_size})"/>}
|
83
88
|
end
|
84
89
|
end
|
85
90
|
|
86
91
|
class Rect < BaseOutputSVG
|
87
|
-
def build(module_size,
|
92
|
+
def build(module_size, options = {})
|
93
|
+
# Extract values from options
|
94
|
+
color = options[:color]
|
95
|
+
offset_x = options[:offset_x].to_i
|
96
|
+
offset_y = options[:offset_y].to_i
|
97
|
+
|
88
98
|
# Prefix hexadecimal colors unless using a named color (symbol)
|
89
99
|
color = "##{color}" unless color.is_a?(Symbol)
|
90
100
|
|
91
101
|
@qrcode.modules.each_index do |c|
|
92
102
|
tmp = []
|
93
103
|
@qrcode.modules.each_index do |r|
|
94
|
-
|
95
|
-
|
104
|
+
x = r * module_size + offset_x
|
105
|
+
y = c * module_size + offset_y
|
96
106
|
|
97
107
|
next unless @qrcode.checked?(c, r)
|
98
108
|
tmp << %(<rect width="#{module_size}" height="#{module_size}" x="#{x}" y="#{y}" fill="#{color}"/>)
|
@@ -143,6 +153,10 @@ module RQRCode
|
|
143
153
|
# Options:
|
144
154
|
# offset - Padding around the QR Code in pixels
|
145
155
|
# (default 0)
|
156
|
+
# offset_x - X Padding around the QR Code in pixels
|
157
|
+
# (default offset)
|
158
|
+
# offset_y - Y Padding around the QR Code in pixels
|
159
|
+
# (default offset)
|
146
160
|
# fill - Background color e.g "ffffff"
|
147
161
|
# (default none)
|
148
162
|
# color - Foreground color e.g "000"
|
@@ -164,7 +178,9 @@ module RQRCode
|
|
164
178
|
def as_svg(options = {})
|
165
179
|
fill = options[:fill]
|
166
180
|
use_path = options[:use_path]
|
167
|
-
offset = options[:offset].to_i
|
181
|
+
offset = options[:offset].to_i
|
182
|
+
offset_x = options.key?(:offset_x) ? options[:offset_x].to_i : offset
|
183
|
+
offset_y = options.key?(:offset_y) ? options[:offset_y].to_i : offset
|
168
184
|
color = options[:color] || "000"
|
169
185
|
shape_rendering = options[:shape_rendering] || "crispEdges"
|
170
186
|
module_size = options[:module_size] || 11
|
@@ -173,9 +189,11 @@ module RQRCode
|
|
173
189
|
svg_attributes = options[:svg_attributes] || {}
|
174
190
|
|
175
191
|
# height and width dependent on offset and QR complexity
|
176
|
-
|
192
|
+
width = (@qrcode.module_count * module_size) + (2 * offset_x)
|
193
|
+
height = (@qrcode.module_count * module_size) + (2 * offset_y)
|
194
|
+
dimension = [width, height].max
|
177
195
|
# use dimensions differently if we are using a viewBox
|
178
|
-
dimensions_attr = viewbox ? %(viewBox="0 0 #{
|
196
|
+
dimensions_attr = viewbox ? %(viewBox="0 0 #{width} #{height}") : %(width="#{width}" height="#{height}")
|
179
197
|
|
180
198
|
svg_tag_attributes = (DEFAULT_SVG_ATTRIBUTES + [
|
181
199
|
dimensions_attr,
|
@@ -187,7 +205,7 @@ module RQRCode
|
|
187
205
|
close_tag = "</svg>"
|
188
206
|
|
189
207
|
output_tag = (use_path ? Path : Rect).new(@qrcode)
|
190
|
-
output_tag.build(module_size,
|
208
|
+
output_tag.build(module_size, offset_x: offset_x, offset_y: offset_y, color: color)
|
191
209
|
|
192
210
|
if fill
|
193
211
|
# Prefix hexadecimal colors unless using a named color (symbol)
|
data/lib/rqrcode/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rqrcode
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Duncan Robertson
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-04-
|
11
|
+
date: 2025-04-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rqrcode_core
|