qrest 1.0.0 → 1.0.1
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/lib/qrest/bch.rb +7 -7
- data/lib/qrest/modules.rb +2 -1
- data/lib/qrest/polynomial.rb +36 -33
- data/lib/qrest/rsblocks.rb +3 -2
- data/lib/qrest/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fa479ca4948c34f366ab8c290b4f89f2cca17d0cbe642b1104c010b0e0c83570
|
4
|
+
data.tar.gz: 724aa39b76303cc0c965e0f322aacb263a0d9ec2d7f18017c522509774fbfedb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1ede4940c060aeaa5dfc861b204b1b340999b645943e5505a9e8d04a7962d759a92feb19f09258b7f3667b556e3dfa3531a6ce9fde71b5333e8fa619a8ac8a9a
|
7
|
+
data.tar.gz: 38b9da529c02d8b9631f996cbaabc79df840eacf82077d71afdf4ef3e3da20d8223b5badc0a3cf635ccf054cb36e2039e7a14a14583d66dc531e3620c6108c12
|
data/lib/qrest/bch.rb
CHANGED
@@ -24,9 +24,9 @@ module QRest
|
|
24
24
|
|
25
25
|
end
|
26
26
|
|
27
|
-
G15 =
|
28
|
-
G15_MASK =
|
29
|
-
G18 =
|
27
|
+
G15 = 0b0_0000_0101_0011_0111
|
28
|
+
G15_MASK = 0b0_0101_0100_0001_0010
|
29
|
+
G18 = 0b0_0001_1111_0010_0101
|
30
30
|
|
31
31
|
G15D = digit G15
|
32
32
|
G18D = digit G18
|
@@ -34,19 +34,19 @@ module QRest
|
|
34
34
|
class <<self
|
35
35
|
|
36
36
|
def format_info data
|
37
|
-
d = data << 10
|
37
|
+
d = e = data << 10
|
38
38
|
until (m = (digit d) - G15D) < 0 do
|
39
39
|
d ^= G15 << m
|
40
40
|
end
|
41
|
-
(
|
41
|
+
(e | d) ^ G15_MASK
|
42
42
|
end
|
43
43
|
|
44
44
|
def version data
|
45
|
-
d = data << 12
|
45
|
+
d = e = data << 12
|
46
46
|
until (m = (digit d) - G18D) < 0 do
|
47
47
|
d ^= G18 << m
|
48
48
|
end
|
49
|
-
|
49
|
+
e | d
|
50
50
|
end
|
51
51
|
|
52
52
|
end
|
data/lib/qrest/modules.rb
CHANGED
@@ -271,7 +271,8 @@ module QRest
|
|
271
271
|
def walk_fields mask_pattern
|
272
272
|
# An image says more than a thousand statements:
|
273
273
|
# <https://en.wikipedia.org/wiki/QR_code#Message_placement>
|
274
|
-
mp = MASK_PATTERNS[ mask_pattern] or
|
274
|
+
mp = MASK_PATTERNS[ mask_pattern] or
|
275
|
+
raise ArgumentError, "Bad mask_pattern: #{mask_pattern}"
|
275
276
|
row = c2 = @fields.size - 1
|
276
277
|
inc = -1
|
277
278
|
loop do
|
data/lib/qrest/polynomial.rb
CHANGED
@@ -18,7 +18,7 @@ module QRest
|
|
18
18
|
if error_correct_length > 0 then
|
19
19
|
e = error_correct_length - 1
|
20
20
|
ge = new [1, 0]
|
21
|
-
ge.
|
21
|
+
ge.gfexp! 1, e
|
22
22
|
(error_correct e).multiply ge
|
23
23
|
else
|
24
24
|
new [1]
|
@@ -57,55 +57,61 @@ module QRest
|
|
57
57
|
@num.unshift 0 until @num.length >= n
|
58
58
|
end
|
59
59
|
|
60
|
-
def
|
61
|
-
Polynomial.
|
60
|
+
def first_gflog
|
61
|
+
Polynomial.gflog @num.first
|
62
62
|
end
|
63
63
|
|
64
|
-
def
|
64
|
+
def each_gflog
|
65
65
|
@num.each_with_index { |n,i|
|
66
|
-
yield (Polynomial.
|
66
|
+
yield (Polynomial.gflog n), i
|
67
67
|
}
|
68
68
|
end
|
69
69
|
|
70
|
-
def
|
71
|
-
@num[ i] ^= Polynomial.
|
70
|
+
def gfexp! i, n
|
71
|
+
@num[ i] ^= Polynomial.gfexp n
|
72
72
|
end
|
73
73
|
|
74
74
|
def multiply e
|
75
75
|
r = Polynomial.zeroes length + e.length - 1
|
76
|
-
|
77
|
-
e.
|
78
|
-
r.
|
76
|
+
each_gflog { |gi,i|
|
77
|
+
e.each_gflog { |gj,j|
|
78
|
+
r.gfexp! i + j, gi + gj
|
79
79
|
}
|
80
80
|
}
|
81
81
|
r
|
82
82
|
end
|
83
83
|
|
84
84
|
def error_mod error_count
|
85
|
-
e = Polynomial.error_correct error_count
|
86
|
-
ef = e.first_glog
|
87
85
|
p = dup
|
88
|
-
p.
|
86
|
+
p.error_mod! error_count
|
87
|
+
end
|
88
|
+
|
89
|
+
def error_mod! error_count
|
90
|
+
e = Polynomial.error_correct error_count
|
91
|
+
extend! error_count
|
89
92
|
loop do
|
90
|
-
|
91
|
-
break if
|
92
|
-
|
93
|
-
e.
|
94
|
-
|
93
|
+
norm!
|
94
|
+
break if length < e.length
|
95
|
+
f = first_gflog
|
96
|
+
e.each_gflog { |gi,i|
|
97
|
+
gfexp! i, gi + f
|
95
98
|
}
|
96
99
|
end
|
97
|
-
|
98
|
-
|
100
|
+
grow! error_count
|
101
|
+
self
|
99
102
|
end
|
100
103
|
|
101
104
|
|
102
|
-
EXP_TABLE = []
|
103
|
-
|
104
|
-
EXP_TABLE.
|
105
|
-
|
106
|
-
|
107
|
-
|
105
|
+
EXP_TABLE = [1]
|
106
|
+
loop do
|
107
|
+
x = x_ = EXP_TABLE.last << 1
|
108
|
+
x &= 0xff
|
109
|
+
x ^= 0x1d if x != x_
|
110
|
+
break if x == EXP_TABLE.first
|
111
|
+
EXP_TABLE.push x
|
108
112
|
end
|
113
|
+
EXP_TABLE
|
114
|
+
|
109
115
|
|
110
116
|
LOG_TABLE = [nil] * 256
|
111
117
|
255.times do |i|
|
@@ -117,15 +123,12 @@ module QRest
|
|
117
123
|
|
118
124
|
class <<self
|
119
125
|
|
120
|
-
def
|
121
|
-
n
|
122
|
-
LOG_TABLE[n]
|
126
|
+
def gflog n
|
127
|
+
LOG_TABLE[n] or raise ArgumentError, "Argument is out of domain: gflog(#{n})."
|
123
128
|
end
|
124
129
|
|
125
|
-
def
|
126
|
-
|
127
|
-
while n >= 256 do n -= 255 end
|
128
|
-
EXP_TABLE[n]
|
130
|
+
def gfexp n
|
131
|
+
EXP_TABLE[n % 255]
|
129
132
|
end
|
130
133
|
|
131
134
|
end
|
data/lib/qrest/rsblocks.rb
CHANGED
@@ -46,8 +46,9 @@ module QRest
|
|
46
46
|
each do |rs|
|
47
47
|
p = Polynomial.new buffer[ i, rs.data_count]
|
48
48
|
i += rs.data_count
|
49
|
-
dcdata.push p.num
|
50
|
-
|
49
|
+
dcdata.push p.num.dup
|
50
|
+
p.error_mod! rs.error_count
|
51
|
+
ecdata.push p.num
|
51
52
|
end
|
52
53
|
data = []
|
53
54
|
(max :data_count).times do |j|
|
data/lib/qrest/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qrest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bertram Scharpf
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-03-
|
10
|
+
date: 2025-03-26 00:00:00.000000000 Z
|
11
11
|
dependencies: []
|
12
12
|
description: |
|
13
13
|
A Ruby library that generates QR Codes
|
@@ -50,7 +50,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
50
50
|
- !ruby/object:Gem::Version
|
51
51
|
version: '0'
|
52
52
|
requirements: []
|
53
|
-
rubygems_version: 3.6.
|
53
|
+
rubygems_version: 3.6.6
|
54
54
|
specification_version: 4
|
55
55
|
summary: Generate QR Codes
|
56
56
|
test_files: []
|