which_browser 0.1.2 → 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.
data/.travis.yml ADDED
@@ -0,0 +1,8 @@
1
+ rvm:
2
+ - 1.8.7
3
+ - 1.9.2
4
+ - 1.9.3
5
+ - rbx
6
+ - rbx-2.0
7
+ - ree
8
+ - jruby
data/LICENSE ADDED
@@ -0,0 +1,27 @@
1
+ Copyright (c) 2011 Spencer Steffen and Citrus Media Group.
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without modification,
5
+ are permitted provided that the following conditions are met:
6
+
7
+ * Redistributions of source code must retain the above copyright notice,
8
+ this list of conditions and the following disclaimer.
9
+
10
+ * Redistributions in binary form must reproduce the above copyright notice,
11
+ this list of conditions and the following disclaimer in the documentation
12
+ and/or other materials provided with the distribution.
13
+
14
+ * Neither the name of Citrus Media Group nor the names of its
15
+ contributors may be used to endorse or promote products derived from this
16
+ software without specific prior written permission.
17
+
18
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
22
+ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
25
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
- Which Browser
2
- =============
1
+ # Which Browser [![Build Status](https://secure.travis-ci.org/citrus/which_browser.png)](http://travis-ci.org/citrus/which_browser)
2
+
3
+ ### Check for user agents like a boss!
4
+
3
5
 
4
6
  Which Browser adds a few helper methods to a rack request so you can write cleaner browser-related logic.
5
7
 
@@ -7,6 +9,7 @@ For example, the age old battle against IE 5 & 6 can be handled like so:
7
9
 
8
10
  stylesheet_link_tag "ie" if request.ie_lt7?
9
11
 
12
+
10
13
  And for a nice browser warning:
11
14
 
12
15
  - if request.ie6?
@@ -17,8 +20,7 @@ And for a nice browser warning:
17
20
 
18
21
  Or in your rails controller, decide which layout:
19
22
 
20
- render :layout => request.mobile_safari? ? 'mobile' : 'application'
21
-
23
+ render :layout => request.mobile? ? 'mobile' : 'application'
22
24
 
23
25
 
24
26
  Here's some other popular helpers:
@@ -28,29 +30,46 @@ Here's some other popular helpers:
28
30
  request.ie_lt6?
29
31
  request.ie_gte7?
30
32
 
33
+ request.mobile?
31
34
  request.ipad?
32
35
  request.ipod?
33
36
  request.iphone?
34
37
  request.mobile_safari?
35
38
 
36
39
 
40
+ Installation
41
+ ------------
42
+
43
+ As usual, just use the `gem install` command:
44
+
45
+ (sudo) gem install which_browser
46
+
47
+ Or add which_browser as a gem in your Gemfile:
48
+
49
+ gem 'which_browser', '>= 0.2.0'
50
+
51
+ Then run `bundle install`
52
+
37
53
 
38
54
  Testing
39
55
  -------
40
56
 
41
- Shouda tests can be run with:
57
+ Tests can be run with:
42
58
 
43
59
  git clone git://github.com/citrus/which_browser.git
44
- rake
60
+ cd which_browser
61
+ bundle
62
+ bundle exec rake
45
63
 
46
- There is also a ramaze app in test/dummy for a demo, development and real-life testing. Install ramaze (`gem install ramaze`) if you don't have it, then run:
64
+ There is also a sinatra app in `test/dummy` for a demo and real-life testing. Install sinatra (`gem install sinatra`) if you don't have it, then run:
47
65
 
66
+ cd which_browser
48
67
  ruby test/dummy/app.rb
49
68
 
50
- Now open your browser to [http://localhost:7000](http://localhost:7000)
69
+ Now open your browser to [http://localhost:4567](http://localhost:4567) and fiddle with your user agent.
51
70
 
52
71
 
53
72
  License
54
73
  -------
55
74
 
56
- Copyright (c) 2011 Spencer Steffen, released under the New BSD License All rights reserved.
75
+ Copyright (c) 2011 Spencer Steffen and Citrus, released under the New BSD License All rights reserved.
@@ -1,3 +1,3 @@
1
1
  module WhichBrowser
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/which_browser.rb CHANGED
@@ -15,6 +15,10 @@ module WhichBrowser
15
15
  test_user_agent(/Linux/)
16
16
  end
17
17
 
18
+ def mobile?
19
+ test_user_agent(/Mobile|webOS/)
20
+ end
21
+
18
22
 
19
23
  # =============================================
20
24
  # iOS Methods
@@ -74,6 +78,8 @@ module WhichBrowser
74
78
  end
75
79
 
76
80
 
81
+
82
+
77
83
  private
78
84
 
79
85
  def method_missing(method, *args, &block)
@@ -132,10 +138,10 @@ module WhichBrowser
132
138
  end
133
139
 
134
140
  def extract_version_with(regex)
135
- v = (self.user_agent.match(regex) || [])[1].to_f
136
- 0 < v ? v : false
141
+ v = self.user_agent.to_s.match(regex)[1].to_f rescue 0
142
+ 0 < v ? v : false
137
143
  end
138
144
 
139
145
  end
140
146
 
141
- Rack::Request.send(:include, WhichBrowser)
147
+ Rack::Request.send(:include, WhichBrowser)
data/test/dummy/app.rb CHANGED
@@ -1,34 +1,36 @@
1
- require 'rubygems'
2
- require 'ramaze'
1
+ begin
2
+ require 'rubygems'
3
+ require 'sinatra'
4
+ rescue LoadError => e
5
+ puts "Please install sinatra before running this demo."
6
+ puts "Try: `gem install sinatra`"
7
+ end
3
8
 
4
9
  require File.expand_path("../../../lib/which_browser", __FILE__)
5
-
6
- class MainController < Ramaze::Controller
7
- def index
8
-
9
- # add other methods you'd like to see to the list:
10
- [
11
- :user_agent,
12
- :ie?,
13
- :ie6?,
14
- :ie_lt6?,
15
- :ie_lte7?,
16
- :ie_gte6?,
17
- :safari?,
18
- :safari_version,
19
- :ff?,
20
- :ff_version,
21
- :opera?,
22
- :chrome?,
23
- :chrome?,
24
- :pc?,
25
- :mac?,
26
- :linux?
27
- ].collect{ |method|
28
- v = request.send(method)
29
- %(#{method} &nbsp; <span style="color: #{v == false ? 'red' : 'green' }; font-weight: #{v == false ? 'normal' : 'bold'}">#{v}</span>)
30
- }.join("<br/>")
31
- end
10
+
11
+ get "/" do
12
+ # add other methods you'd like to see to the list:
13
+ [
14
+ :user_agent,
15
+ :ie?,
16
+ :ie6?,
17
+ :ie_lt6?,
18
+ :ie_lte7?,
19
+ :ie_gte6?,
20
+ :safari?,
21
+ :safari_version,
22
+ :mobile_safari?,
23
+ :ff?,
24
+ :ff_version,
25
+ :opera?,
26
+ :chrome?,
27
+ :chrome?,
28
+ :pc?,
29
+ :mac?,
30
+ :linux?,
31
+ :mobile?
32
+ ].collect{ |method|
33
+ v = request.send(method)
34
+ %(#{method} &nbsp; <span style="color: #{v == false ? 'red' : 'green' }; font-weight: #{v == false ? 'normal' : 'bold'}">#{v}</span>)
35
+ }.join("<br/>")
32
36
  end
33
-
34
- Ramaze.start(:mode => :dev)
data/test/helper.rb CHANGED
@@ -1,15 +1,8 @@
1
- begin
2
- require 'rubygems'
3
- require 'bundler/setup'
4
- require 'test/unit'
5
- require 'rack'
6
- require 'shoulda'
7
- require 'which_browser'
8
- rescue LoadError => e
9
- puts "Load error!"
10
- puts e.inspect
11
- exit
12
- end
1
+ require 'rubygems'
2
+ require 'minitest/autorun'
3
+ require 'minitest/should'
4
+ require 'rack'
5
+ require 'which_browser'
13
6
 
14
7
  USER_AGENTS = {}
15
8
 
data/test/test_chrome.rb CHANGED
@@ -1,6 +1,6 @@
1
- require_relative 'helper'
1
+ require File.expand_path('../helper', __FILE__)
2
2
 
3
- class TestChrome < Test::Unit::TestCase
3
+ class TestChrome < MiniTest::Unit::TestCase
4
4
 
5
5
  # chrome tests
6
6
 
data/test/test_firefox.rb CHANGED
@@ -1,6 +1,6 @@
1
- require_relative 'helper'
1
+ require File.expand_path('../helper', __FILE__)
2
2
 
3
- class TestFirefox < Test::Unit::TestCase
3
+ class TestFirefox < MiniTest::Unit::TestCase
4
4
 
5
5
  # firefox tests
6
6
 
@@ -1,6 +1,6 @@
1
- require_relative 'helper'
1
+ require File.expand_path('../helper', __FILE__)
2
2
 
3
- class TestInternetExplorer < Test::Unit::TestCase
3
+ class TestInternetExplorer < MiniTest::Unit::TestCase
4
4
 
5
5
  # ie tests
6
6
 
data/test/test_os.rb ADDED
@@ -0,0 +1,25 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+
3
+ class TestOS < MiniTest::Unit::TestCase
4
+
5
+ should "be on mac" do
6
+ request = get_request(:Chrome, '8.0.552.237')
7
+ assert request.mac?
8
+ end
9
+
10
+ should "be on pc" do
11
+ request = get_request(:IE, '6.0')
12
+ assert request.pc?
13
+ end
14
+
15
+ should "be on linux" do
16
+ request = get_request(:Chrome, '4.0.202.2')
17
+ assert request.linux?
18
+ end
19
+
20
+ should "be on mobile" do
21
+ request = get_request(:MobileSafari, 'iPhone')
22
+ assert request.mobile?
23
+ end
24
+
25
+ end
data/test/test_safari.rb CHANGED
@@ -1,6 +1,6 @@
1
- require_relative 'helper'
1
+ require File.expand_path('../helper', __FILE__)
2
2
 
3
- class TestSafari < Test::Unit::TestCase
3
+ class TestSafari < MiniTest::Unit::TestCase
4
4
 
5
5
  # safari tests
6
6
 
@@ -8,9 +8,9 @@ Gem::Specification.new do |s|
8
8
  s.platform = Gem::Platform::RUBY
9
9
  s.authors = ["Spencer Steffen"]
10
10
  s.email = ["spencer@citrusme.com"]
11
- s.homepage = ""
12
- s.summary = %q{Which Browser adds a few helper methods to a rack request.}
13
- s.description = %q{Which Browser adds a few helper methods to a rack request.}
11
+ s.homepage = "https://github.com/citrus/which_browser"
12
+ s.summary = %q{Which Browser adds a few helper methods to a rack request making it easier to determine which browser is being used by the client.}
13
+ s.description = %q{Which Browser adds a few helper methods to a rack request making it easier to determine which browser is being used by the client.}
14
14
 
15
15
  s.files = `git ls-files`.split("\n")
16
16
  s.test_files = `git ls-files -- test/*`.split("\n")
@@ -19,7 +19,8 @@ Gem::Specification.new do |s|
19
19
 
20
20
  s.add_dependency('rack', '>= 1.0.1')
21
21
 
22
- s.add_development_dependency('shoulda', '>= 2.11.3')
23
- s.add_development_dependency('ramaze', '>= 2011.01.30')
22
+ s.add_development_dependency('rake', '>= 0.8.7')
23
+ s.add_development_dependency('minitest', '>= 2.1.0')
24
+ s.add_development_dependency('minitest_should', '>= 0.1.1')
24
25
 
25
26
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: which_browser
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.2
5
+ version: 0.2.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Spencer Steffen
@@ -10,12 +10,10 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-02-08 00:00:00 -08:00
14
- default_executable:
13
+ date: 2011-12-02 00:00:00 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: rack
18
- prerelease: false
19
17
  requirement: &id001 !ruby/object:Gem::Requirement
20
18
  none: false
21
19
  requirements:
@@ -23,30 +21,42 @@ dependencies:
23
21
  - !ruby/object:Gem::Version
24
22
  version: 1.0.1
25
23
  type: :runtime
24
+ prerelease: false
26
25
  version_requirements: *id001
27
26
  - !ruby/object:Gem::Dependency
28
- name: shoulda
29
- prerelease: false
27
+ name: rake
30
28
  requirement: &id002 !ruby/object:Gem::Requirement
31
29
  none: false
32
30
  requirements:
33
31
  - - ">="
34
32
  - !ruby/object:Gem::Version
35
- version: 2.11.3
33
+ version: 0.8.7
36
34
  type: :development
35
+ prerelease: false
37
36
  version_requirements: *id002
38
37
  - !ruby/object:Gem::Dependency
39
- name: ramaze
40
- prerelease: false
38
+ name: minitest
41
39
  requirement: &id003 !ruby/object:Gem::Requirement
42
40
  none: false
43
41
  requirements:
44
42
  - - ">="
45
43
  - !ruby/object:Gem::Version
46
- version: 2011.01.30
44
+ version: 2.1.0
47
45
  type: :development
46
+ prerelease: false
48
47
  version_requirements: *id003
49
- description: Which Browser adds a few helper methods to a rack request.
48
+ - !ruby/object:Gem::Dependency
49
+ name: minitest_should
50
+ requirement: &id004 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: 0.1.1
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: *id004
59
+ description: Which Browser adds a few helper methods to a rack request making it easier to determine which browser is being used by the client.
50
60
  email:
51
61
  - spencer@citrusme.com
52
62
  executables: []
@@ -57,7 +67,9 @@ extra_rdoc_files: []
57
67
 
58
68
  files:
59
69
  - .gitignore
70
+ - .travis.yml
60
71
  - Gemfile
72
+ - LICENSE
61
73
  - README.md
62
74
  - Rakefile
63
75
  - lib/which_browser.rb
@@ -67,11 +79,10 @@ files:
67
79
  - test/test_chrome.rb
68
80
  - test/test_firefox.rb
69
81
  - test/test_internet_explorer.rb
70
- - test/test_requests.rb
82
+ - test/test_os.rb
71
83
  - test/test_safari.rb
72
84
  - which_browser.gemspec
73
- has_rdoc: true
74
- homepage: ""
85
+ homepage: https://github.com/citrus/which_browser
75
86
  licenses: []
76
87
 
77
88
  post_install_message:
@@ -84,25 +95,31 @@ required_ruby_version: !ruby/object:Gem::Requirement
84
95
  requirements:
85
96
  - - ">="
86
97
  - !ruby/object:Gem::Version
98
+ hash: -4551958323863309221
99
+ segments:
100
+ - 0
87
101
  version: "0"
88
102
  required_rubygems_version: !ruby/object:Gem::Requirement
89
103
  none: false
90
104
  requirements:
91
105
  - - ">="
92
106
  - !ruby/object:Gem::Version
107
+ hash: -4551958323863309221
108
+ segments:
109
+ - 0
93
110
  version: "0"
94
111
  requirements: []
95
112
 
96
113
  rubyforge_project:
97
- rubygems_version: 1.5.0
114
+ rubygems_version: 1.8.5
98
115
  signing_key:
99
116
  specification_version: 3
100
- summary: Which Browser adds a few helper methods to a rack request.
117
+ summary: Which Browser adds a few helper methods to a rack request making it easier to determine which browser is being used by the client.
101
118
  test_files:
102
119
  - test/dummy/app.rb
103
120
  - test/helper.rb
104
121
  - test/test_chrome.rb
105
122
  - test/test_firefox.rb
106
123
  - test/test_internet_explorer.rb
107
- - test/test_requests.rb
124
+ - test/test_os.rb
108
125
  - test/test_safari.rb
@@ -1,10 +0,0 @@
1
- require_relative 'helper'
2
-
3
- class TestRequests < Test::Unit::TestCase
4
-
5
- should "return test user agent" do
6
- request = get_request(:Safari, '4.0.1')
7
- assert_equal true, request.test_user_agent(/Safari/)
8
- end
9
-
10
- end