browscapper 0.0.1 → 0.1.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.
- checksums.yaml +7 -0
- data/.gitignore +2 -0
- data/Gemfile +17 -0
- data/Guardfile +17 -0
- data/MIT-LICENSE +1 -1
- data/README.rdoc +4 -0
- data/Rakefile +4 -28
- data/browscapper.gemspec +1 -3
- data/lib/browscapper.rb +3 -0
- data/lib/browscapper/reader.rb +2 -2
- data/lib/browscapper/reader/csv_reader.rb +1 -1
- data/lib/browscapper/user_agent.rb +4 -2
- data/lib/browscapper/version.rb +1 -1
- data/lib/tasks/dump.rake +60 -0
- data/test/browscapper/reader_tests.rb +52 -0
- data/test/browscapper_tests.rb +10 -12
- data/test/test_helper.rb +26 -0
- data/vendor/browscap.ini +106 -0
- metadata +19 -66
- data/test/reader_tests.rb +0 -37
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ede4118b2f3bcec3b30148e6bac3265215ca7c31
|
4
|
+
data.tar.gz: aa5ba1d31e8fae077eb4dd933f21e96d71d6ebb3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d943570726015c59daf03b4fb53e3addfe266350bf4802827eee56bf01f1df472c33bc9b831fea74bbb6b65eba03e70df30292989f700f56ceafc683e07b6252
|
7
|
+
data.tar.gz: ceece896924cd926fd69aa2943060d421374728688e85a91a250786ce7b4939171dd8008c4d67621c0e657af3d778574e753a7b071c99fdb853ff7a543127211
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
@@ -1,3 +1,20 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
3
|
gemspec
|
4
|
+
|
5
|
+
gem "rdoc", "~> 3.12"
|
6
|
+
gem "rake", "~> 10.0"
|
7
|
+
gem "minitest"
|
8
|
+
gem "minitest-reporters"
|
9
|
+
gem "guard-minitest"
|
10
|
+
gem "simplecov"
|
11
|
+
|
12
|
+
if RbConfig::CONFIG['host_os'] =~ /^darwin/
|
13
|
+
gem "rb-fsevent"
|
14
|
+
gem "growl"
|
15
|
+
end
|
16
|
+
|
17
|
+
if File.exists?('Gemfile.local')
|
18
|
+
instance_eval File.read('Gemfile.local')
|
19
|
+
end
|
20
|
+
|
data/Guardfile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
|
2
|
+
guard 'minitest', :test_folders => 'test', :test_file_patterns => '*_tests.rb' do
|
3
|
+
watch(%r|^test/(.+)_tests\.rb|)
|
4
|
+
|
5
|
+
watch(%r|^lib/(.+)\.rb$|) do |m|
|
6
|
+
"test/#{m[1]}_tests.rb"
|
7
|
+
end
|
8
|
+
|
9
|
+
watch(%r|^test/test_helper\.rb|) do
|
10
|
+
"test"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
if File.exists?('Guardfile.local')
|
15
|
+
instance_eval File.read('Guardfile.local')
|
16
|
+
end
|
17
|
+
|
data/MIT-LICENSE
CHANGED
data/README.rdoc
CHANGED
@@ -38,6 +38,10 @@ rake task thusly:
|
|
38
38
|
|
39
39
|
rake browscapper:dump IN=browscap.ini OUT=browscap.dump
|
40
40
|
|
41
|
+
You can also convert between formats using the `browscapper:convert` task:
|
42
|
+
|
43
|
+
rake browscapper:convert IN=browscap.dump OUT=browscap.yml
|
44
|
+
|
41
45
|
== License
|
42
46
|
|
43
47
|
See the MIT-LICENSE file for details.
|
data/Rakefile
CHANGED
@@ -1,23 +1,16 @@
|
|
1
1
|
# -*- ruby -*-
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
|
-
|
5
|
-
gem 'rdoc', '~> 3.12'
|
6
|
-
|
7
4
|
require 'rubygems/package_task'
|
8
5
|
require 'rake/testtask'
|
9
6
|
require 'rdoc/task'
|
10
7
|
require 'bundler/gem_tasks'
|
11
8
|
|
12
|
-
|
13
|
-
begin
|
14
|
-
gem 'psych'
|
15
|
-
rescue Exception => e
|
16
|
-
# it's okay, fall back on the bundled psych
|
17
|
-
end
|
18
|
-
end
|
9
|
+
$:.push File.expand_path(File.dirname(__FILE__), 'lib')
|
19
10
|
|
20
|
-
|
11
|
+
FileList['lib/tasks/*.rake'].each do |task|
|
12
|
+
import task
|
13
|
+
end
|
21
14
|
|
22
15
|
version = Browscapper::VERSION
|
23
16
|
|
@@ -36,20 +29,3 @@ Rake::RDocTask.new do |t|
|
|
36
29
|
t.rdoc_files.include('README.rdoc', 'MIT-LICENSE', 'lib/**/*.rb')
|
37
30
|
end
|
38
31
|
|
39
|
-
desc "Converts a browscap file to another format"
|
40
|
-
task "browscapper:dump" do
|
41
|
-
require File.join(File.dirname(__FILE__), %w{ lib browscapper })
|
42
|
-
|
43
|
-
if !ENV['IN'] || !ENV['OUT']
|
44
|
-
puts "Usage: IN=browscap OUT=browscap.dump"
|
45
|
-
puts
|
46
|
-
puts "Converts a browscap file to a ruby Marshal'd format. These files"
|
47
|
-
puts "are much quicker to load than CSV or INI files."
|
48
|
-
exit
|
49
|
-
end
|
50
|
-
|
51
|
-
Browscapper.load(ENV['IN'])
|
52
|
-
File.open(ENV['OUT'], 'wb') do |fp|
|
53
|
-
fp.write(Marshal.dump(Browscapper.entries))
|
54
|
-
end
|
55
|
-
end
|
data/browscapper.gemspec
CHANGED
@@ -11,6 +11,7 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.description = "A browscap file parser and matcher."
|
12
12
|
s.summary = s.description
|
13
13
|
s.email = "dark.panda@gmail.com"
|
14
|
+
s.license = "MIT"
|
14
15
|
s.extra_rdoc_files = [
|
15
16
|
"README.rdoc"
|
16
17
|
]
|
@@ -20,9 +21,6 @@ Gem::Specification.new do |s|
|
|
20
21
|
s.homepage = "http://github.com/dark-panda/browscapper"
|
21
22
|
s.require_paths = ["lib"]
|
22
23
|
|
23
|
-
s.add_dependency("rdoc")
|
24
|
-
s.add_dependency("rake", ["~> 0.9"])
|
25
|
-
s.add_dependency("minitest")
|
26
24
|
s.add_dependency("inifile")
|
27
25
|
end
|
28
26
|
|
data/lib/browscapper.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# encoding: BINARY
|
2
2
|
|
3
|
+
require 'browscapper/version'
|
4
|
+
|
3
5
|
module Browscapper
|
4
6
|
autoload :UserAgent, 'browscapper/user_agent'
|
5
7
|
autoload :Reader, 'browscapper/reader'
|
@@ -30,6 +32,7 @@ module Browscapper
|
|
30
32
|
|
31
33
|
@file = file
|
32
34
|
@entries = reader.load(file)
|
35
|
+
clear_cache
|
33
36
|
self
|
34
37
|
end
|
35
38
|
|
data/lib/browscapper/reader.rb
CHANGED
@@ -10,9 +10,9 @@ module Browscapper
|
|
10
10
|
end
|
11
11
|
|
12
12
|
pattern.downcase!
|
13
|
-
pattern.gsub!(/([\^\$\(\)\[\]
|
13
|
+
pattern.gsub!(/([\^\$\(\)\[\]\.\-\+])/, "\\\\\\1")
|
14
14
|
pattern.gsub!('?', '.')
|
15
|
-
pattern.gsub!(
|
15
|
+
pattern.gsub!(/\*+/, '.*?')
|
16
16
|
|
17
17
|
Regexp.new("^#{pattern}$")
|
18
18
|
end
|
@@ -8,7 +8,7 @@ module Browscapper
|
|
8
8
|
:parent, :user_agent, :comment, :browser, :version, :major_version,
|
9
9
|
:minor_version, :platform, :platform_version, :alpha, :beta, :win16, :win32, :win64,
|
10
10
|
:frames, :iframes, :tables, :cookies, :background_sounds, :vbscript,
|
11
|
-
:javascript, :java_applets, :activex_controls, :banned, :mobile_device,
|
11
|
+
:javascript, :java_applets, :activex_controls, :banned, :mobile_device, :tablet,
|
12
12
|
:syndication_reader, :crawler, :css_version, :aol_version, :user_agent_id,
|
13
13
|
:css, :cdf, :aol, :device_name, :device_maker, :rendering_engine_name,
|
14
14
|
:rendering_engine_version, :rendering_engine_description
|
@@ -23,6 +23,7 @@ module Browscapper
|
|
23
23
|
attr_accessor :pattern
|
24
24
|
|
25
25
|
MAP = {
|
26
|
+
'propertyname' => :property_name,
|
26
27
|
'useragent' => :user_agent,
|
27
28
|
'version' => :version,
|
28
29
|
'majorver' => :major_version,
|
@@ -43,7 +44,8 @@ module Browscapper
|
|
43
44
|
'supportscss' => :css,
|
44
45
|
'renderingengine_name' => :rendering_engine_name,
|
45
46
|
'renderingengine_version' => :rendering_engine_version,
|
46
|
-
'renderingengine_description' => :rendering_engine_description
|
47
|
+
'renderingengine_description' => :rendering_engine_description,
|
48
|
+
'istablet' => :tablet
|
47
49
|
}
|
48
50
|
|
49
51
|
def initialize(hash = {})
|
data/lib/browscapper/version.rb
CHANGED
data/lib/tasks/dump.rake
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
|
2
|
+
desc "Converts a browscap file to the Marshal format"
|
3
|
+
task "browscapper:dump" do
|
4
|
+
require 'browscapper'
|
5
|
+
|
6
|
+
if !ENV['IN'] || !ENV['OUT']
|
7
|
+
puts "Usage: IN=browscap OUT=browscap.dump"
|
8
|
+
puts
|
9
|
+
puts "Converts a browscap file to a ruby Marshal'd format. These files"
|
10
|
+
puts "are much quicker to load than CSV or INI files."
|
11
|
+
exit
|
12
|
+
end
|
13
|
+
|
14
|
+
Browscapper.load(ENV['IN'])
|
15
|
+
File.open(ENV['OUT'], 'wb') do |fp|
|
16
|
+
fp.write(Marshal.dump(Browscapper.entries))
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
desc "Converts a browscap file to another format"
|
21
|
+
task "browscapper:convert" do
|
22
|
+
require 'browscapper'
|
23
|
+
|
24
|
+
if !ENV['IN'] || !ENV['OUT']
|
25
|
+
puts "Usage: IN=browscap OUT=output.ext"
|
26
|
+
puts
|
27
|
+
puts "Converts a browscap file to another format. The output format"
|
28
|
+
puts "is based on the output extension, which can be one of yml, yaml,"
|
29
|
+
puts "csv, ini or dump. The \"dump\" extension uses the Marshal format."
|
30
|
+
exit
|
31
|
+
end
|
32
|
+
|
33
|
+
Browscapper.load(ENV['IN'])
|
34
|
+
|
35
|
+
case ENV['OUT']
|
36
|
+
when /\.dump$/i
|
37
|
+
File.open(ENV['OUT'], 'wb:BINARY') do |fp|
|
38
|
+
fp.write(Marshal.dump(Browscapper.entries))
|
39
|
+
end
|
40
|
+
|
41
|
+
when /\.ya?ml$/i
|
42
|
+
File.open(ENV['OUT'], 'wb:BINARY') do |fp|
|
43
|
+
fp.write(YAML.dump(Browscaper.entries))
|
44
|
+
end
|
45
|
+
|
46
|
+
when /\.csv$/i
|
47
|
+
Browscapper.load(ENV['IN'])
|
48
|
+
Browscapper::CSVReader::CSV_ENGINE.open(ENV['OUT'], 'wb:BINARY') do |csv|
|
49
|
+
keys = Browscapper.entries['DefaultProperties'].to_hash.keys
|
50
|
+
csv << keys
|
51
|
+
Browscapper.entries.each do |k, v|
|
52
|
+
hash = v.to_hash
|
53
|
+
|
54
|
+
csv << keys.collect { |kk|
|
55
|
+
hash[kk]
|
56
|
+
}
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
|
2
|
+
# encoding: BINARY
|
3
|
+
|
4
|
+
$: << File.dirname(__FILE__)
|
5
|
+
require 'test_helper'
|
6
|
+
require 'benchmark'
|
7
|
+
|
8
|
+
class Browscapper::ReaderTests < MiniTest::Unit::TestCase
|
9
|
+
include Browscapper::Reader
|
10
|
+
|
11
|
+
def test_pattern_to_regexp
|
12
|
+
assert_equal(
|
13
|
+
/^mozilla\/5\.0 \(foo.*?\) \+http:\/\/example\.com chrome.*?\/..$/,
|
14
|
+
pattern_to_regexp("Mozilla/5.0 (Foo*) +http://example.com Chrome*/??")
|
15
|
+
)
|
16
|
+
end
|
17
|
+
|
18
|
+
if ENV['BENCH']
|
19
|
+
def test_csv
|
20
|
+
Benchmark.bmbm do |bmbm|
|
21
|
+
bmbm.report('csv') do
|
22
|
+
Browscapper.load('vendor/browscap.csv')
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_yaml
|
28
|
+
Benchmark.bmbm do |bmbm|
|
29
|
+
bmbm.report('yaml') do
|
30
|
+
Browscapper.load('vendor/browscap.yml')
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_ini
|
36
|
+
Benchmark.bmbm do |bmbm|
|
37
|
+
bmbm.report('ini') do
|
38
|
+
Browscapper.load('vendor/browscap.ini')
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_marshal
|
44
|
+
Benchmark.bmbm do |bmbm|
|
45
|
+
bmbm.report('marshal') do
|
46
|
+
Browscapper.load('vendor/browscap.dump')
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
data/test/browscapper_tests.rb
CHANGED
@@ -1,10 +1,7 @@
|
|
1
1
|
# encoding: BINARY
|
2
2
|
|
3
|
-
$: <<
|
4
|
-
|
5
|
-
require 'rubygems'
|
6
|
-
require 'minitest/autorun'
|
7
|
-
require './lib/browscapper'
|
3
|
+
$: << File.dirname(__FILE__)
|
4
|
+
require 'test_helper'
|
8
5
|
|
9
6
|
class BrowscapperTest < MiniTest::Unit::TestCase
|
10
7
|
FIREFOX_ON_OSX = Browscapper::UserAgent.new({
|
@@ -18,8 +15,8 @@ class BrowscapperTest < MiniTest::Unit::TestCase
|
|
18
15
|
:cookies => true,
|
19
16
|
:crawler => false,
|
20
17
|
:css_version => 3,
|
21
|
-
:device_name => "
|
22
|
-
:device_maker => "
|
18
|
+
:device_name => "Macintosh",
|
19
|
+
:device_maker => "Apple Inc",
|
23
20
|
:frames => true,
|
24
21
|
:iframes => true,
|
25
22
|
:java_applets => true,
|
@@ -29,16 +26,17 @@ class BrowscapperTest < MiniTest::Unit::TestCase
|
|
29
26
|
:mobile_device => false,
|
30
27
|
:parent => "Firefox 3.6",
|
31
28
|
:platform => "MacOSX",
|
32
|
-
:platform_version =>
|
29
|
+
:platform_version => 10.6,
|
33
30
|
:rendering_engine_name => "Gecko",
|
34
|
-
:rendering_engine_version => "
|
31
|
+
:rendering_engine_version => "1.9.2",
|
35
32
|
:rendering_engine_description => "For Firefox, Camino, K-Meleon, SeaMonkey, Netscape, and other Gecko-based browsers.",
|
36
33
|
:syndication_reader => false,
|
37
34
|
:tables => true,
|
38
|
-
:
|
35
|
+
:tablet => false,
|
36
|
+
:user_agent => "Mozilla/5.0 (*Mac OS X 10.6*) Gecko/* Firefox/3.6*",
|
39
37
|
:user_agent_id => nil,
|
40
38
|
:vbscript => false,
|
41
|
-
:version =>
|
39
|
+
:version => 3.6,
|
42
40
|
:win16 => false,
|
43
41
|
:win32 => false,
|
44
42
|
:win64 => false,
|
@@ -47,7 +45,7 @@ class BrowscapperTest < MiniTest::Unit::TestCase
|
|
47
45
|
FIREFOX_ON_OSX.pattern = /^mozilla\/5\.0 \(macintosh; .*; .*mac os x.*; .*; rv:1\.9\.2.*\) gecko\/.* firefox\/3\.6.*$/
|
48
46
|
|
49
47
|
def test_browscap_ini
|
50
|
-
Browscapper.load(File.join('vendor', 'browscap.
|
48
|
+
Browscapper.load(File.join('vendor', 'browscap.ini'))
|
51
49
|
match = Browscapper.match('Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8')
|
52
50
|
|
53
51
|
FIREFOX_ON_OSX.each do |k, v|
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
|
2
|
+
# encoding: BINARY
|
3
|
+
|
4
|
+
if RUBY_VERSION >= '1.9'
|
5
|
+
require 'simplecov'
|
6
|
+
|
7
|
+
SimpleCov.command_name('Unit Tests')
|
8
|
+
SimpleCov.start do
|
9
|
+
add_filter '/test/'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
require 'rubygems'
|
14
|
+
require 'minitest/autorun'
|
15
|
+
|
16
|
+
if RUBY_VERSION >= '1.9'
|
17
|
+
require 'minitest/reporters'
|
18
|
+
end
|
19
|
+
|
20
|
+
require File.join(File.dirname(__FILE__), *%w{ .. lib browscapper })
|
21
|
+
|
22
|
+
if RUBY_VERSION >= '1.9'
|
23
|
+
MiniTest::Reporters.use!(MiniTest::Reporters::SpecReporter.new)
|
24
|
+
end
|
25
|
+
|
26
|
+
|
data/vendor/browscap.ini
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
;;; Provided courtesy of http://browscap.org/
|
2
|
+
;;; Created on Wednesday, November 19, 2014 at 09:12 PM UTC
|
3
|
+
;;; Keep up with the latest goings-on with the project:
|
4
|
+
;;; Follow us on Twitter <https://twitter.com/browscap>, or...
|
5
|
+
;;; Like us on Facebook <https://facebook.com/browscap>, or...
|
6
|
+
;;; Collaborate on GitHub <https://github.com/browscap>, or...
|
7
|
+
;;; Discuss on Google Groups <https://groups.google.com/forum/#!forum/browscap>.
|
8
|
+
|
9
|
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Browscap Version
|
10
|
+
|
11
|
+
[GJK_Browscap_Version]
|
12
|
+
Version=5036
|
13
|
+
Released=Wed, 19 Nov 2014 21:12:38 +0000
|
14
|
+
Format=php
|
15
|
+
Type=FULL
|
16
|
+
|
17
|
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DefaultProperties
|
18
|
+
|
19
|
+
[DefaultProperties]
|
20
|
+
Comment="DefaultProperties"
|
21
|
+
Browser="DefaultProperties"
|
22
|
+
Browser_Type=unknown
|
23
|
+
Browser_Bits=0
|
24
|
+
Browser_Maker="unknown"
|
25
|
+
Browser_Modus="unknown"
|
26
|
+
Version=0.0
|
27
|
+
MajorVer=0
|
28
|
+
MinorVer=0
|
29
|
+
Platform="unknown"
|
30
|
+
Platform_Version=unknown
|
31
|
+
Platform_Description="unknown"
|
32
|
+
Platform_Bits=0
|
33
|
+
Platform_Maker="unknown"
|
34
|
+
Alpha=false
|
35
|
+
Beta=false
|
36
|
+
Win16=false
|
37
|
+
Win32=false
|
38
|
+
Win64=false
|
39
|
+
Frames=false
|
40
|
+
IFrames=false
|
41
|
+
Tables=false
|
42
|
+
Cookies=false
|
43
|
+
BackgroundSounds=false
|
44
|
+
JavaScript=false
|
45
|
+
VBScript=false
|
46
|
+
JavaApplets=false
|
47
|
+
ActiveXControls=false
|
48
|
+
isMobileDevice=false
|
49
|
+
isTablet=false
|
50
|
+
isSyndicationReader=false
|
51
|
+
Crawler=false
|
52
|
+
CssVersion=0
|
53
|
+
AolVersion=0
|
54
|
+
Device_Name="unknown"
|
55
|
+
Device_Maker="unknown"
|
56
|
+
Device_Type=unknown
|
57
|
+
Device_Pointing_Method=unknown
|
58
|
+
Device_Code_Name="unknown"
|
59
|
+
Device_Brand_Name="unknown"
|
60
|
+
RenderingEngine_Name="unknown"
|
61
|
+
RenderingEngine_Version=unknown
|
62
|
+
RenderingEngine_Description="unknown"
|
63
|
+
RenderingEngine_Maker="unknown"
|
64
|
+
|
65
|
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 3.6
|
66
|
+
|
67
|
+
[Firefox 3.6]
|
68
|
+
Parent="DefaultProperties"
|
69
|
+
Comment="Firefox 3.6"
|
70
|
+
Browser="Firefox"
|
71
|
+
Browser_Type=Browser
|
72
|
+
Browser_Maker="Mozilla Foundation"
|
73
|
+
Version=3.6
|
74
|
+
MajorVer=3
|
75
|
+
MinorVer=6
|
76
|
+
Win32=true
|
77
|
+
Frames=true
|
78
|
+
IFrames=true
|
79
|
+
Tables=true
|
80
|
+
Cookies=true
|
81
|
+
JavaScript=true
|
82
|
+
JavaApplets=true
|
83
|
+
CssVersion=3
|
84
|
+
Device_Name="PC"
|
85
|
+
Device_Maker="Various"
|
86
|
+
Device_Type=Desktop
|
87
|
+
Device_Pointing_Method=mouse
|
88
|
+
RenderingEngine_Name="Gecko"
|
89
|
+
RenderingEngine_Version=1.9.2
|
90
|
+
RenderingEngine_Description="For Firefox, Camino, K-Meleon, SeaMonkey, Netscape, and other Gecko-based browsers."
|
91
|
+
RenderingEngine_Maker="Mozilla Foundation"
|
92
|
+
|
93
|
+
[Mozilla/5.0 (*Mac OS X 10.6*) Gecko/* Firefox/3.6*]
|
94
|
+
Parent="Firefox 3.6"
|
95
|
+
Browser_Bits=32
|
96
|
+
Platform="MacOSX"
|
97
|
+
Platform_Version=10.6
|
98
|
+
Platform_Description="Mac OS X"
|
99
|
+
Platform_Bits=32
|
100
|
+
Platform_Maker="Apple Inc"
|
101
|
+
Win32=false
|
102
|
+
Device_Name="Macintosh"
|
103
|
+
Device_Maker="Apple Inc"
|
104
|
+
Device_Code_Name="Macintosh"
|
105
|
+
Device_Brand_Name="Apple"
|
106
|
+
|
metadata
CHANGED
@@ -1,79 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: browscapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
MC4wLjE=
|
6
|
-
prerelease:
|
4
|
+
version: 0.1.0
|
7
5
|
platform: ruby
|
8
6
|
authors:
|
9
7
|
- J Smith
|
10
8
|
autorequire:
|
11
9
|
bindir: bin
|
12
10
|
cert_chain: []
|
13
|
-
date:
|
11
|
+
date: 2014-12-02 00:00:00.000000000 Z
|
14
12
|
dependencies:
|
15
|
-
- !ruby/object:Gem::Dependency
|
16
|
-
name: rdoc
|
17
|
-
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
|
-
requirements:
|
20
|
-
- - ! '>='
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: '0'
|
23
|
-
type: :runtime
|
24
|
-
prerelease: false
|
25
|
-
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
|
-
requirements:
|
28
|
-
- - ! '>='
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
version: '0'
|
31
|
-
- !ruby/object:Gem::Dependency
|
32
|
-
name: rake
|
33
|
-
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
|
-
requirements:
|
36
|
-
- - ~>
|
37
|
-
- !ruby/object:Gem::Version
|
38
|
-
version: '0.9'
|
39
|
-
type: :runtime
|
40
|
-
prerelease: false
|
41
|
-
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
|
-
requirements:
|
44
|
-
- - ~>
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: '0.9'
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: minitest
|
49
|
-
requirement: !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
|
-
requirements:
|
52
|
-
- - ! '>='
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
type: :runtime
|
56
|
-
prerelease: false
|
57
|
-
version_requirements: !ruby/object:Gem::Requirement
|
58
|
-
none: false
|
59
|
-
requirements:
|
60
|
-
- - ! '>='
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: '0'
|
63
13
|
- !ruby/object:Gem::Dependency
|
64
14
|
name: inifile
|
65
15
|
requirement: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
16
|
requirements:
|
68
|
-
- -
|
17
|
+
- - ">="
|
69
18
|
- !ruby/object:Gem::Version
|
70
19
|
version: '0'
|
71
20
|
type: :runtime
|
72
21
|
prerelease: false
|
73
22
|
version_requirements: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
23
|
requirements:
|
76
|
-
- -
|
24
|
+
- - ">="
|
77
25
|
- !ruby/object:Gem::Version
|
78
26
|
version: '0'
|
79
27
|
description: A browscap file parser and matcher.
|
@@ -83,8 +31,9 @@ extensions: []
|
|
83
31
|
extra_rdoc_files:
|
84
32
|
- README.rdoc
|
85
33
|
files:
|
86
|
-
- .gitignore
|
34
|
+
- ".gitignore"
|
87
35
|
- Gemfile
|
36
|
+
- Guardfile
|
88
37
|
- MIT-LICENSE
|
89
38
|
- README.rdoc
|
90
39
|
- Rakefile
|
@@ -97,32 +46,36 @@ files:
|
|
97
46
|
- lib/browscapper/reader/yaml_reader.rb
|
98
47
|
- lib/browscapper/user_agent.rb
|
99
48
|
- lib/browscapper/version.rb
|
49
|
+
- lib/tasks/dump.rake
|
50
|
+
- test/browscapper/reader_tests.rb
|
100
51
|
- test/browscapper_tests.rb
|
101
|
-
- test/
|
52
|
+
- test/test_helper.rb
|
53
|
+
- vendor/browscap.ini
|
102
54
|
homepage: http://github.com/dark-panda/browscapper
|
103
|
-
licenses:
|
55
|
+
licenses:
|
56
|
+
- MIT
|
57
|
+
metadata: {}
|
104
58
|
post_install_message:
|
105
59
|
rdoc_options: []
|
106
60
|
require_paths:
|
107
61
|
- lib
|
108
62
|
required_ruby_version: !ruby/object:Gem::Requirement
|
109
|
-
none: false
|
110
63
|
requirements:
|
111
|
-
- -
|
64
|
+
- - ">="
|
112
65
|
- !ruby/object:Gem::Version
|
113
66
|
version: '0'
|
114
67
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
|
-
none: false
|
116
68
|
requirements:
|
117
|
-
- -
|
69
|
+
- - ">="
|
118
70
|
- !ruby/object:Gem::Version
|
119
71
|
version: '0'
|
120
72
|
requirements: []
|
121
73
|
rubyforge_project:
|
122
|
-
rubygems_version:
|
74
|
+
rubygems_version: 2.2.2
|
123
75
|
signing_key:
|
124
|
-
specification_version:
|
76
|
+
specification_version: 4
|
125
77
|
summary: A browscap file parser and matcher.
|
126
78
|
test_files:
|
79
|
+
- test/browscapper/reader_tests.rb
|
127
80
|
- test/browscapper_tests.rb
|
128
|
-
- test/
|
81
|
+
- test/test_helper.rb
|
data/test/reader_tests.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
|
2
|
-
# encoding: BINARY
|
3
|
-
|
4
|
-
$: << './lib'
|
5
|
-
|
6
|
-
require 'rubygems'
|
7
|
-
require 'minitest/autorun'
|
8
|
-
require 'minitest/benchmark' if ENV['BENCH']
|
9
|
-
require './lib/browscapper'
|
10
|
-
require 'benchmark'
|
11
|
-
|
12
|
-
class ReaderTests < MiniTest::Unit::TestCase
|
13
|
-
def bench_csv
|
14
|
-
assert_performance_constant do |n|
|
15
|
-
Browscapper.load('vendor/browscap.csv')
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def bench_yaml
|
20
|
-
assert_performance_constant do |n|
|
21
|
-
Browscapper.load('vendor/browscap.yml')
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def bench_ini
|
26
|
-
assert_performance_constant do |n|
|
27
|
-
Browscapper.load('vendor/browscap.ini')
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def bench_marshal
|
32
|
-
assert_performance_constant do |n|
|
33
|
-
Browscapper.load('vendor/browscap.dump')
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|