rqrcode 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,9 @@
1
+ *0.3.0* (Feb 28th, 2008)
2
+
3
+ * added more documentation
4
+ * changed to_console to to_s (what was I thinking)
5
+ * add more tests
6
+
1
7
  *0.2.1* (Feb 24th, 2008)
2
8
 
3
9
  * small changes to rakefile and readme
data/README CHANGED
@@ -1,10 +1,10 @@
1
- = rQRCode, Encode QRCodes
1
+ == rQRCode, Encode QRCodes
2
2
 
3
3
  rQRCode is a library for encoding QR Codes in Ruby. It has a simple interface with all the standard qrcode options. It was adapted from the Javascript library by Kazuhiko Arase.
4
4
 
5
5
  RubyForge Project Page http://rubyforge.org/projects/rqrcode/
6
6
 
7
- = An Overview
7
+ == An Overview
8
8
 
9
9
  Let's clear up some rQRCode stuff.
10
10
 
@@ -13,7 +13,7 @@ Let's clear up some rQRCode stuff.
13
13
  # The interface is simple and assumes you just want to encode a string into a QR code
14
14
  # QR code is trademarked by Denso Wave inc
15
15
 
16
- = Rescources
16
+ == Rescources
17
17
 
18
18
  wikipedia:: http://en.wikipedia.org/wiki/QR_Code
19
19
  Denso-Wave website:: http://www.denso-wave.com/qrcode/index-e.html
@@ -31,12 +31,12 @@ You may get the latest stable version from Rubyforge. Source gems are also avail
31
31
  You have installed the gem already, yeah?
32
32
 
33
33
  require 'rubygems'
34
- require 'qrqcode'
34
+ require 'rqrcode'
35
35
 
36
36
  === Simple QRCode generation to screen
37
37
 
38
38
  qr = RQRCode::QRCode.new( 'my string to generate', :size => 4, :level => :h )
39
- puts qr.to_console
39
+ puts qr.to_s
40
40
  #
41
41
  # Prints:
42
42
  # xxxxxxx x x x x x xx xxxxxxx
@@ -52,10 +52,10 @@ You have installed the gem already, yeah?
52
52
  <b>View: (minimal styling added)</b>
53
53
  <style type="text/css">
54
54
  table {
55
- border-width: 0;
56
- border-style: none;
57
- border-color: #0000ff;
58
- border-collapse: collapse;
55
+ border-width: 0;
56
+ border-style: none;
57
+ border-color: #0000ff;
58
+ border-collapse: collapse;
59
59
  }
60
60
  td {
61
61
  border-width: 0;
@@ -74,11 +74,11 @@ You have installed the gem already, yeah?
74
74
  <table>
75
75
  <% @qr.modules.each_index do |x| %>
76
76
  <tr>
77
- <% x.each_index do |y| %>
77
+ <% @qr.modules.each_index do |y| %>
78
78
  <% if @qr.is_dark(x,y) %>
79
- <td class="black"/>
79
+ <td class="black"/>
80
80
  <% else %>
81
- <td class="white"/>
81
+ <td class="white"/>
82
82
  <% end %>
83
83
  <% end %>
84
84
  </tr>
@@ -1,9 +1,9 @@
1
1
  module CoreExtensions #:nodoc:
2
2
  module Array #:nodoc:
3
3
  module Behavior
4
- def extract_options!
5
- last.is_a?(::Hash) ? pop : {}
6
- end
7
- end
8
- end
4
+ def extract_options!
5
+ last.is_a?(::Hash) ? pop : {}
6
+ end
7
+ end
8
+ end
9
9
  end
@@ -12,10 +12,10 @@
12
12
  module RQRCode #:nodoc:
13
13
 
14
14
  QRMODE = {
15
- :mode_number => 1 << 0,
16
- :mode_alpha_num => 1 << 1,
17
- :mode_8bit_byte => 1 << 2,
18
- :mode_kanji => 1 << 3
15
+ :mode_number => 1 << 0,
16
+ :mode_alpha_numk => 1 << 1,
17
+ :mode_8bit_byte => 1 << 2,
18
+ :mode_kanji => 1 << 3
19
19
  }
20
20
 
21
21
  QRERRORCORRECTLEVEL = {
@@ -36,45 +36,57 @@ module RQRCode #:nodoc:
36
36
  :pattern111 => 7
37
37
  }
38
38
 
39
- # Generic QRCode exception class.
39
+ # StandardErrors
40
40
 
41
- class QRCodeArgumentError < ArgumentError; end
42
- class QRCodeRunTimeError < RuntimeError; end
41
+ class QRCodeArgumentError < ArgumentError; end
42
+ class QRCodeRunTimeError < RuntimeError; end
43
43
 
44
- # This is the main interface for creating your QRCode
45
- # You create a new instance of QRCode and then you have
46
- # a few simple methods to choose form
44
+ # == Creation
45
+ #
46
+ # QRCode objects expect only one required constructor parameter
47
+ # and an optional hash of any other. Here's a few examples:
48
+ #
49
+ # qr = RQRCode::QRCode.new('hello world')
50
+ # qr = RQRCode::QRCode.new('hello world', :size => 1, :level => :m )
51
+ #
47
52
 
48
53
  class QRCode
49
54
  attr_reader :modules, :module_count
50
55
 
51
56
  PAD0 = 0xEC
52
- PAD1 = 0x11
53
-
54
- # Expects a string to be parsed in, other options have defaults
55
-
56
- def initialize( *args )
57
- raise QRCodeArgumentError unless args.first.kind_of?( String )
58
-
59
- @data = args.shift
60
- options = args.extract_options!
61
- level = options[:level] || :h
57
+ PAD1 = 0x11
58
+
59
+ # Expects a string to be parsed in, other args are optional
60
+ #
61
+ # # string - the string you wish to encode
62
+ # # size - the size of the qrcode
63
+ # # level - the error correction level
64
+ # qr = RQRCode::QRCode.new('hello world', :size => 1, :level => :m )
65
+ #
66
+
67
+ def initialize( *args )
68
+ raise QRCodeArgumentError unless args.first.kind_of?( String )
69
+
70
+ @data = args.shift
71
+ options = args.extract_options!
72
+ level = options[:level] || :h
62
73
  @error_correct_level = QRERRORCORRECTLEVEL[ level.to_sym ]
63
- @type_number = options[:size] || 4
64
- @module_count = @type_number * 4 + 17
65
- @modules = nil
66
- @data_cache = nil
67
- @data_list = QR8bitByte.new( @data )
74
+ @type_number = options[:size] || 4
75
+ @module_count = @type_number * 4 + 17
76
+ @modules = nil
77
+ @data_cache = nil
78
+ @data_list = QR8bitByte.new( @data )
68
79
 
69
- self.make # let's go !
80
+ self.make
70
81
  end
71
82
 
72
- # called parsing in a row and col coordinate
73
- # * return true or false
74
- # * raise exception if row < 0
75
- # * raise exception if col < 0
76
- # * raise exception if @module_count <= row
77
- # * raise exception if @module_count <= col
83
+ # <tt>is_dark</tt> is called with a +col+ and +row+ parameter. This will
84
+ # return true or false based on whether that coordinate exists in the
85
+ # matrix returned. It would normally be called while iterating through
86
+ # <tt>modules</tt>. A simple example would be:
87
+ #
88
+ # instance.is_dark( 10, 10 ) => true
89
+ #
78
90
 
79
91
  def is_dark( row, col )
80
92
  if row < 0 || @module_count <= row || col < 0 || @module_count <= col
@@ -83,8 +95,31 @@ module RQRCode #:nodoc:
83
95
  @modules[row][col]
84
96
  end
85
97
 
86
- def to_console( row = 'x', col = ' ' )
87
- res = []
98
+ # This is a public method that returns the QR Code you have
99
+ # generated as a string. It will not be able to be read
100
+ # in this format by a QR Code reader, but will give you an
101
+ # idea if the final outout. It takes two optional args
102
+ # +:true+ and +:false+ which are there for you to choose
103
+ # how the output looks. Here's an example of it's use:
104
+ #
105
+ # instance.to_s =>
106
+ # xxxxxxx x x x x x xx xxxxxxx
107
+ # x x xxx xxxxxx xxx x x
108
+ # x xxx x xxxxx x xx x xxx x
109
+ #
110
+ # instance._to_s( :true => 'E', :false => 'Q') =>
111
+ # EEEEEEEQEQQEQEQQQEQEQQEEQQEEEEEEE
112
+ # EQQQQQEQQEEEQQEEEEEEQEEEQQEQQQQQE
113
+ # EQEEEQEQQEEEEEQEQQQQQQQEEQEQEEEQE
114
+ #
115
+
116
+ def to_s( *args )
117
+ options = args.extract_options!
118
+ row = options[:true] || 'x'
119
+ col = options[:false] || ' '
120
+
121
+ res = []
122
+
88
123
  @modules.each_index do |c|
89
124
  tmp = []
90
125
  @modules.each_index do |r|
@@ -95,17 +130,17 @@ module RQRCode #:nodoc:
95
130
  end
96
131
  end
97
132
  res << tmp.join
98
- end
99
- res.join("\n")
133
+ end
134
+ res.join("\n")
100
135
  end
101
136
 
102
- protected
137
+ protected
103
138
 
104
- def make #:nodoc:
139
+ def make #:nodoc:
105
140
  make_impl( false, get_best_mask_pattern )
106
- end
141
+ end
107
142
 
108
- private
143
+ private
109
144
 
110
145
 
111
146
  def make_impl( test, mask_pattern ) #:nodoc:
@@ -196,7 +231,7 @@ module RQRCode #:nodoc:
196
231
  @modules[row + r][col + c] = false
197
232
  end
198
233
  end
199
- end
234
+ end
200
235
  end
201
236
  end
202
237
  end
@@ -249,7 +284,7 @@ module RQRCode #:nodoc:
249
284
  end
250
285
 
251
286
  # fixed module
252
- @modules[ @module_count - 8 ][8] = !test
287
+ @modules[ @module_count - 8 ][8] = !test
253
288
  end
254
289
 
255
290
 
@@ -290,7 +325,7 @@ module RQRCode #:nodoc:
290
325
  break
291
326
  end
292
327
  end
293
- end
328
+ end
294
329
  end
295
330
 
296
331
  def QRCode.create_data( type_number, error_correct_level, data_list ) #:nodoc:
@@ -302,16 +337,16 @@ module RQRCode #:nodoc:
302
337
  buffer.put(
303
338
  data.get_length, QRUtil.get_length_in_bits( data.mode, type_number )
304
339
  )
305
- data.write( buffer )
340
+ data.write( buffer )
306
341
 
307
342
  total_data_count = 0
308
343
  ( 0...rs_blocks.size ).each do |i|
309
- total_data_count = total_data_count + rs_blocks[i].data_count
344
+ total_data_count = total_data_count + rs_blocks[i].data_count
310
345
  end
311
346
 
312
347
  if buffer.get_length_in_bits > total_data_count * 8
313
348
  raise QRCodeRunTimeError,
314
- "code length overflow. (#{buffer.get_length_in_bits}>#{total_data_count})"
349
+ "code length overflow. (#{buffer.get_length_in_bits}>#{total_data_count})"
315
350
  end
316
351
 
317
352
  if buffer.get_length_in_bits + 4 <= total_data_count * 8
@@ -374,8 +409,8 @@ module RQRCode #:nodoc:
374
409
  ( 0...rs_blocks.size ).each do |r|
375
410
  if i < dcdata[r].size
376
411
  index += 1
377
- data[index-1] = dcdata[r][i]
378
- end
412
+ data[index-1] = dcdata[r][i]
413
+ end
379
414
  end
380
415
  end
381
416
 
@@ -383,8 +418,8 @@ module RQRCode #:nodoc:
383
418
  ( 0...rs_blocks.size ).each do |r|
384
419
  if i < ecdata[r].size
385
420
  index += 1
386
- data[index-1] = ecdata[r][i]
387
- end
421
+ data[index-1] = ecdata[r][i]
422
+ end
388
423
  end
389
424
  end
390
425
 
@@ -63,7 +63,7 @@ module RQRCode #:nodoc:
63
63
 
64
64
  ( 0...get_length ).each do |i|
65
65
  num[i] = get(i)
66
- end
66
+ end
67
67
 
68
68
  ( 0...e.get_length ).each do |i|
69
69
  tmp = num[i].nil? ? 0 : num[i]
@@ -44,7 +44,7 @@ module RQRCode #:nodoc:
44
44
  [2, 35, 17],
45
45
  [2, 35, 13],
46
46
 
47
- # 4
47
+ # 4
48
48
  [1, 100, 80],
49
49
  [2, 50, 32],
50
50
  [2, 50, 24],
@@ -62,7 +62,7 @@ module RQRCode #:nodoc:
62
62
  [4, 43, 19],
63
63
  [4, 43, 15],
64
64
 
65
- # 7
65
+ # 7
66
66
  [2, 98, 78],
67
67
  [4, 49, 31],
68
68
  [2, 32, 14, 4, 33, 15],
@@ -80,7 +80,7 @@ module RQRCode #:nodoc:
80
80
  [4, 36, 16, 4, 37, 17],
81
81
  [4, 36, 12, 4, 37, 13],
82
82
 
83
- # 10
83
+ # 10
84
84
  [2, 86, 68, 2, 87, 69],
85
85
  [4, 69, 43, 1, 70, 44],
86
86
  [6, 43, 19, 2, 44, 20],
@@ -94,7 +94,7 @@ module RQRCode #:nodoc:
94
94
 
95
95
  if rs_block.nil?
96
96
  raise QRCodeRunTimeError,
97
- "bad rsblock @ typeno: #{type_no}/error_correct_level:#{error_correct_level}"
97
+ "bad rsblock @ typeno: #{type_no}/error_correct_level:#{error_correct_level}"
98
98
  end
99
99
 
100
100
  length = rs_block.size / 3
@@ -25,7 +25,7 @@ module RQRCode #:nodoc:
25
25
  [6, 24, 42],
26
26
  [6, 26, 46],
27
27
  [6, 28, 50],
28
- [6, 30, 54],
28
+ [6, 30, 54],
29
29
  [6, 32, 58],
30
30
  [6, 34, 62],
31
31
  [6, 26, 46, 66],
@@ -57,7 +57,7 @@ module RQRCode #:nodoc:
57
57
  [6, 30, 58, 86, 114, 142, 170]
58
58
  ]
59
59
 
60
- G15 = 1 << 10 | 1 << 8 | 1 << 5 | 1 << 4 | 1 << 2 | 1 << 1 | 1 << 0
60
+ G15 = 1 << 10 | 1 << 8 | 1 << 5 | 1 << 4 | 1 << 2 | 1 << 1 | 1 << 0
61
61
  G18 = 1 << 12 | 1 << 11 | 1 << 10 | 1 << 9 | 1 << 8 | 1 << 5 | 1 << 2 | 1 << 0
62
62
  G15_MASK = 1 << 14 | 1 << 12 | 1 << 10 | 1 << 4 | 1 << 1
63
63
 
@@ -116,7 +116,7 @@ module RQRCode #:nodoc:
116
116
  when QRMASKPATTERN[:pattern111]
117
117
  ( (i * j) % 3 + (i + j) % 2) % 2 == 0
118
118
  else
119
- raise QRCodeRunTimeError, "bad mask_pattern: #{mask_pattern}"
119
+ raise QRCodeRunTimeError, "bad mask_pattern: #{mask_pattern}"
120
120
  end
121
121
  end
122
122
 
@@ -137,7 +137,7 @@ module RQRCode #:nodoc:
137
137
 
138
138
  # 1 - 9
139
139
  case mode
140
- when QRMODE[:mode_number] : 10
140
+ when QRMODE[:mode_number] : 10
141
141
  when QRMODE[:mode_alpha_num] : 9
142
142
  when QRMODE[:mode_8bit_byte] : 8
143
143
  when QRMODE[:mode_kanji] : 8
@@ -149,7 +149,7 @@ module RQRCode #:nodoc:
149
149
 
150
150
  # 10 -26
151
151
  case mode
152
- when QRMODE[:mode_number] : 12
152
+ when QRMODE[:mode_number] : 12
153
153
  when QRMODE[:mode_alpha_num] : 11
154
154
  when QRMODE[:mode_8bit_byte] : 16
155
155
  when QRMODE[:mode_kanji] : 10
@@ -161,7 +161,7 @@ module RQRCode #:nodoc:
161
161
 
162
162
  # 27 - 40
163
163
  case mode
164
- when QRMODE[:mode_number] : 14
164
+ when QRMODE[:mode_number] : 14
165
165
  when QRMODE[:mode_alpha_num] : 13
166
166
  when QRMODE[:mode_8bit_byte] : 16
167
167
  when QRMODE[:mode_kanji] : 12
@@ -199,7 +199,7 @@ module RQRCode #:nodoc:
199
199
 
200
200
  if same_count > 5
201
201
  lost_point += (3 + same_count - 5)
202
- end
202
+ end
203
203
  end
204
204
  end
205
205
 
@@ -211,8 +211,8 @@ module RQRCode #:nodoc:
211
211
  count = count + 1 if qr_code.is_dark( row + 1, col )
212
212
  count = count + 1 if qr_code.is_dark( row, col + 1 )
213
213
  count = count + 1 if qr_code.is_dark( row + 1, col + 1 )
214
- lost_point = lost_point + 3 if (count == 0 || count == 4)
215
- end
214
+ lost_point = lost_point + 3 if (count == 0 || count == 4)
215
+ end
216
216
  end
217
217
 
218
218
  # level 3
@@ -239,15 +239,15 @@ module RQRCode #:nodoc:
239
239
  ( 0...module_count ).each do |row|
240
240
  if qr_code.is_dark(row, col)
241
241
  dark_count = dark_count + 1
242
- end
242
+ end
243
243
  end
244
244
  end
245
245
 
246
246
  ratio = (100 * dark_count / module_count / module_count - 50).abs / 5
247
247
  lost_point = lost_point * 10
248
248
 
249
- lost_point
250
- end
249
+ lost_point
250
+ end
251
251
 
252
252
  end
253
253
 
data/test/runtest.rb CHANGED
@@ -2,75 +2,77 @@ require "test/unit"
2
2
  require "lib/rqrcode"
3
3
 
4
4
  class QRCodeTest < Test::Unit::TestCase
5
- require "test/test_data"
5
+ require "test/test_data"
6
6
 
7
- def test_no_data_given
8
- assert_raise(RQRCode::QRCodeArgumentError) {
9
- RQRCode::QRCode.new( :size => 1, :level => :h )
10
- RQRCode::QRCode.new( :size => 1 )
11
- RQRCode::QRCode.new
12
- }
13
- assert_raise(RQRCode::QRCodeRunTimeError) {
14
- qr = RQRCode::QRCode.new('duncan')
15
- qr.is_dark(0,999999)
16
- }
17
- end
7
+ def test_no_data_given
8
+ assert_raise(RQRCode::QRCodeArgumentError) {
9
+ RQRCode::QRCode.new( :size => 1, :level => :h )
10
+ RQRCode::QRCode.new( :size => 1 )
11
+ RQRCode::QRCode.new
12
+ }
13
+ assert_raise(RQRCode::QRCodeRunTimeError) {
14
+ qr = RQRCode::QRCode.new('duncan')
15
+ qr.is_dark(0,999999)
16
+ }
17
+ end
18
18
 
19
19
  def test_H_
20
- qr = RQRCode::QRCode.new( 'duncan', :size => 1 )
20
+ qr = RQRCode::QRCode.new( 'duncan', :size => 1 )
21
21
 
22
22
  assert_equal qr.modules.size, 21
23
- assert_equal qr.modules, MATRIX_1_H
23
+ assert_equal qr.modules, MATRIX_1_H
24
24
 
25
- qr = RQRCode::QRCode.new( 'duncan', :size => 1 )
26
- assert_equal qr.modules, MATRIX_1_H
27
- qr = RQRCode::QRCode.new( 'duncan', :size => 1, :level => :l )
28
- assert_equal qr.modules, MATRIX_1_L
29
- qr = RQRCode::QRCode.new( 'duncan', :size => 1, :level => :m )
30
- assert_equal qr.modules, MATRIX_1_M
31
- qr = RQRCode::QRCode.new( 'duncan', :size => 1, :level => :q )
32
- assert_equal qr.modules, MATRIX_1_Q
25
+ qr = RQRCode::QRCode.new( 'duncan', :size => 1 )
26
+ assert_equal qr.modules, MATRIX_1_H
27
+ qr = RQRCode::QRCode.new( 'duncan', :size => 1, :level => :l )
28
+ assert_equal qr.modules, MATRIX_1_L
29
+ qr = RQRCode::QRCode.new( 'duncan', :size => 1, :level => :m )
30
+ assert_equal qr.modules, MATRIX_1_M
31
+ qr = RQRCode::QRCode.new( 'duncan', :size => 1, :level => :q )
32
+ assert_equal qr.modules, MATRIX_1_Q
33
33
  end
34
34
 
35
35
  def test_3_H_
36
- qr = RQRCode::QRCode.new( 'duncan', :size => 3 )
36
+ qr = RQRCode::QRCode.new( 'duncan', :size => 3 )
37
37
 
38
38
  assert_equal qr.modules.size, 29
39
- assert_equal qr.modules, MATRIX_3_H
39
+ assert_equal qr.modules, MATRIX_3_H
40
40
  end
41
41
 
42
42
  def test_5_H_
43
- qr = RQRCode::QRCode.new( 'duncan', :size => 5 )
43
+ qr = RQRCode::QRCode.new( 'duncan', :size => 5 )
44
44
 
45
45
  assert_equal qr.modules.size, 37
46
- assert_equal qr.modules, MATRIX_5_H
46
+ assert_equal qr.modules, MATRIX_5_H
47
47
  end
48
48
 
49
49
  def test_10_H_
50
- qr = RQRCode::QRCode.new( 'duncan', :size => 10 )
50
+ qr = RQRCode::QRCode.new( 'duncan', :size => 10 )
51
51
 
52
52
  assert_equal qr.modules.size, 57
53
- assert_equal qr.modules, MATRIX_10_H
53
+ assert_equal qr.modules, MATRIX_10_H
54
54
  end
55
55
 
56
56
  def test_4_H_
57
- qr = RQRCode::QRCode.new('www.bbc.co.uk/programmes/b0090blw',
58
- :level => :l )
59
- assert_equal qr.modules, MATRIX_4_L
60
- qr = RQRCode::QRCode.new('www.bbc.co.uk/programmes/b0090blw',
61
- :level => :m )
62
- assert_equal qr.modules, MATRIX_4_M
63
- qr = RQRCode::QRCode.new('www.bbc.co.uk/programmes/b0090blw',
64
- :level => :q )
65
- assert_equal qr.modules, MATRIX_4_Q
57
+ qr = RQRCode::QRCode.new('www.bbc.co.uk/programmes/b0090blw',
58
+ :level => :l )
59
+ assert_equal qr.modules, MATRIX_4_L
60
+ qr = RQRCode::QRCode.new('www.bbc.co.uk/programmes/b0090blw',
61
+ :level => :m )
62
+ assert_equal qr.modules, MATRIX_4_M
63
+ qr = RQRCode::QRCode.new('www.bbc.co.uk/programmes/b0090blw',
64
+ :level => :q )
65
+ assert_equal qr.modules, MATRIX_4_Q
66
66
 
67
- qr = RQRCode::QRCode.new('www.bbc.co.uk/programmes/b0090blw')
67
+ qr = RQRCode::QRCode.new('www.bbc.co.uk/programmes/b0090blw')
68
68
  assert_equal qr.modules.size, 33
69
- assert_equal qr.modules, MATRIX_4_H
69
+ assert_equal qr.modules, MATRIX_4_H
70
70
  end
71
71
 
72
- def test_to_console
73
- qr = RQRCode::QRCode.new( 'duncan', :size => 1 )
74
- assert_equal qr.to_console[0..21], "xxxxxxx xx x xxxxxxx\n"
75
- end
72
+ def test_to_s
73
+ qr = RQRCode::QRCode.new( 'duncan', :size => 1 )
74
+ assert_equal qr.to_s[0..21], "xxxxxxx xx x xxxxxxx\n"
75
+ assert_equal qr.to_s( :true => 'q', :false => 'n' )[0..21], "qqqqqqqnqqnqnnqqqqqqq\n"
76
+ assert_equal qr.to_s( :true => '@' )[0..21], "@@@@@@@ @@ @ @@@@@@@\n"
77
+ end
76
78
  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: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Duncan Robertson
@@ -9,11 +9,11 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-02-24 00:00:00 +00:00
12
+ date: 2008-02-28 00:00:00 +00:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
16
- description: rQRCode is a library for encoding QRCodes. The simple interace allows you to simply create QRCodes ready to be displayed in the way you choose.
16
+ description: rQRCode is a library for encoding QR Codes. The simple interface allows you to simply create QR Code data structures ready to be displayed in the way you choose.
17
17
  email: duncan@whomwah.com
18
18
  executables: []
19
19