rqrcode-rails3 0.1.2 → 0.1.3

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.
@@ -25,6 +25,13 @@ In your controller actions, you could return a QR code that links to the current
25
25
  format.png { render :qrcode => request.url }
26
26
  end
27
27
 
28
+ Options:
29
+
30
+ * +:size+ – This controls how big the QR Code will be. Smallest size will be chosen by default. Set to maintain consistent size.
31
+ * +:offset+ – Padding around the QR Code (e.g. 10)
32
+ * +:fill+ – Background color (e.g "ffffff" or :white)
33
+ * +:color+ – Foreground color for the code (e.g. "000000" or :black)
34
+
28
35
  == About
29
36
 
30
37
  This project was inspired by the first chapter in José Valim's book {Crafting Rails Applications}[http://pragprog.com/titles/jvrails/crafting-rails-applications]
@@ -1,15 +1,19 @@
1
1
  require 'action_controller'
2
2
  require 'rqrcode'
3
+ require 'rqrcode-rails3/size_calculator.rb'
3
4
  require 'rqrcode-rails3/renderers/svg.rb'
4
5
 
5
6
  module RQRCode
6
7
  Mime::Type.register "image/svg+xml", :svg
7
- Mime::Type.register "image/png", :png
8
+ Mime::Type.register "image/png", :png
9
+
10
+ extend SizeCalculator
8
11
 
9
12
  ActionController::Renderers.add :qrcode do |string, options|
10
13
  format = self.request.format.symbol
14
+ size = options[:size] || RQRCode.minimum_qr_size_from_string(string)
11
15
 
12
- qrcode = RQRCode::QRCode.new(string)
16
+ qrcode = RQRCode::QRCode.new(string, :size => size)
13
17
  svg = RQRCode::Renderers::SVG::render(qrcode, options)
14
18
 
15
19
  data = \
@@ -0,0 +1,40 @@
1
+ module RQRCode
2
+ module SizeCalculator
3
+ # size - seems to follow this logic
4
+ # # | input | modules
5
+ # | size | created
6
+ #-------|-------|--------
7
+ # 1 | 7 | 21
8
+ # 2 | 14 | 25 (+4)
9
+ # 3 | 24 | 29 -
10
+ # 4 | 34 | 33 -
11
+ # 5 | 44 | 37 -
12
+ # 6 | 58 | 41 -
13
+ # 7 | 64 | 45 -
14
+ # 8 | 84 | 49 -
15
+ # 9 | 98 | 53 -
16
+ # 10 | 119 | 57 -
17
+ # 11 | 137 | 61 -
18
+ # 12 | 155 | 65 -
19
+ # 13 | 177 | 69 -
20
+ # 14 | 194 | 73 -
21
+
22
+ QR_CHAR_SIZE_VS_SIZE = [7, 14, 24, 34, 44, 58, 64, 84, 98, 119, 137, 155, 177, 194]
23
+
24
+ def minimum_qr_size_from_string(string)
25
+ QR_CHAR_SIZE_VS_SIZE.each_with_index do |size, index|
26
+ return (index + 1) if string.size < size
27
+ end
28
+
29
+ # If it's particularly big, we'll try and create codes until it accepts
30
+ i = QR_CHAR_SIZE_VS_SIZE.size
31
+ begin
32
+ i += 1
33
+ RQRCode::QRCode.new(string, :size => i)
34
+ return i
35
+ rescue RQRCode::QRCodeRunTimeError
36
+ retry
37
+ end
38
+ end
39
+ end
40
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rqrcode-rails3
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
5
- prerelease: false
4
+ hash: 29
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 2
10
- version: 0.1.2
9
+ - 3
10
+ version: 0.1.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sam Vincent
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-06-08 00:00:00 -07:00
18
+ date: 2011-07-11 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -44,6 +44,7 @@ extra_rdoc_files: []
44
44
 
45
45
  files:
46
46
  - lib/rqrcode-rails3/renderers/svg.rb
47
+ - lib/rqrcode-rails3/size_calculator.rb
47
48
  - lib/rqrcode-rails3.rb
48
49
  - MIT-LICENSE
49
50
  - Rakefile
@@ -79,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
79
80
  requirements: []
80
81
 
81
82
  rubyforge_project:
82
- rubygems_version: 1.3.7
83
+ rubygems_version: 1.6.2
83
84
  signing_key:
84
85
  specification_version: 3
85
86
  summary: Render QR codes with Rails 3