rails-browscap 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md ADDED
@@ -0,0 +1,51 @@
1
+ Browscap
2
+ ========
3
+
4
+ Using the excellent http://github.com/lfittl/browscap parser as a rail plugin
5
+
6
+ run rake browscap:update to get the new browscap.ini from http://browsers.garykeith.com
7
+
8
+ Known Issues
9
+ ========
10
+
11
+ Ruby 1.9:
12
+
13
+ The file is ISO-8859-1
14
+
15
+ The hex escape char \xdf in
16
+
17
+ Line 3553
18
+
19
+ [Der gro\xdfe BilderSauger*]
20
+ Parent=Image Crawlers
21
+ Browser=Gallery Grabber
22
+
23
+ makes the current version of browscap choke. I have monkey patched browscap so you should be fine.
24
+
25
+ Also Line 5228
26
+
27
+ [www.substancia.com AutoHTTPAgent (ver *)]
28
+ Parent=Version Checkers
29
+ Browser=Substância
30
+
31
+ the 'â' make inifile < 0.4.0 choke.
32
+
33
+ The lib requires inifile >= 0.4.0 so this should be fine.
34
+
35
+ Example
36
+ =======
37
+
38
+ initializer/application.rb
39
+
40
+ BROWSCAP = Browscap.new 'config/browscap.ini'
41
+
42
+ application_controller.rb
43
+
44
+ def current_browser
45
+ @current_browser ||= BROWSCAP.query(request.user_agent)
46
+ end
47
+
48
+ TODO
49
+ =======
50
+
51
+ Copyright (c) 2010 [Gilles Devaux], released under the MIT license
data/install.rb CHANGED
@@ -1,2 +1 @@
1
- # Install hook code here
2
- puts "Run rake browscap:update to finish the install"
1
+ puts "Run rails generate rails_browscap:install to finish the install"
@@ -0,0 +1,71 @@
1
+ #browscap-0.1.0 does not use the encoding option, monkey patch it waiting for native support
2
+ class Browscap
3
+
4
+ def initialize(filename = 'browscap.ini', encoding='ISO-8859-1')
5
+ @@user_agent_properties ||= {}
6
+ @@user_agent_regexps ||= {}
7
+ @@match_cache ||= {}
8
+
9
+ if @@user_agent_properties.empty? || @@user_agent_regexps.empty?
10
+ ini = IniFile.load(filename, {:encoding => encoding})
11
+
12
+ # Remote meta sections
13
+ ini.delete_section '*'
14
+ ini.delete_section 'GJK_Browscap_Version'
15
+
16
+ # Create a list of non-parent sections
17
+ child_sections = ini.sections.dup
18
+ ini.sections.each do |section|
19
+ child_sections.delete ini[section]["Parent"]
20
+ end
21
+
22
+ # Populate user_agent_properties and user_agent_regexps
23
+ child_sections.each do |section|
24
+ properties = _get_browser_props(ini, section)
25
+
26
+ browser = Browser.new
27
+ browser.browser = properties['Browser']
28
+ browser.version = properties['Version']
29
+ browser.major_ver = properties['MajorVer'].to_i
30
+ browser.minor_ver = properties['MinorVer'].to_i
31
+ browser.platform = properties['Platform']
32
+ browser.alpha = properties['Alpha'].downcase == 'true'
33
+ browser.beta = properties['Beta'].downcase == 'true'
34
+ browser.win16 = properties['Win16'].downcase == 'true'
35
+ browser.win32 = properties['Win32'].downcase == 'true'
36
+ browser.win64 = properties['Win64'].downcase == 'true'
37
+ browser.frames = properties['Frames'].downcase == 'true'
38
+ browser.iframes = properties['IFrames'].downcase == 'true'
39
+ browser.tables = properties['Tables'].downcase == 'true'
40
+ browser.cookies = properties['Cookies'].downcase == 'true'
41
+ browser.background_sounds = properties['BackgroundSounds'].downcase == 'true'
42
+ browser.javascript = properties['JavaScript'].downcase == 'true'
43
+ browser.vbscript = properties['VBScript'].downcase == 'true'
44
+ browser.java_applets = properties['JavaApplets'].downcase == 'true'
45
+ browser.activex_controls = properties['ActiveXControls'].downcase == 'true'
46
+ browser.is_banned = properties['isBanned'].downcase == 'true'
47
+ browser.is_mobile_device = properties['isMobileDevice'].downcase == 'true'
48
+ browser.is_syndication_reader = properties['isSyndicationReader'].downcase == 'true'
49
+ browser.crawler = properties['Crawler'].downcase == 'true'
50
+ browser.css_version = properties['CssVersion'].to_i
51
+ browser.supports_css = properties['supportsCSS'].downcase == 'true'
52
+ browser.aol_version = properties['aolVersion'].to_i
53
+ browser.aol = properties['AOL'].downcase == 'true'
54
+
55
+ @@user_agent_properties[section] = browser
56
+
57
+ # Convert .ini file regexp syntax into ruby regexp syntax
58
+ regexp = section.dup
59
+ regexp.gsub! /([\^\$\(\)\[\]\.\-])/, "\\\\\\1"
60
+ regexp.gsub! "?", "."
61
+ regexp.gsub! "*", ".*?"
62
+
63
+ if RUBY_VERSION < '1.9'
64
+ @@user_agent_regexps[section] = Regexp.new(("^%s$" % regexp))
65
+ else
66
+ @@user_agent_regexps[section] = Regexp.new(("^%s$" % regexp).force_encoding(encoding))
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,9 @@
1
+ Description:
2
+ Install browscap
3
+
4
+ Example:
5
+ rails generate browscap:install
6
+
7
+ This will create:
8
+ config/browscap.ini
9
+ config/initializer/browscap.rb
@@ -0,0 +1,25 @@
1
+ require 'rails/generators'
2
+
3
+ module RailsBrowscap
4
+ module Generators
5
+ class InstallGenerator < Rails::Generators::Base
6
+ source_root File.expand_path('../templates', __FILE__)
7
+
8
+ desc 'install browscap'
9
+
10
+ def install
11
+
12
+ #downlad browscap.ini
13
+
14
+ Net::HTTP.start("browsers.garykeith.com") { |http|
15
+ resp = http.get("/stream.asp?BrowsCapINI", {'User-Agent' => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.9) Gecko/20100824 Firefox/3.6.9'})
16
+ create_file("config/browscap.ini", resp.body)
17
+ }
18
+
19
+ #initialize
20
+ copy_file "browscap.rb", "config/initializers/browscap.rb"
21
+ end
22
+
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,4 @@
1
+ require 'browscap'
2
+ module Rails
3
+ @@browscap = ::Browscap.new 'config/browscap.ini'
4
+ end
@@ -1,2 +1,27 @@
1
1
  require 'inifile'
2
2
  require 'browscap'
3
+
4
+ require 'rails'
5
+ require 'action_controller'
6
+
7
+ require 'rails-browscap/controllers/helpers'
8
+
9
+ #force ISO-8859-1 until browscap updates
10
+ require 'browscap_compat'
11
+
12
+ module RailsBrowscap
13
+ class Railtie < Rails::Railtie
14
+ rake_tasks do
15
+ load "tasks/rails-browscap_tasks.rake"
16
+ end
17
+ end
18
+ end
19
+
20
+
21
+ module RailsBrowscap
22
+ def self.query(user_agent)
23
+ @@browscap.query(user_agent)
24
+ end
25
+ end
26
+ ActionController::Base.send :include, RailsBrowscap::Controllers::Helpers
27
+
@@ -0,0 +1,15 @@
1
+ module RailsBrowscap
2
+ module Controllers
3
+ module Helpers
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ helper_method :current_browser
8
+ end
9
+
10
+ def current_browser
11
+ @current_browser ||= RailsBrowscap.query(request.user_agent)
12
+ end
13
+ end
14
+ end
15
+ end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-browscap
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 27
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
8
+ - 1
7
9
  - 0
8
- - 4
9
- version: 0.0.4
10
+ version: 0.1.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - Gilles Devaux
@@ -14,37 +15,105 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2011-02-03 00:00:00 -08:00
18
+ date: 2011-02-18 00:00:00 -08:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
- name: browscap
22
+ name: rails
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ~>
26
28
  - !ruby/object:Gem::Version
29
+ hash: 7
30
+ segments:
31
+ - 3
32
+ - 0
33
+ - 0
34
+ version: 3.0.0
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: browscap
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ hash: 27
27
46
  segments:
28
47
  - 0
29
48
  - 1
30
49
  - 0
31
50
  version: 0.1.0
32
51
  type: :runtime
33
- version_requirements: *id001
52
+ version_requirements: *id002
34
53
  - !ruby/object:Gem::Dependency
35
54
  name: inifile
36
55
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
56
+ requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
38
58
  requirements:
39
59
  - - ~>
40
60
  - !ruby/object:Gem::Version
61
+ hash: 15
41
62
  segments:
42
63
  - 0
64
+ - 4
65
+ - 0
66
+ version: 0.4.0
67
+ type: :runtime
68
+ version_requirements: *id003
69
+ - !ruby/object:Gem::Dependency
70
+ name: activesupport
71
+ prerelease: false
72
+ requirement: &id004 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ hash: 15
78
+ segments:
43
79
  - 3
44
80
  - 0
45
- version: 0.3.0
81
+ - 4
82
+ version: 3.0.4
46
83
  type: :runtime
47
- version_requirements: *id002
84
+ version_requirements: *id004
85
+ - !ruby/object:Gem::Dependency
86
+ name: i18n
87
+ prerelease: false
88
+ requirement: &id005 !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ hash: 11
94
+ segments:
95
+ - 0
96
+ - 5
97
+ - 0
98
+ version: 0.5.0
99
+ type: :runtime
100
+ version_requirements: *id005
101
+ - !ruby/object:Gem::Dependency
102
+ name: test-unit
103
+ prerelease: false
104
+ requirement: &id006 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - "="
108
+ - !ruby/object:Gem::Version
109
+ hash: 7
110
+ segments:
111
+ - 2
112
+ - 2
113
+ - 0
114
+ version: 2.2.0
115
+ type: :development
116
+ version_requirements: *id006
48
117
  description:
49
118
  email: gilles.devaux@gmail.com
50
119
  executables: []
@@ -52,13 +121,18 @@ executables: []
52
121
  extensions: []
53
122
 
54
123
  extra_rdoc_files:
55
- - README
124
+ - README.md
56
125
  files:
57
126
  - rails/init.rb
127
+ - lib/browscap_compat.rb
128
+ - lib/generators/rails_browscap/install/install_generator.rb
129
+ - lib/generators/rails_browscap/install/templates/browscap.rb
130
+ - lib/generators/rails_browscap/install/USAGE
131
+ - lib/rails-browscap/controllers/helpers.rb
58
132
  - lib/rails-browscap.rb
59
133
  - lib/tasks/rails-browscap_tasks.rake
60
134
  - MIT-LICENSE
61
- - README
135
+ - README.md
62
136
  - install.rb
63
137
  - uninstall.rb
64
138
  has_rdoc: true
@@ -71,23 +145,27 @@ rdoc_options: []
71
145
  require_paths:
72
146
  - lib
73
147
  required_ruby_version: !ruby/object:Gem::Requirement
148
+ none: false
74
149
  requirements:
75
150
  - - ">="
76
151
  - !ruby/object:Gem::Version
152
+ hash: 3
77
153
  segments:
78
154
  - 0
79
155
  version: "0"
80
156
  required_rubygems_version: !ruby/object:Gem::Requirement
157
+ none: false
81
158
  requirements:
82
159
  - - ">="
83
160
  - !ruby/object:Gem::Version
161
+ hash: 3
84
162
  segments:
85
163
  - 0
86
164
  version: "0"
87
165
  requirements: []
88
166
 
89
167
  rubyforge_project:
90
- rubygems_version: 1.3.6
168
+ rubygems_version: 1.3.7
91
169
  signing_key:
92
170
  specification_version: 3
93
171
  summary: rails plugin around the broswcap gem
data/README DELETED
@@ -1,14 +0,0 @@
1
- Browscap
2
- ========
3
-
4
- Using the excellent http://github.com/lfittl/browscap parser as a rail plugin
5
-
6
- run rake browscap:update to get the new browscap.ini from http://browsers.garykeith.com
7
-
8
- Example
9
- =======
10
-
11
- Example goes here.
12
-
13
-
14
- Copyright (c) 2010 [name of plugin creator], released under the MIT license