quick_response 0.2.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.
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ pkg/*
2
+ *.gem
3
+ .bundle
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source :gemcutter
2
+
3
+ # Specify your gem's dependencies in quick_response.gemspec
4
+ gemspec
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,69 @@
1
+ module QuickResponse
2
+ class Base
3
+ GOOGLE_CHART_API = "http://chart.apis.google.com/chart"
4
+ DEFAULT_OPTIONS = { :size => 256 }
5
+
6
+ attr_reader :content
7
+ attr_accessor :size
8
+
9
+ def initialize(*args)
10
+ # Extract options
11
+ options = args.last.is_a?(Hash) ? DEFAULT_OPTIONS.merge(args.pop) : DEFAULT_OPTIONS
12
+
13
+ self.content = args
14
+ self.size = options[:size]
15
+ end
16
+
17
+ def content=(*args)
18
+ @content = to_format(args)
19
+ end
20
+
21
+ def image_url
22
+ uri.to_s
23
+ end
24
+
25
+ def save(location = "./qr.png")
26
+ Net::HTTP.start(uri.host) do |http|
27
+ resp = http.get(image_url)
28
+ open(location, 'wb') do |file|
29
+ file.write(resp.body)
30
+ end
31
+ end
32
+ end
33
+
34
+ private
35
+
36
+ def uri
37
+ @uri ||= URI.parse(GOOGLE_CHART_API)
38
+ @uri.query = [cht, chs, chl].join("&")
39
+ @uri
40
+ end
41
+
42
+ def cht
43
+ param :cht, "qr"
44
+ end
45
+
46
+ def chs
47
+ param :chs, "?x?".gsub("?", size.to_s)
48
+ end
49
+
50
+ def chl
51
+ param :chl, CGI.escape(content)
52
+ end
53
+
54
+ def param(key, value)
55
+ [key.to_s, value].join("=")
56
+ end
57
+
58
+ def self.format(format, options = {})
59
+ define_method :to_format do |args|
60
+ args = args.slice(0, options[:limit]) if options[:limit]
61
+ output = options[:output] || format
62
+ str = args.join(options[:join])
63
+
64
+ str.match(format) ? str : output.gsub("(.*)", str)
65
+ end
66
+ private :to_format
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,35 @@
1
+ module QuickResponse
2
+ module Shorthand
3
+ def new(*args)
4
+ args.first.is_a?(Symbol) ? send(*args) : text(*args)
5
+ end
6
+
7
+ def text(*args)
8
+ ::QuickResponse::Text.new(*args)
9
+ end
10
+
11
+ def url(*args)
12
+ ::QuickResponse::Url.new(*args)
13
+ end
14
+
15
+ def email(*args)
16
+ ::QuickResponse::Email.new(*args)
17
+ end
18
+
19
+ def call(*args)
20
+ ::QuickResponse::Call.new(*args)
21
+ end
22
+
23
+ def sms(*args)
24
+ ::QuickResponse::Sms.new(*args)
25
+ end
26
+
27
+ def geo(*args)
28
+ ::QuickResponse::Geo.new(*args)
29
+ end
30
+
31
+ def maps(*args)
32
+ ::QuickResponse::Maps.new(*args)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,5 @@
1
+ module QuickResponse
2
+ class Call < ::QuickResponse::Base
3
+ format "tel:(.*)"
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module QuickResponse
2
+ class Email < ::QuickResponse::Base
3
+ format "mailto:(.*)"
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module QuickResponse
2
+ class Geo < ::QuickResponse::Base
3
+ format "geo:(.*)", :join => ",", :limit => 2
4
+ end
5
+ end
@@ -0,0 +1,10 @@
1
+ module QuickResponse
2
+ class Maps < ::QuickResponse::Base
3
+ format "http://maps.google.com/maps?q=(.*)"
4
+
5
+ def initialize(*args)
6
+ args = args.map { |a| CGI.escape(a) }
7
+ super(*args)
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+ module QuickResponse
2
+ class Sms < ::QuickResponse::Base
3
+ format "smsto:(.*)", :join => ":", :limit => 2
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module QuickResponse
2
+ class Text < ::QuickResponse::Base
3
+ format "(.*)"
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module QuickResponse
2
+ class Url < ::QuickResponse::Base
3
+ format "http[s]?:\/{2}(.*)", :output => "http://(.*)", :join => "/"
4
+ end
5
+ end
@@ -0,0 +1,3 @@
1
+ module QuickResponse
2
+ VERSION = "0.2.1"
3
+ end
@@ -0,0 +1,19 @@
1
+ require 'cgi'
2
+ require 'uri'
3
+ require 'net/http'
4
+
5
+ module QuickResponse
6
+ autoload :Base, "quick_response/base"
7
+
8
+ autoload :Text, "quick_response/types/text"
9
+ autoload :Url, "quick_response/types/url"
10
+ autoload :Email, "quick_response/types/email"
11
+ autoload :Call, "quick_response/types/call"
12
+ autoload :Sms, "quick_response/types/sms"
13
+ autoload :Geo, "quick_response/types/geo"
14
+ autoload :Maps, "quick_response/types/maps"
15
+
16
+ autoload :Shorthand, "quick_response/shorthand"
17
+
18
+ extend Shorthand
19
+ end
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path("../lib/quick_response/version", __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "quick_response"
6
+ s.version = QuickResponse::VERSION
7
+ s.platform = Gem::Platform::RUBY
8
+ s.authors = ["Robin Clart"]
9
+ s.email = ["robin@charlin.be"]
10
+ s.homepage = "http://rubygems.org/gems/quick_response"
11
+ s.summary = "QR code generator"
12
+ s.description = "A simple gem that output an image url for a given data"
13
+
14
+ s.required_rubygems_version = ">= 1.3.6"
15
+ s.rubyforge_project = "quick_response"
16
+
17
+ s.add_development_dependency "bundler", ">= 1.0.0.rc.6"
18
+
19
+ s.files = `git ls-files`.split("\n")
20
+ s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
21
+ s.require_path = 'lib'
22
+ end
metadata ADDED
@@ -0,0 +1,97 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: quick_response
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 2
8
+ - 1
9
+ version: 0.2.1
10
+ platform: ruby
11
+ authors:
12
+ - Robin Clart
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-03-03 00:00:00 +01:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: bundler
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 1
30
+ - 0
31
+ - 0
32
+ - rc
33
+ - 6
34
+ version: 1.0.0.rc.6
35
+ type: :development
36
+ version_requirements: *id001
37
+ description: A simple gem that output an image url for a given data
38
+ email:
39
+ - robin@charlin.be
40
+ executables: []
41
+
42
+ extensions: []
43
+
44
+ extra_rdoc_files: []
45
+
46
+ files:
47
+ - .gitignore
48
+ - Gemfile
49
+ - Rakefile
50
+ - lib/quick_response.rb
51
+ - lib/quick_response/base.rb
52
+ - lib/quick_response/shorthand.rb
53
+ - lib/quick_response/types/call.rb
54
+ - lib/quick_response/types/email.rb
55
+ - lib/quick_response/types/geo.rb
56
+ - lib/quick_response/types/maps.rb
57
+ - lib/quick_response/types/sms.rb
58
+ - lib/quick_response/types/text.rb
59
+ - lib/quick_response/types/url.rb
60
+ - lib/quick_response/version.rb
61
+ - quick_response.gemspec
62
+ has_rdoc: true
63
+ homepage: http://rubygems.org/gems/quick_response
64
+ licenses: []
65
+
66
+ post_install_message:
67
+ rdoc_options: []
68
+
69
+ require_paths:
70
+ - lib
71
+ required_ruby_version: !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ segments:
77
+ - 0
78
+ version: "0"
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
80
+ none: false
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ segments:
85
+ - 1
86
+ - 3
87
+ - 6
88
+ version: 1.3.6
89
+ requirements: []
90
+
91
+ rubyforge_project: quick_response
92
+ rubygems_version: 1.3.7
93
+ signing_key:
94
+ specification_version: 3
95
+ summary: QR code generator
96
+ test_files: []
97
+