rqrcode 0.8.0 → 0.9.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
  SHA1:
3
- metadata.gz: 46c6e005cfad5a06130d1057cb3339a9536876d7
4
- data.tar.gz: 43052e7598d0ca24b55ccdac80c112d110d6023f
3
+ metadata.gz: 1e8b487f591272b08e4fc7379f8ff16a7819459e
4
+ data.tar.gz: 5fc8e96a42d136b0cd76941d8a77316d207208e9
5
5
  SHA512:
6
- metadata.gz: 4da648696490c9dea757030a8f1a33ec731532704bca8707dac941729791bb1f4c7d68a39dc83bbeab0df39becc719b3b70b383c1ae88a4600ec7a6742f36a10
7
- data.tar.gz: ed6067dc3533be6f1ebdbd3eea7e34a4caca62d868a469ad09f7dbb963a72c13c1dc75ab3f29385f27317e9601a7e0e156d91cc95c9c757fe9719f7a595003fc
6
+ metadata.gz: e2c4d056dc95bca8bb1a268567a0f19a3d48eaaa96d6888874ee4abde3d85db7d6ae3197e840e2085651fb0ebd8ded890421174816a75d12052a29b41bfb3895
7
+ data.tar.gz: b435943576d8a4c458e7392f0d7a69ed27a7ec3a05bc449523f2141b87e5f8c03e2fca35ce8ba64887787667d65c854655e2ec8449b1e2565daa40a1ad6f94a5
data/CHANGELOG CHANGED
@@ -1,3 +1,13 @@
1
+ *0.9.0* (Jan 3, 2016)
2
+
3
+ - Added support for auto selecting qrcode size up to level 40. (only worked up to level 10 before)
4
+ - Added numeric support during auto selection of qrcode mode.
5
+
6
+ *0.8.1* (Jan 3, 2016)
7
+
8
+ - Remove active support specific `present?`.
9
+ - Fix so that all tests are run.
10
+
1
11
  *0.8.0* (Dec 18, 2015)
2
12
 
3
13
  - Added numeric QR code support
data/README.md CHANGED
@@ -2,26 +2,24 @@
2
2
 
3
3
  [![Build Status](https://travis-ci.org/whomwah/rqrcode.svg?branch=master)](https://travis-ci.org/whomwah/rqrcode)
4
4
 
5
- ## Short changelog
6
-
7
- *0.8.0* (Dec 18, 2015)
5
+ **All users of rqrcode are highly recomended to upgrade to version 0.5.5 ore later!**
8
6
 
9
- - Added numeric QR code support
10
- - Dropped Ruby v1.8 support
7
+ ## Short changelog
11
8
 
12
- *0.7.0* (Aug 15, 2015)
9
+ *0.9.0* (Jan 3, 2016)
13
10
 
14
- - Added shape_rendering option for as_svg
11
+ - Added support for auto selecting qrcode size up to level 40. (only worked up to level 10 before)
12
+ - Added numeric support during auto selection of qrcode mode.
15
13
 
16
- *0.6.0* (Jun 2, 2015)
14
+ *0.8.1* (Jan 3, 2016)
17
15
 
18
- - Improved png rendering. Previous png rendering could result in hard to scan qrcodes.
19
- *Big thanks to Bart Jedrocha*
16
+ - Remove active support specific `present?`.
17
+ - Fix so that all tests are run.
20
18
 
21
- *0.5.5* (Apr 25, 2015)
19
+ *0.8.0* (Dec 18, 2015)
22
20
 
23
- - Fixed major bug. The rs block data was missing resulting in qr codes failing to be generated.
24
- *Upgrade highly recomended!!*
21
+ - Added numeric QR code support
22
+ - Dropped Ruby v1.8 support
25
23
 
26
24
  ## Overview
27
25
 
@@ -29,7 +27,7 @@ rQRCode is a library for encoding QR Codes in Ruby. It has a simple interface wi
29
27
 
30
28
  Let's clear up some rQRCode stuff.
31
29
 
32
- * rQRCode is a __standalone library__ It requires no other libraries. Just Ruby!
30
+ * rQRCode is a __ruby only library__ It requires no native libraries. Just Ruby!
33
31
  * It is an encoding library. You can't decode QR codes with it.
34
32
  * The interface is simple and assumes you just want to encode a string into a QR code
35
33
  * QR code is trademarked by Denso Wave inc
data/Rakefile CHANGED
@@ -3,11 +3,11 @@ require 'bundler'
3
3
 
4
4
  Bundler::GemHelper.install_tasks
5
5
 
6
- desc "Run tests"
6
+ desc 'Run tests'
7
7
  Rake::TestTask.new do |t|
8
- t.libs << "lib"
9
- t.libs << "test"
10
- t.test_files = FileList['test/test_*.rb']
8
+ t.libs << 'lib'
9
+ t.libs << 'test'
10
+ t.pattern = 'test/**/test_*.rb'
11
11
  t.verbose = true
12
12
  end
13
13
 
@@ -15,7 +15,6 @@ module RQRCode #:nodoc:
15
15
  :mode_number => 1 << 0,
16
16
  :mode_alpha_numk => 1 << 1,
17
17
  :mode_8bit_byte => 1 << 2,
18
- :mode_kanji => 1 << 3
19
18
  }
20
19
 
21
20
  QRMODE_NAME = {
@@ -59,23 +58,92 @@ module RQRCode #:nodoc:
59
58
  QRFORMATINFOLENGTH = 15
60
59
 
61
60
  #http://web.archive.org/web/20110710094955/http://www.denso-wave.com/qrcode/vertable1-e.html
61
+ #http://web.archive.org/web/20110710094955/http://www.denso-wave.com/qrcode/vertable2-e.html
62
+ #http://web.archive.org/web/20110710094955/http://www.denso-wave.com/qrcode/vertable3-e.html
63
+ #http://web.archive.org/web/20110710094955/http://www.denso-wave.com/qrcode/vertable4-e.html
64
+ # Each array contains levels max chars from level 1 to level 40
62
65
  QRMAXDIGITS = {
63
- :l => {:mode_number => [41, 77, 127, 187, 255, 322, 370, 461, 552, 652],
64
- :mode_alpha_numk => [25, 47, 77, 114, 154, 195, 224, 279, 335, 395],
65
- :mode_8bit_byte => [17, 32, 53, 78, 106, 134, 154, 192, 230, 271, 321, 367, 425, 458, 520, 586, 644, 718, 792, 858],
66
- :mode_kanji => [10, 20, 32, 48, 65, 82, 95, 118, 141, 167]},
67
- :m => {:mode_number => [34, 63, 101, 149, 202, 255, 293, 365, 432, 513],
68
- :mode_alpha_numk => [20, 38, 61, 90, 122, 154, 178, 221, 262, 311],
69
- :mode_8bit_byte => [14, 26, 42, 62, 84, 106, 122, 152, 180, 213, 251, 287, 331, 362, 412, 450, 504, 560, 624, 666],
70
- :mode_kanji => [ 8, 16, 26, 38, 54, 65, 75, 93, 111, 131]},
71
- :q => {:mode_number => [27, 48, 77, 111, 144, 178, 207, 259, 312, 364],
72
- :mode_alpha_numk => [16, 29, 47, 67, 87, 108, 125, 157, 189, 221],
73
- :mode_8bit_byte => [11, 20, 32, 46, 60, 74, 86, 108, 130, 151, 177, 203, 241, 258, 292, 22, 364, 394, 442, 482],
74
- :mode_kanji => [ 7, 12, 20, 28, 37, 45, 53, 66, 80, 93]},
75
- :h => {:mode_number => [17, 34, 58, 82, 106, 139, 154, 202, 235, 288],
76
- :mode_alpha_numk => [10, 20, 35, 50, 64, 84, 93, 122, 143, 174],
77
- :mode_8bit_byte => [ 7, 14, 24, 34, 44, 58, 64, 84, 98, 119, 137, 155, 177, 194, 220, 250, 280, 310, 338, 382],
78
- :mode_kanji => [ 4, 8, 15, 21, 27, 36, 39, 52, 60, 74]},
66
+ l: {
67
+ mode_number: [
68
+ 41, 77, 127, 187, 255, 322, 370, 461, 552, 652, 772,
69
+ 883, 1022, 1101, 1250, 1408, 1548, 1725, 1903, 2061,
70
+ 2232, 2409, 2620, 2812, 3057, 3283, 3514, 3669, 3909, 4158,
71
+ 4417, 4686, 4965, 5253, 5529, 5836, 6153, 6479, 6743, 7089
72
+ ],
73
+ mode_alpha_numk: [
74
+ 25, 47, 77, 114, 154, 195, 224, 279, 335, 395,
75
+ 468, 535, 619, 667, 758, 854, 938, 1046, 1153, 1249,
76
+ 1352, 1460, 1588, 1704, 1853, 1990, 2132, 2223, 2369, 2520,
77
+ 2677, 2840, 3009, 3183, 3351, 3537, 3729, 3927, 4087, 4296
78
+ ],
79
+ mode_8bit_byte: [
80
+ 17, 32, 53, 78, 106, 134, 154, 192, 230, 271,
81
+ 321, 367, 425, 458, 520, 586, 644, 718, 792, 858,
82
+ 929, 1003, 1091, 1171, 1273, 1367, 1465, 1528, 1628, 1732,
83
+ 1840, 1952, 2068, 2188, 2303, 2431, 2563, 2699, 2809, 2953
84
+ ],
85
+ },
86
+ m: {
87
+ mode_number: [
88
+ 34, 63, 101, 149, 202, 255, 293, 365, 432, 513,
89
+ 604, 691, 796, 871, 991, 1082, 1212, 1346, 1500, 1600,
90
+ 1708, 1872, 2059, 2188, 2395, 2544, 2701, 2857, 3035, 3289,
91
+ 3486, 3693, 3909, 4134, 4343, 4588, 4775, 5039, 5313, 5596,
92
+ ],
93
+ mode_alpha_numk: [
94
+ 20, 38, 61, 90, 122, 154, 178, 221, 262, 311,
95
+ 366, 419, 483, 528, 600, 656, 734, 816, 909, 970,
96
+ 1035, 1134, 1248, 1326, 1451, 1542, 1637, 1732, 1839, 1994,
97
+ 2113, 2238, 2369, 2506, 2632, 2780, 2894, 3054, 3220, 3391
98
+ ],
99
+ mode_8bit_byte: [
100
+ 14, 26, 42, 62, 84, 106, 122, 152, 180, 213,
101
+ 251, 287, 331, 362, 412, 450, 504, 560, 624, 666,
102
+ 711, 779, 857, 911, 997, 1059, 1125, 1190, 1264, 1370,
103
+ 1452, 1538, 1628, 1722, 1809, 1911, 1989, 2099, 2213, 2331
104
+ ],
105
+ },
106
+ q: {
107
+ mode_number: [
108
+ 27, 48, 77, 111, 144, 178, 207, 259, 312, 364,
109
+ 427, 489, 580, 621, 703, 775, 876, 948, 1063, 1159,
110
+ 1224, 1358, 1468, 1588, 1718, 1804, 1933, 2085, 2181, 2358,
111
+ 2473, 2670, 2805, 2949, 3081, 3244, 3417, 3599, 3791, 3993
112
+ ],
113
+ mode_alpha_numk: [
114
+ 16, 29, 47, 67, 87, 108, 125, 157, 189, 221,
115
+ 259, 296, 352, 376, 426, 470, 531, 574, 644, 702,
116
+ 742, 823, 890, 963, 1041, 1094, 1172, 1263, 1322, 1429,
117
+ 1499, 1618, 1700, 1787, 1867, 1966, 2071, 2181, 2298, 2420
118
+ ],
119
+ mode_8bit_byte: [
120
+ 11, 20, 32, 46, 60, 74, 86, 108, 130, 151,
121
+ 177, 203, 241, 258, 292, 22, 364, 394, 442, 482,
122
+ 509, 565, 611, 661, 715, 751, 805, 868, 908, 982,
123
+ 1030, 1112, 1168, 1228, 1283, 1351, 1423, 1499, 1579, 1663
124
+ ],
125
+ },
126
+ h: {
127
+ mode_number: [
128
+ 17, 34, 58, 82, 106, 139, 154, 202, 235, 288, 331, 374, 427, 468, 530, 602, 674,
129
+ 331, 374, 427, 468, 530, 602, 674, 746, 813, 919,
130
+ 969, 1056, 1108, 1228, 1286, 1425, 1501, 1581, 1677, 1782,
131
+ 1897, 2022, 2157, 2301, 2361, 2524, 2625, 2735, 2927, 3057
132
+
133
+ ],
134
+ mode_alpha_numk: [
135
+ 10, 20, 35, 50, 64, 84, 93, 122, 143, 174, 200,
136
+ 200, 227, 259, 283, 321, 365, 408, 452, 493, 557,
137
+ 587, 640, 672, 744, 779, 864, 910, 958, 1016, 1080,
138
+ 1150, 1226, 1307, 1394, 1431, 1530, 1591, 1658, 1774, 1852
139
+ ],
140
+ mode_8bit_byte: [
141
+ 7, 14, 24, 34, 44, 58, 64, 84, 98, 119,
142
+ 137, 155, 177, 194, 220, 250, 280, 310, 338, 382,
143
+ 403, 439, 461, 511, 535, 593, 625, 658, 698, 742,
144
+ 790, 842, 898, 958, 983, 1051, 1093, 1139, 1219, 1273
145
+ ],
146
+ },
79
147
  }
80
148
 
81
149
 
@@ -94,7 +162,7 @@ module RQRCode #:nodoc:
94
162
  #
95
163
 
96
164
  class QRCode
97
- attr_reader :modules, :module_count, :version, :error_correction_level
165
+ attr_reader :modules, :module_count, :version
98
166
 
99
167
  # Expects a string to be parsed in, other args are optional
100
168
  #
@@ -129,11 +197,19 @@ module RQRCode #:nodoc:
129
197
  @data = string
130
198
 
131
199
  mode = QRMODE_NAME[(options[:mode] || '').to_sym]
132
- mode ||= QRAlphanumeric.valid_data?( @data ) ? :mode_alpha_numk : :mode_8bit_byte # deprecate?
200
+ # If mode is not explicitely given choose mode according to data type
201
+ mode ||= case
202
+ when RQRCode::QRNumeric.valid_data?(@data)
203
+ QRMODE_NAME[:number]
204
+ when QRAlphanumeric.valid_data?(@data)
205
+ QRMODE_NAME[:alphanumeric]
206
+ else
207
+ QRMODE_NAME[:byte_8bit]
208
+ end
133
209
 
134
210
  max_size_array = QRMAXDIGITS[level][mode]
135
211
  size = options[:size] || smallest_size_for(string, max_size_array)
136
-
212
+
137
213
  if size > QRUtil.max_size
138
214
  raise QRCodeArgumentError, "Given size greater than maximum possible size of #{QRUtil.max_size}"
139
215
  end
@@ -205,14 +281,31 @@ module RQRCode #:nodoc:
205
281
  end
206
282
  rows << cols
207
283
  end
208
-
284
+
209
285
  quiet_zone_size.times do
210
286
  rows.unshift(light * (rows.first.length / light.size))
211
287
  rows << light * (rows.first.length / light.size)
212
- end
288
+ end
213
289
  rows.join("\n")
214
290
  end
215
291
 
292
+ # Return a symbol for current error connection level
293
+ def error_correction_level
294
+ QRERRORCORRECTLEVEL.invert[@error_correct_level]
295
+ end
296
+
297
+ # Return a symbol in QRMODE.keys for current mode used
298
+ def mode
299
+ case @data_list
300
+ when QRNumeric
301
+ :mode_number
302
+ when QRAlphanumeric
303
+ :mode_alpha_numk
304
+ else
305
+ :mode_8bit_byte
306
+ end
307
+ end
308
+
216
309
  protected
217
310
 
218
311
  def make #:nodoc:
@@ -33,11 +33,11 @@ module RQRCode
33
33
  if i % 3 == 0
34
34
  chars = @data[i]
35
35
 
36
- if @data[i + 1].present?
36
+ if @data[i + 1]
37
37
  chars << @data[i + 1]
38
38
  end
39
39
 
40
- if @data[i + 2].present?
40
+ if @data[i + 2]
41
41
  chars << @data[i + 2]
42
42
  end
43
43
 
@@ -1,3 +1,3 @@
1
1
  module RQRCode
2
- VERSION = "0.8.0"
2
+ VERSION = "0.9.0"
3
3
  end
@@ -0,0 +1,5 @@
1
+ require 'rqrcode'
2
+
3
+ require 'minitest/spec'
4
+ require 'minitest/autorun'
5
+
@@ -1,17 +1,6 @@
1
- # encoding: utf-8
2
- require "test/unit"
1
+ require 'test_helper'
3
2
 
4
- # fix for require_relative in < 1.9
5
- unless Kernel.respond_to?(:require_relative)
6
- module Kernel
7
- def require_relative(path)
8
- require File.join(File.dirname(caller[0]), path.to_str)
9
- end
10
- end
11
- end
12
-
13
- require_relative "../lib/rqrcode"
14
- class RegresionTests < Test::Unit::TestCase
3
+ class RegresionTests < Minitest::Test
15
4
 
16
5
  # Rs block information was incomplete.
17
6
  def test_code_length_overflow_bug
data/test/test_rqrcode.rb CHANGED
@@ -1,27 +1,16 @@
1
1
  # encoding: utf-8
2
- require "test/unit"
2
+ require 'test_helper'
3
3
 
4
- # fix for require_relative in < 1.9
5
- unless Kernel.respond_to?(:require_relative)
6
- module Kernel
7
- def require_relative(path)
8
- require File.join(File.dirname(caller[0]), path.to_str)
9
- end
10
- end
11
- end
12
-
13
- require_relative "../lib/rqrcode"
14
-
15
- class QRCodeTest < Test::Unit::TestCase
4
+ class QRCodeTest < Minitest::Test
16
5
  require_relative "data"
17
6
 
18
7
  def test_no_data_given
19
- assert_raise(RQRCode::QRCodeArgumentError) {
8
+ assert_raises(RQRCode::QRCodeArgumentError) {
20
9
  RQRCode::QRCode.new( :size => 1, :level => :h )
21
10
  RQRCode::QRCode.new( :size => 1 )
22
11
  RQRCode::QRCode.new
23
12
  }
24
- assert_raise(RQRCode::QRCodeRunTimeError) {
13
+ assert_raises(RQRCode::QRCodeRunTimeError) {
25
14
  qr = RQRCode::QRCode.new('duncan')
26
15
  qr.is_dark(0,999999)
27
16
  }
@@ -87,18 +76,36 @@ class QRCodeTest < Test::Unit::TestCase
87
76
  qr.to_s( :true => 'q', :false => 'n' )[0..21]
88
77
  assert_equal "@@@@@@@ @@ @ @@@@@@@\n", qr.to_s( :true => '@' )[0..21]
89
78
  end
90
-
79
+
91
80
  def test_auto_alphanumeric
92
81
  # Overflowws without the alpha version
93
82
  assert RQRCode::QRCode.new( '1234567890', :size => 1, :level => :h )
94
-
83
+
95
84
  qr = RQRCode::QRCode.new( 'DUNCAN', :size => 1, :level => :h )
96
85
  assert_equal "xxxxxxx xxx xxxxxxx\n", qr.to_s[0..21]
97
86
  end
98
87
 
88
+ def test_auto_numeric
89
+ # When digit only automatically uses numeric mode, default ecc level is :h
90
+ digits = RQRCode::QRCode.new('1' * 17) # Version 1, numeric mode, ECC h
91
+ assert_equal 1, digits.version
92
+ assert_equal :mode_number, digits.mode
93
+ assert_equal :h, digits.error_correction_level
94
+ # When alpha automatically works
95
+ alpha = RQRCode::QRCode.new('X' * 10) # Version 1, alpha mode, ECC h
96
+ assert_equal 1, alpha.version
97
+ assert_equal :mode_alpha_numk, alpha.mode
98
+ assert_equal :h, alpha.error_correction_level
99
+ # Generic should use binary
100
+ binary = RQRCode::QRCode.new('x' * 7) # Version 1, 8bit mode, ECC h
101
+ assert_equal 1, binary.version
102
+ assert_equal :mode_8bit_byte, binary.mode
103
+ assert_equal :h, binary.error_correction_level
104
+ end
105
+
99
106
  def test_numeric_2_M
100
107
  data = '279042272585972554922067893753871413584876543211601021503002'
101
-
108
+
102
109
  qr = RQRCode::QRCode.new(data, size: 2, level: :m, mode: :number)
103
110
  assert_equal "xxxxxxx x x x xxxxxxx\n", qr.to_s[0..25]
104
111
  end
@@ -108,13 +115,25 @@ class QRCodeTest < Test::Unit::TestCase
108
115
  assert RQRCode::QRCode.new("40952", :size => 1, :level => :h)
109
116
  assert RQRCode::QRCode.new("40932", :size => 1, :level => :h)
110
117
  end
111
-
118
+
112
119
  def test_exceed_max_size
113
- assert_raise RQRCode::QRCodeArgumentError do
120
+ assert_raises RQRCode::QRCodeArgumentError do
114
121
  RQRCode::QRCode.new( 'duncan', :size => 41 )
115
122
  end
116
123
  end
117
124
 
125
+ def test_error_correction_level
126
+ # attr_reader was wrong
127
+ assert_equal RQRCode::QRCode.new('a', level: :h).error_correction_level, :h
128
+ end
129
+
130
+ def test_version_table
131
+ # tables in RQRCode::QRCode::QRMAXDIGITS wasn't updated to support greater versions
132
+ assert_equal RQRCode::QRCode.new('1' * 289, level: :h, mode: :number).version, 11
133
+ assert_equal RQRCode::QRCode.new('A' * 175, level: :h, mode: :alphanumeric).version, 11
134
+ assert_equal RQRCode::QRCode.new('a' * 383, level: :h, mode: :byte_8bit).version, 21
135
+ end
136
+
118
137
  def test_levels
119
138
  assert RQRCode::QRCode.new("duncan", :level => :l)
120
139
  assert RQRCode::QRCode.new("duncan", :level => :m)
@@ -122,7 +141,7 @@ class QRCodeTest < Test::Unit::TestCase
122
141
  assert RQRCode::QRCode.new("duncan", :level => :h)
123
142
 
124
143
  %w(a b c d e f g i j k n o p r s t u v w x y z).each do |ltr|
125
- assert_raise(RQRCode::QRCodeArgumentError) {
144
+ assert_raises(RQRCode::QRCodeArgumentError) {
126
145
  RQRCode::QRCode.new( "duncan", :level => ltr.to_sym )
127
146
  }
128
147
  end
@@ -1,23 +1,6 @@
1
- require 'minitest/spec'
2
- require 'minitest/autorun'
3
-
4
- require 'rqrcode/export/png'
5
- require 'rqrcode/export/svg'
6
- require 'rqrcode/export/html'
7
-
8
- # fix for require_relative in < 1.9
9
- unless Kernel.respond_to?(:require_relative)
10
- module Kernel
11
- def require_relative(path)
12
- require File.join(File.dirname(caller[0]), path.to_str)
13
- end
14
- end
15
- end
16
-
17
- require_relative "../lib/rqrcode"
1
+ require 'test_helper'
18
2
 
19
3
  describe :QRCodeExportTest do
20
- # require_relative "data"
21
4
 
22
5
  [:svg, :png, :html].each do |ext|
23
6
  it "must respond_to #{ext}" do
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: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Björn Blomqvist
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-12-18 00:00:00.000000000 Z
12
+ date: 2016-01-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: chunky_png
@@ -96,6 +96,7 @@ files:
96
96
  - lib/rqrcode/version.rb
97
97
  - rqrcode.gemspec
98
98
  - test/data.rb
99
+ - test/test_helper.rb
99
100
  - test/test_regresions.rb
100
101
  - test/test_rqrcode.rb
101
102
  - test/test_rqrcode_export.rb
@@ -124,6 +125,7 @@ specification_version: 4
124
125
  summary: A library to encode QR Codes
125
126
  test_files:
126
127
  - test/data.rb
128
+ - test/test_helper.rb
127
129
  - test/test_regresions.rb
128
130
  - test/test_rqrcode.rb
129
131
  - test/test_rqrcode_export.rb