is_it_mobile 1.0.0.3 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data.tar.gz.sig +0 -0
  2. data/README.txt +2 -3
  3. data/lib/is_it_mobile.rb +29 -10
  4. metadata +1 -1
  5. metadata.gz.sig +0 -0
data.tar.gz.sig CHANGED
Binary file
data/README.txt CHANGED
@@ -1,5 +1,4 @@
1
1
  = is_it_mobile
2
-
3
2
  * http://rubyforge.org/projects/contentfree/
4
3
 
5
4
  == DESCRIPTION:
@@ -42,12 +41,12 @@ IsItMobile.mobile? 'NokiaN90-1/3.0545.5.1 Series60/2.8 Profile/MIDP-2.0 Configur
42
41
 
43
42
  == REQUIREMENTS:
44
43
 
45
- * None
44
+ None
46
45
 
47
46
 
48
47
  == INSTALL:
49
48
 
50
- * sudo gem install is_it_mobile
49
+ sudo gem install is_it_mobile
51
50
 
52
51
 
53
52
  == LICENSE:
@@ -1,25 +1,44 @@
1
1
  class IsItMobile
2
- VERSION = '1.0.0.3'
2
+ VERSION = '1.0.1'
3
3
 
4
4
  POPULAR_MOBILE_USER_AGENT_BEGINNINGS = ['w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac', 'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno','ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-', 'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-','newt','noki','oper','palm','pana','pant','phil','play','port','prox', 'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar','sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-', 'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp','wapr','webc','winw','winw','xda','xda-']
5
-
5
+
6
+ # Performs a few lightweight checks on the user agent to determine if it's a mobile device.
7
+ def self.mobile?( user_agent, accepts )
8
+ return !!( user_agent =~ /(mobile|up.browser|up.link|mmp|symbian|phone|midp|wap|mini|ppc;|playstation|palm|wii|nitro)/i ||
9
+ accepts.index('application/vnd.wap.xhtml+xml') ||
10
+ POPULAR_MOBILE_USER_AGENT_BEGINNINGS.include?(user_agent[0,4]))
11
+ end
12
+
6
13
  module ForRails
14
+ # When ForRails is included in a controller, a before filter is added that will reset the request format to the
15
+ # value of +base.mobile_format+ which defaults to :mobile. To change it to something else, simply add a line after
16
+ # the inclusion that says +self.mobile_format = :handheld+ or whatever you'd like it to be.
17
+ #
18
+ # It also exposes the +request_is_from_mobile?+ method to the views if you don't want to create multiple erb views
19
+ # for every page (or want to keep a single layout file)
7
20
  def self.included(base)
8
21
  base.class_eval do
22
+ class_inheritable_accessor :mobile_format
23
+ self.mobile_format = :mobile
24
+
9
25
  before_filter :wrangle_format_if_request_is_mobile
26
+
27
+ helper_method :request_is_from_mobile?
10
28
  end
11
29
  end
12
30
 
13
31
  protected
32
+ # Checks if the request.format is *already* @@mobile_format (set by the query string or using an
33
+ # extension of 'mobile' with resourceful routes) and if not, uses IsItMobile.mobile? to
34
+ # determine whether or not the request is from a mobile device
35
+ def request_is_from_mobile?
36
+ @request_is_from_mobile ||= request.format.to_sym == self.class.mobile_format || IsItMobile.mobile?( request.env['HTTP_USER_AGENT'] || '', request.env['HTTP_ACCEPT'] || '' )
37
+ end
38
+
39
+ # Sets the request format to @@mobile_format when the request is from a mobile device
14
40
  def wrangle_format_if_request_is_mobile
15
- request.format = :mobile if IsItMobile.mobile?( request.env['HTTP_USER_AGENT'] || '', request.env['HTTP_ACCEPT'] || '' )
41
+ request.format = self.class.mobile_format if request_is_from_mobile?
16
42
  end
17
43
  end
18
-
19
- # Check if the given user agent is for a mobile device.
20
- def self.mobile?( user_agent, accepts )
21
- return !!( user_agent =~ /(mobile|up.browser|up.link|mmp|symbian|phone|midp|wap|mini|ppc;|playstation|palm|wii|nitro)/i ||
22
- accepts.index('application/vnd.wap.xhtml+xml') ||
23
- POPULAR_MOBILE_USER_AGENT_BEGINNINGS.include?(user_agent[0,4]))
24
- end
25
44
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: is_it_mobile
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.3
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dave Myron
metadata.gz.sig CHANGED
Binary file