rqrcode 0.2.1 → 0.3.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.
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