contentfree-is_it_mobile 1.1.1 → 1.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/.gitignore +3 -0
- data/LICENSE +20 -0
- data/README +45 -0
- data/Rakefile +45 -0
- data/VERSION.yml +2 -2
- data/features/is_it_mobile.feature +9 -0
- data/features/steps/is_it_mobile_steps.rb +0 -0
- data/features/support/env.rb +11 -0
- data/is_it_mobile.gemspec +50 -0
- data/lib/is_it_mobile.rb +4 -4
- data/lib/{is_it_mobile/rails.rb → rails/init.rb} +0 -0
- metadata +19 -11
data/.gitignore
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2008 Dave Myron
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
= is_it_mobile
|
2
|
+
* http://rubyforge.org/projects/contentfree/
|
3
|
+
|
4
|
+
== DESCRIPTION:
|
5
|
+
|
6
|
+
Simply determines if a user agent is for a mobile device.
|
7
|
+
|
8
|
+
Comes ready with a module for Rails 2.0 to enable multiviews (respond_to with a custom mimetype) for mobile devices (see Synopsis).
|
9
|
+
|
10
|
+
|
11
|
+
== FEATURES/PROBLEMS:
|
12
|
+
|
13
|
+
* Fast & Lightweight (doesn't use anything like WURFL, which would be overkill for a quick check)
|
14
|
+
|
15
|
+
|
16
|
+
== SYNOPSIS:
|
17
|
+
|
18
|
+
The lightweight tests used in IsItMobile are almost completely based on the work of Andy Moore in an
|
19
|
+
article at http://www.andymoore.info/php-to-detect-mobile-phones/. I added a couple more
|
20
|
+
user agents to the mix and obviously Rubified it.
|
21
|
+
|
22
|
+
It recognizes 99% of the mobile user agents from http://www.zytrax.com/tech/web/mobile_ids.html
|
23
|
+
It has nearly no false positives using the user agents from http://www.zytrax.com/tech/web/browser_ids.htm
|
24
|
+
The ones that don't quite pass are very rare (and some are even questionable appearing in their respective lists)
|
25
|
+
|
26
|
+
|
27
|
+
== INSTALL:
|
28
|
+
|
29
|
+
sudo gem install contentfree-is_it_mobile --source http://gems.github.com
|
30
|
+
|
31
|
+
|
32
|
+
== USAGE:
|
33
|
+
|
34
|
+
With Rails 2.0, simply add this to config/environment.rb:
|
35
|
+
config.gem 'contentfree-is_it_mobile', :lib => 'is_it_mobile/rails', :source => "http://gems.github.com"
|
36
|
+
|
37
|
+
Then, just create your views using suffixes of mobile.erb instead of html.erb
|
38
|
+
|
39
|
+
You can also just use IsItMobile directly:
|
40
|
+
IsItMobile.mobile?( 'NokiaN90-1/3.0545.5.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1' ) # => true
|
41
|
+
|
42
|
+
|
43
|
+
== REQUIREMENTS:
|
44
|
+
|
45
|
+
If using Rails, version must be >= 2.0 for multiview capability
|
data/Rakefile
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'rake'
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'jeweler'
|
5
|
+
Jeweler::Tasks.new do |s|
|
6
|
+
s.name = "is_it_mobile"
|
7
|
+
s.summary = %Q{TODO}
|
8
|
+
s.email = "dave.myron@contentfree.com"
|
9
|
+
s.homepage = "http://github.com/contentfree/is_it_mobile"
|
10
|
+
s.description = "TODO"
|
11
|
+
s.authors = ["Dave Myron"]
|
12
|
+
end
|
13
|
+
rescue LoadError
|
14
|
+
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
15
|
+
end
|
16
|
+
|
17
|
+
require 'rake/rdoctask'
|
18
|
+
Rake::RDocTask.new do |rdoc|
|
19
|
+
rdoc.rdoc_dir = 'rdoc'
|
20
|
+
rdoc.title = 'is_it_mobile'
|
21
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
22
|
+
rdoc.rdoc_files.include('README*')
|
23
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
24
|
+
end
|
25
|
+
|
26
|
+
require 'spec/rake/spectask'
|
27
|
+
Spec::Rake::SpecTask.new(:spec) do |t|
|
28
|
+
t.libs << 'lib' << 'spec'
|
29
|
+
t.spec_files = FileList['spec/**/*_spec.rb']
|
30
|
+
end
|
31
|
+
|
32
|
+
Spec::Rake::SpecTask.new(:rcov) do |t|
|
33
|
+
t.libs << 'lib' << 'spec'
|
34
|
+
t.spec_files = FileList['spec/**/*_spec.rb']
|
35
|
+
t.rcov = true
|
36
|
+
end
|
37
|
+
|
38
|
+
begin
|
39
|
+
require 'cucumber/rake/task'
|
40
|
+
Cucumber::Rake::Task.new(:features)
|
41
|
+
rescue LoadError
|
42
|
+
puts "Cucumber is not available. In order to run features, you must: sudo gem install cucumber"
|
43
|
+
end
|
44
|
+
|
45
|
+
task :default => :spec
|
data/VERSION.yml
CHANGED
File without changes
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{is_it_mobile}
|
5
|
+
s.version = "1.2.0"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Dave Myron"]
|
9
|
+
s.date = %q{2009-07-06}
|
10
|
+
s.description = %q{TODO}
|
11
|
+
s.email = %q{dave.myron@contentfree.com}
|
12
|
+
s.extra_rdoc_files = [
|
13
|
+
"LICENSE",
|
14
|
+
"README"
|
15
|
+
]
|
16
|
+
s.files = [
|
17
|
+
".gitignore",
|
18
|
+
"LICENSE",
|
19
|
+
"README",
|
20
|
+
"Rakefile",
|
21
|
+
"VERSION.yml",
|
22
|
+
"features/is_it_mobile.feature",
|
23
|
+
"features/steps/is_it_mobile_steps.rb",
|
24
|
+
"features/support/env.rb",
|
25
|
+
"is_it_mobile.gemspec",
|
26
|
+
"lib/is_it_mobile.rb",
|
27
|
+
"lib/rails/init.rb",
|
28
|
+
"spec/is_it_mobile_spec.rb",
|
29
|
+
"spec/spec_helper.rb"
|
30
|
+
]
|
31
|
+
s.homepage = %q{http://github.com/contentfree/is_it_mobile}
|
32
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
33
|
+
s.require_paths = ["lib"]
|
34
|
+
s.rubygems_version = %q{1.3.3}
|
35
|
+
s.summary = %q{TODO}
|
36
|
+
s.test_files = [
|
37
|
+
"spec/is_it_mobile_spec.rb",
|
38
|
+
"spec/spec_helper.rb"
|
39
|
+
]
|
40
|
+
|
41
|
+
if s.respond_to? :specification_version then
|
42
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
43
|
+
s.specification_version = 3
|
44
|
+
|
45
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
46
|
+
else
|
47
|
+
end
|
48
|
+
else
|
49
|
+
end
|
50
|
+
end
|
data/lib/is_it_mobile.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
class IsItMobile
|
2
|
-
|
2
|
+
POPULAR_MOBILE_USER_AGENT_PIECES = /(#{%w(
|
3
3
|
w3c acs- alav alca amoi audi avan benq bird blac blaz
|
4
4
|
brew cell cldc cmd- dang doco eric hipt inno ipaq java
|
5
5
|
jigs kddi keji leno lg-c lg-d lg-g lge- maui maxo midp
|
@@ -7,8 +7,8 @@ class IsItMobile
|
|
7
7
|
pana pant phil play port prox qwap sage sams sany sch-
|
8
8
|
sec- send seri sgh- shar sie- siem smal smar sony sph-
|
9
9
|
symb t-mo teli tim- tosh tsm- upg1 upsi vk-v voda wap-
|
10
|
-
wapa wapi wapp wapr webc winw winw xda xda-
|
11
|
-
)
|
10
|
+
wapa wapi wapp wapr webc webo winw winw xda xda-
|
11
|
+
).join('|')})/i
|
12
12
|
|
13
13
|
POPULAR_MOBILE_USER_AGENT_REGEX = /(mobile|up.browser|up.link|mmp|symbian|phone|midp|wap|mini|ppc;|playstation|palm|wii|nitro)/i
|
14
14
|
|
@@ -16,7 +16,7 @@ class IsItMobile
|
|
16
16
|
def self.mobile?( user_agent, accepts = '' )
|
17
17
|
!!( user_agent =~ POPULAR_MOBILE_USER_AGENT_REGEX ||
|
18
18
|
accepts.index('application/vnd.wap.xhtml+xml') ||
|
19
|
-
|
19
|
+
user_agent =~ POPULAR_MOBILE_USER_AGENT_PIECES )
|
20
20
|
end
|
21
21
|
|
22
22
|
# Some checks for some specific, popular mobile devices
|
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: contentfree-is_it_mobile
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dave Myron
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-07-06 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -19,20 +19,27 @@ executables: []
|
|
19
19
|
|
20
20
|
extensions: []
|
21
21
|
|
22
|
-
extra_rdoc_files:
|
23
|
-
|
22
|
+
extra_rdoc_files:
|
23
|
+
- LICENSE
|
24
|
+
- README
|
24
25
|
files:
|
26
|
+
- .gitignore
|
27
|
+
- LICENSE
|
28
|
+
- README
|
29
|
+
- Rakefile
|
25
30
|
- VERSION.yml
|
26
|
-
-
|
27
|
-
-
|
31
|
+
- features/is_it_mobile.feature
|
32
|
+
- features/steps/is_it_mobile_steps.rb
|
33
|
+
- features/support/env.rb
|
34
|
+
- is_it_mobile.gemspec
|
28
35
|
- lib/is_it_mobile.rb
|
36
|
+
- lib/rails/init.rb
|
29
37
|
- spec/is_it_mobile_spec.rb
|
30
38
|
- spec/spec_helper.rb
|
31
|
-
has_rdoc:
|
39
|
+
has_rdoc: false
|
32
40
|
homepage: http://github.com/contentfree/is_it_mobile
|
33
41
|
post_install_message:
|
34
42
|
rdoc_options:
|
35
|
-
- --inline-source
|
36
43
|
- --charset=UTF-8
|
37
44
|
require_paths:
|
38
45
|
- lib
|
@@ -53,7 +60,8 @@ requirements: []
|
|
53
60
|
rubyforge_project:
|
54
61
|
rubygems_version: 1.2.0
|
55
62
|
signing_key:
|
56
|
-
specification_version:
|
63
|
+
specification_version: 3
|
57
64
|
summary: TODO
|
58
|
-
test_files:
|
59
|
-
|
65
|
+
test_files:
|
66
|
+
- spec/is_it_mobile_spec.rb
|
67
|
+
- spec/spec_helper.rb
|