Module: Browscapper
- Defined in:
- lib/browscapper.rb,
lib/browscapper/reader.rb,
lib/browscapper/version.rb,
lib/browscapper/user_agent.rb,
lib/browscapper/reader/csv_reader.rb,
lib/browscapper/reader/ini_reader.rb,
lib/browscapper/reader/yaml_reader.rb,
lib/browscapper/reader/marshal_reader.rb
Defined Under Namespace
Modules: CSVReader, INIReader, MarshalReader, Reader, YAMLReader
Classes: Error, NotLoadedError, UserAgent
Constant Summary
collapse
- MATCH_CACHE =
Hash.new
- VERSION =
"0.3.0"
Class Attribute Summary collapse
Class Method Summary
collapse
Class Attribute Details
.entries ⇒ Object
Returns the value of attribute entries.
23
24
25
|
# File 'lib/browscapper.rb', line 23
def entries
@entries
end
|
.file ⇒ Object
Returns the value of attribute file.
23
24
25
|
# File 'lib/browscapper.rb', line 23
def file
@file
end
|
Class Method Details
97
98
99
100
101
102
103
|
# File 'lib/browscapper.rb', line 97
def browscap_format
raise Browscapper::NotLoadedError.new if entries.nil?
if entries[:browscap_version] && entries[:browscap_version][:format]
entries[:browscap_version][:format]
end
end
|
.browscap_released ⇒ Object
89
90
91
92
93
94
95
|
# File 'lib/browscapper.rb', line 89
def browscap_released
raise Browscapper::NotLoadedError.new if entries.nil?
if entries[:browscap_version] && entries[:browscap_version][:released]
Date.parse(entries[:browscap_version][:released])
end
end
|
.browscap_type ⇒ Object
105
106
107
108
109
110
111
|
# File 'lib/browscapper.rb', line 105
def browscap_type
raise Browscapper::NotLoadedError.new if entries.nil?
if entries[:browscap_version] && entries[:browscap_version][:type]
entries[:browscap_version][:type]
end
end
|
.browscap_version ⇒ Object
81
82
83
84
85
86
87
|
# File 'lib/browscapper.rb', line 81
def browscap_version
raise Browscapper::NotLoadedError.new if entries.nil?
if entries[:browscap_version] && entries[:browscap_version][:version]
entries[:browscap_version][:version]
end
end
|
.clear_cache ⇒ Object
48
49
50
|
# File 'lib/browscapper.rb', line 48
def clear_cache
MATCH_CACHE.clear
end
|
.load(file = File.join(%w{ . browscap.ini })) ⇒ Object
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# File 'lib/browscapper.rb', line 26
def load(file = File.join(%w{ . browscap.ini }))
if !File.exists?(file)
raise ArgumentError.new("File #{file} not found.")
end
reader = case file.downcase
when /\.csv$/
CSVReader
when /\.ya?ml$/
YAMLReader
when /\.ini$/
INIReader
else
MarshalReader
end
@file = file
@entries = reader.load(file)
clear_cache
self
end
|
.match(ua) ⇒ Object
Also known as:
query
69
70
71
72
73
74
75
76
77
78
|
# File 'lib/browscapper.rb', line 69
def match(ua)
return nil if ua_empty?(ua)
if MATCH_CACHE[ua] && !MATCH_CACHE[ua].empty?
MATCH_CACHE[ua].first
else
m = self.matches(ua)
m.first if !m.empty?
end
end
|
.matches(ua) ⇒ Object
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
# File 'lib/browscapper.rb', line 52
def matches(ua)
return nil if ua_empty?(ua)
@entries or self.load
ua_str = ua.to_s.downcase
ua_len = ua_str.length
MATCH_CACHE[ua] ||= @entries.select { |k, v|
v[:pattern] =~ ua_str if v && v[:pattern]
}.sort_by { |(k, v)|
ua_len - v[:user_agent].gsub(/[?*]/, '').length
}.collect { |(k, v)|
v
}
end
|