browser 0.1.6 → 0.2.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 0f90b0344537f71e69a359b33edbcebe06ee932f
4
+ data.tar.gz: 6e6caba603576500ab20f2b643be80904fc5e1d1
5
+ SHA512:
6
+ metadata.gz: 75b78cc40248cc1a32c0acc7c92a4ea7375acc1a9324d2a1120d6538a217bf9c3b2fce3de825516dba71375ee76005db283fe91f44f4dea627b92781f9097e23
7
+ data.tar.gz: 580e766794ff26827365750195a2f42e068b745a28f531744f0b2116526a5bbf7f3d0956bd02d4cbd27cf7e2fa4e30296e53b6d44327e1777d158247a7b7c965
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
1
  pkg
2
2
  coverage
3
- doc
3
+ doc
4
+ log
data/.travis.yml ADDED
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
5
+ - jruby-19mode
6
+ gemfile:
7
+ - gemfiles/rails3.gemfile
8
+ - gemfiles/rails4.gemfile
data/Gemfile CHANGED
@@ -1,2 +1,2 @@
1
- source :rubygems
1
+ source "http://rubygems.org"
2
2
  gemspec
data/Gemfile.lock CHANGED
@@ -1,38 +1,52 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- browser (0.1.6)
4
+ browser (0.2.0)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
8
8
  specs:
9
- actionpack (3.2.11)
10
- activemodel (= 3.2.11)
11
- activesupport (= 3.2.11)
12
- builder (~> 3.0.0)
9
+ actionmailer (4.0.0)
10
+ actionpack (= 4.0.0)
11
+ mail (~> 2.5.3)
12
+ actionpack (4.0.0)
13
+ activesupport (= 4.0.0)
14
+ builder (~> 3.1.0)
13
15
  erubis (~> 2.7.0)
14
- journey (~> 1.0.4)
15
- rack (~> 1.4.0)
16
- rack-cache (~> 1.2)
17
- rack-test (~> 0.6.1)
18
- sprockets (~> 2.2.1)
19
- activemodel (3.2.11)
20
- activesupport (= 3.2.11)
21
- builder (~> 3.0.0)
22
- activesupport (3.2.11)
23
- i18n (~> 0.6)
24
- multi_json (~> 1.0)
16
+ rack (~> 1.5.2)
17
+ rack-test (~> 0.6.2)
18
+ activemodel (4.0.0)
19
+ activesupport (= 4.0.0)
20
+ builder (~> 3.1.0)
21
+ activerecord (4.0.0)
22
+ activemodel (= 4.0.0)
23
+ activerecord-deprecated_finders (~> 1.0.2)
24
+ activesupport (= 4.0.0)
25
+ arel (~> 4.0.0)
26
+ activerecord-deprecated_finders (1.0.3)
27
+ activesupport (4.0.0)
28
+ i18n (~> 0.6, >= 0.6.4)
29
+ minitest (~> 4.2)
30
+ multi_json (~> 1.3)
31
+ thread_safe (~> 0.1)
32
+ tzinfo (~> 0.3.37)
33
+ arel (4.0.0)
34
+ atomic (1.1.10)
25
35
  awesome_print (1.1.0)
26
- builder (3.0.4)
27
- coderay (1.0.8)
36
+ builder (3.1.4)
37
+ coderay (1.0.9)
28
38
  erubis (2.7.0)
29
- hike (1.2.1)
30
- i18n (0.6.1)
31
- journey (1.0.4)
32
- json (1.7.6)
39
+ hike (1.2.3)
40
+ i18n (0.6.4)
41
+ mail (2.5.4)
42
+ mime-types (~> 1.16)
43
+ treetop (~> 1.4.8)
33
44
  method_source (0.8.1)
34
- multi_json (1.5.0)
35
- pry (0.9.11.4)
45
+ mime-types (1.23)
46
+ minitest (4.7.5)
47
+ multi_json (1.7.7)
48
+ polyglot (0.3.3)
49
+ pry (0.9.12.2)
36
50
  coderay (~> 1.0.5)
37
51
  method_source (~> 0.8)
38
52
  slop (~> 3.4)
@@ -43,32 +57,50 @@ GEM
43
57
  pry-remote
44
58
  pry-nav (0.2.3)
45
59
  pry (~> 0.9.10)
46
- pry-remote (0.1.6)
60
+ pry-remote (0.1.7)
47
61
  pry (~> 0.9)
48
62
  slop (~> 3.0)
49
- rack (1.4.5)
50
- rack-cache (1.2)
51
- rack (>= 0.4)
63
+ rack (1.5.2)
52
64
  rack-test (0.6.2)
53
65
  rack (>= 1.0)
54
- rake (10.0.3)
55
- rdoc (3.12.1)
56
- json (~> 1.4)
57
- slop (3.4.3)
58
- sprockets (2.2.2)
66
+ rails (4.0.0)
67
+ actionmailer (= 4.0.0)
68
+ actionpack (= 4.0.0)
69
+ activerecord (= 4.0.0)
70
+ activesupport (= 4.0.0)
71
+ bundler (>= 1.3.0, < 2.0)
72
+ railties (= 4.0.0)
73
+ sprockets-rails (~> 2.0.0)
74
+ railties (4.0.0)
75
+ actionpack (= 4.0.0)
76
+ activesupport (= 4.0.0)
77
+ rake (>= 0.8.7)
78
+ thor (>= 0.18.1, < 2.0)
79
+ rake (10.1.0)
80
+ slop (3.4.5)
81
+ sprockets (2.10.0)
59
82
  hike (~> 1.2)
60
83
  multi_json (~> 1.0)
61
84
  rack (~> 1.0)
62
85
  tilt (~> 1.1, != 1.3.0)
63
- tilt (1.3.3)
86
+ sprockets-rails (2.0.0)
87
+ actionpack (>= 3.0)
88
+ activesupport (>= 3.0)
89
+ sprockets (~> 2.8)
90
+ thor (0.18.1)
91
+ thread_safe (0.1.0)
92
+ atomic
93
+ tilt (1.4.1)
94
+ treetop (1.4.14)
95
+ polyglot
96
+ polyglot (>= 0.3.1)
97
+ tzinfo (0.3.37)
64
98
 
65
99
  PLATFORMS
66
100
  ruby
67
101
 
68
102
  DEPENDENCIES
69
- actionpack
70
- awesome_print
71
103
  browser!
72
104
  pry-meta
73
- rake
74
- rdoc
105
+ rack-test
106
+ rails
data/README.md ADDED
@@ -0,0 +1,114 @@
1
+ # Browser
2
+
3
+ [![Travis-CI](https://travis-ci.org/fnando/browser.png)](https://travis-ci.org/fnando/browser)
4
+ [![CodeClimate](https://codeclimate.com/github/fnando/browser.png)](https://codeclimate.com/github/fnando/browser)
5
+
6
+ Do some browser detection with Ruby. Includes ActionController integration.
7
+
8
+ ## Installation
9
+
10
+ ```bash
11
+ gem install browser
12
+ ```
13
+
14
+ ## Usage
15
+
16
+ ```ruby
17
+ require "rubygems"
18
+ require "browser"
19
+
20
+ browser = Browser.new(:ua => "some string", :accept_language => "en-us")
21
+ browser.name # readable browser name
22
+ browser.safari?
23
+ browser.opera?
24
+ browser.chrome?
25
+ browser.mobile?
26
+ browser.tablet?
27
+ browser.firefox?
28
+ browser.ie?
29
+ browser.ie6? # this goes up to 10
30
+ browser.modern? # Webkit, Firefox 17+, IE 9+ and Opera 12+
31
+ browser.platform # return :mac, :windows, :linux or :other
32
+ browser.mac?
33
+ browser.windows?
34
+ browser.linux?
35
+ browser.blackberry?
36
+ browser.meta # an array with several attributes
37
+ browser.to_s # the meta info joined by space
38
+ ```
39
+
40
+ See the [tests](https://github.com/fnando/browser/blob/master/test/browser_test.rb) and [implementation](https://github.com/fnando/browser/blob/master/lib/browser.rb) for more examples.
41
+
42
+ ### Rails integration
43
+
44
+ Just add it to the Gemfile.
45
+
46
+ ```ruby
47
+ gem "browser"
48
+ ```
49
+
50
+ This adds a helper method called `browser`, that inspects your current user agent.
51
+
52
+ ```erb
53
+ <% if browser.ie6? %>
54
+ <p class="disclaimer">You're running an older IE version. Please update it!</p>
55
+ <% end %>
56
+ ```
57
+
58
+ ### Middleware
59
+
60
+ You can use the `Browser::Middleware` to redirect user agents.
61
+
62
+ ```ruby
63
+ use Browser::Middleware do
64
+ redirect_to "/upgrade" unless browser.modern?
65
+ end
66
+ ```
67
+
68
+ If you're using Rails, you can use the route helper methods. Just add something like the following to a initializer file (`config/initializers/browser.rb`).
69
+
70
+ ```ruby
71
+ Rails.configuration.middleware.use Browser::Middleware do
72
+ redirect_to upgrade_path unless browser.modern?
73
+ end
74
+ ```
75
+
76
+ Notice that you can have multiple conditionals.
77
+
78
+ ```ruby
79
+ Rails.configuration.middleware.use Browser::Middleware do
80
+ redirect_to upgrade_path(browser: "oldie") if browser.ie? && !browser.modern?
81
+ redirect_to upgrade_path(browser: "oldfx") if browser.firefox? && !browser.modern?
82
+ end
83
+ ```
84
+
85
+ ## Maintainer
86
+
87
+ * Nando Vieira - http://nandovieira.com.br
88
+
89
+ ## Contributors
90
+
91
+ * https://github.com/fnando/browser/contributors
92
+
93
+ ## License
94
+
95
+ (The MIT License)
96
+
97
+ Permission is hereby granted, free of charge, to any person obtaining
98
+ a copy of this software and associated documentation files (the
99
+ 'Software'), to deal in the Software without restriction, including
100
+ without limitation the rights to use, copy, modify, merge, publish,
101
+ distribute, sublicense, and/or sell copies of the Software, and to
102
+ permit persons to whom the Software is furnished to do so, subject to
103
+ the following conditions:
104
+
105
+ The above copyright notice and this permission notice shall be
106
+ included in all copies or substantial portions of the Software.
107
+
108
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
109
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
110
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
111
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
112
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
113
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
114
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile CHANGED
@@ -1,8 +1,6 @@
1
1
  require "bundler"
2
2
  Bundler::GemHelper.install_tasks
3
3
 
4
- require "./lib/browser/version"
5
-
6
4
  require "rake/testtask"
7
5
  Rake::TestTask.new do |t|
8
6
  t.libs << "lib"
@@ -12,13 +10,17 @@ Rake::TestTask.new do |t|
12
10
  t.ruby_opts = %w[-rubygems]
13
11
  end
14
12
 
15
- require 'rdoc/task'
16
- RDoc::Task.new do |rdoc|
17
- rdoc.main = "README.rdoc"
18
- rdoc.rdoc_dir = "doc"
19
- rdoc.title = "Browser API"
20
- rdoc.options += %w[ --line-numbers --charset utf-8 ]
21
- rdoc.rdoc_files.include("README.rdoc", "lib/**/*.rb")
13
+ desc "Run specs against all gemfiles"
14
+ task "test:all" do
15
+ %w[
16
+ Gemfile
17
+ gemfiles/rails3.gemfile
18
+ ].each do |gemfile|
19
+ ENV["BUNDLE_GEMFILE"] = gemfile
20
+ puts "=> Running with Gemfile: #{gemfile}"
21
+ Rake::Task["test"].reenable
22
+ Rake::Task["test"].invoke
23
+ end
22
24
  end
23
25
 
24
- task :default => :test
26
+ task :default => "test"
data/browser.gemspec CHANGED
@@ -17,9 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
18
  s.require_paths = ["lib"]
19
19
 
20
- s.add_development_dependency "actionpack"
21
- s.add_development_dependency "rake"
22
- s.add_development_dependency "rdoc"
23
20
  s.add_development_dependency "pry-meta"
24
- s.add_development_dependency "awesome_print"
21
+ s.add_development_dependency "rails"
22
+ s.add_development_dependency "rack-test"
25
23
  end
data/config.ru ADDED
@@ -0,0 +1,2 @@
1
+ require "./test/sample_app"
2
+ run Rails.application
@@ -0,0 +1,4 @@
1
+ source "https://rubygems.org"
2
+ gemspec path: ".."
3
+
4
+ gem "rails", "~> 3.2.13"
@@ -0,0 +1,111 @@
1
+ PATH
2
+ remote: /mnt/hgfs/!%Projects/github/browser
3
+ specs:
4
+ browser (0.2.0)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ actionmailer (3.2.13)
10
+ actionpack (= 3.2.13)
11
+ mail (~> 2.5.3)
12
+ actionpack (3.2.13)
13
+ activemodel (= 3.2.13)
14
+ activesupport (= 3.2.13)
15
+ builder (~> 3.0.0)
16
+ erubis (~> 2.7.0)
17
+ journey (~> 1.0.4)
18
+ rack (~> 1.4.5)
19
+ rack-cache (~> 1.2)
20
+ rack-test (~> 0.6.1)
21
+ sprockets (~> 2.2.1)
22
+ activemodel (3.2.13)
23
+ activesupport (= 3.2.13)
24
+ builder (~> 3.0.0)
25
+ activerecord (3.2.13)
26
+ activemodel (= 3.2.13)
27
+ activesupport (= 3.2.13)
28
+ arel (~> 3.0.2)
29
+ tzinfo (~> 0.3.29)
30
+ activeresource (3.2.13)
31
+ activemodel (= 3.2.13)
32
+ activesupport (= 3.2.13)
33
+ activesupport (3.2.13)
34
+ i18n (= 0.6.1)
35
+ multi_json (~> 1.0)
36
+ arel (3.0.2)
37
+ awesome_print (1.1.0)
38
+ builder (3.0.4)
39
+ coderay (1.0.9)
40
+ erubis (2.7.0)
41
+ hike (1.2.3)
42
+ i18n (0.6.1)
43
+ journey (1.0.4)
44
+ json (1.8.0)
45
+ mail (2.5.4)
46
+ mime-types (~> 1.16)
47
+ treetop (~> 1.4.8)
48
+ method_source (0.8.1)
49
+ mime-types (1.23)
50
+ multi_json (1.7.7)
51
+ polyglot (0.3.3)
52
+ pry (0.9.12.2)
53
+ coderay (~> 1.0.5)
54
+ method_source (~> 0.8)
55
+ slop (~> 3.4)
56
+ pry-meta (0.0.5)
57
+ awesome_print
58
+ pry
59
+ pry-nav
60
+ pry-remote
61
+ pry-nav (0.2.3)
62
+ pry (~> 0.9.10)
63
+ pry-remote (0.1.7)
64
+ pry (~> 0.9)
65
+ slop (~> 3.0)
66
+ rack (1.4.5)
67
+ rack-cache (1.2)
68
+ rack (>= 0.4)
69
+ rack-ssl (1.3.3)
70
+ rack
71
+ rack-test (0.6.2)
72
+ rack (>= 1.0)
73
+ rails (3.2.13)
74
+ actionmailer (= 3.2.13)
75
+ actionpack (= 3.2.13)
76
+ activerecord (= 3.2.13)
77
+ activeresource (= 3.2.13)
78
+ activesupport (= 3.2.13)
79
+ bundler (~> 1.0)
80
+ railties (= 3.2.13)
81
+ railties (3.2.13)
82
+ actionpack (= 3.2.13)
83
+ activesupport (= 3.2.13)
84
+ rack-ssl (~> 1.3.2)
85
+ rake (>= 0.8.7)
86
+ rdoc (~> 3.4)
87
+ thor (>= 0.14.6, < 2.0)
88
+ rake (10.1.0)
89
+ rdoc (3.12.2)
90
+ json (~> 1.4)
91
+ slop (3.4.5)
92
+ sprockets (2.2.2)
93
+ hike (~> 1.2)
94
+ multi_json (~> 1.0)
95
+ rack (~> 1.0)
96
+ tilt (~> 1.1, != 1.3.0)
97
+ thor (0.18.1)
98
+ tilt (1.4.1)
99
+ treetop (1.4.14)
100
+ polyglot
101
+ polyglot (>= 0.3.1)
102
+ tzinfo (0.3.37)
103
+
104
+ PLATFORMS
105
+ ruby
106
+
107
+ DEPENDENCIES
108
+ browser!
109
+ pry-meta
110
+ rack-test
111
+ rails (~> 3.2.13)