schmobile 0.3.2 → 0.4.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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.2
1
+ 0.4.0
@@ -9,6 +9,10 @@ module Rack
9
9
  sprint symbian telit ucweb up.b upg1 vodafone webos windows\ ce x240 x320 xiino
10
10
  )
11
11
 
12
+ NON_MOBILE_USER_AGENTS = %w(
13
+ ipad
14
+ )
15
+
12
16
  def self.remove_user_agent_pattern(pattern)
13
17
  MOBILE_USER_AGENTS.delete(pattern)
14
18
  @mobile_agent_matcher = nil
@@ -20,13 +24,25 @@ module Rack
20
24
  end
21
25
 
22
26
  def self.is_mobile_agent?(user_agent)
23
- !(user_agent.to_s.downcase =~ mobile_agent_matcher).nil?
27
+ agent = user_agent.to_s.downcase
28
+ agent !~ non_mobile_agent_matcher && !(agent =~ mobile_agent_matcher).nil?
24
29
  end
25
30
 
26
31
  def self.mobile_agent_matcher
27
32
  @mobile_agent_matcher ||= Regexp.new(MOBILE_USER_AGENTS.uniq.compact.map { |v| Regexp.escape(v) }.join("|"))
28
33
  end
29
34
 
35
+ def self.non_mobile_agent_matcher
36
+ @non_mobile_agent_matcher ||= Regexp.new(NON_MOBILE_USER_AGENTS.uniq.compact.map { |v| Regexp.escape(v) }.join("|"))
37
+ end
38
+
39
+ def self.matched_by?(user_agent)
40
+ MOBILE_USER_AGENTS.each do |agent|
41
+ return agent if user_agent =~ /#{agent}/
42
+ end
43
+ nil
44
+ end
45
+
30
46
  end
31
47
  end
32
48
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{schmobile}
8
- s.version = "0.3.2"
8
+ s.version = "0.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Morten Primdahl"]
12
- s.date = %q{2011-05-31}
12
+ s.date = %q{2011-06-30}
13
13
  s.description = %q{Used to determine if a request is from a mobile client, and possibly redirect it if that's the case}
14
14
  s.email = %q{morten@zendesk.com}
15
15
  s.extra_rdoc_files = [
@@ -51,6 +51,10 @@ class TestRackRequest < Test::Unit::TestCase
51
51
  end
52
52
  end
53
53
 
54
+ should "not detect an ipad as a mobile browser" do
55
+ assert !request("HTTP_USER_AGENT" => ipad).is_mobile?
56
+ end
57
+
54
58
  should "return false when forced in the session" do
55
59
  Rack::Request.any_instance.stubs(:session).returns({ Rack::Schmobile::IS_MOBILE => false })
56
60
  assert !request("HTTP_USER_AGENT" => iphone).is_mobile?
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: schmobile
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 15
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 3
9
- - 2
10
- version: 0.3.2
8
+ - 4
9
+ - 0
10
+ version: 0.4.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Morten Primdahl
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-31 00:00:00 -07:00
18
+ date: 2011-06-30 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency