Class: Aua
- Inherits:
-
Object
show all
- Defined in:
- lib/aua.rb,
lib/aua/agents.rb,
lib/aua/version.rb,
lib/aua/operating_systems.rb
Defined Under Namespace
Modules: Agents, OperatingSystems, StackBase
Constant Summary
collapse
- MATCHER =
%r{
^([^\s/]+) # Product
/?([^\s]*) # Version
(\s\(([^\)]*)\))? # Comment
}x.freeze
- MAJOR_VERSION =
/^([\d]+)\.([\d]+[a-z]*)/
- VERSION =
"0.3.2"
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(string = "") ⇒ Aua
Returns a new instance of Aua.
8
9
10
11
|
# File 'lib/aua.rb', line 8
def initialize(string="")
@raw = string.to_s
parse
end
|
Instance Attribute Details
#os_name ⇒ Object
Returns the value of attribute os_name.
29
30
31
|
# File 'lib/aua.rb', line 29
def os_name
@os_name
end
|
#os_version ⇒ Object
Returns the value of attribute os_version.
29
30
31
|
# File 'lib/aua.rb', line 29
def os_version
@os_version
end
|
#parts ⇒ Object
Returns the value of attribute parts.
29
30
31
|
# File 'lib/aua.rb', line 29
def parts
@parts
end
|
Returns the value of attribute platform.
29
30
31
|
# File 'lib/aua.rb', line 29
def platform
@platform
end
|
#raw ⇒ Object
Returns the value of attribute raw.
29
30
31
|
# File 'lib/aua.rb', line 29
def raw
@raw
end
|
#version ⇒ Object
Returns the value of attribute version.
29
30
31
|
# File 'lib/aua.rb', line 29
def version
@version
end
|
Class Method Details
.parse(raw) ⇒ Object
13
14
15
|
# File 'lib/aua.rb', line 13
def self.parse(raw)
new(raw)
end
|
Instance Method Details
#app ⇒ Object
66
67
68
|
# File 'lib/aua.rb', line 66
def app
products[0]
end
|
74
75
76
|
# File 'lib/aua.rb', line 74
def
@app_comments ||= (.first || []) + [""]*5
end
|
78
79
80
|
# File 'lib/aua.rb', line 78
def
@app_comments_string ||= (.first || []).join(";")
end
|
70
71
72
|
# File 'lib/aua.rb', line 70
def
@comments ||= parts.map{|p| p[2] }
end
|
82
83
84
|
# File 'lib/aua.rb', line 82
def
@comments_string ||= .flatten.join(";")
end
|
#major_version ⇒ Object
50
51
52
|
# File 'lib/aua.rb', line 50
def major_version
@major_version ||= (version || "") =~ MAJOR_VERSION ? "#{$1}.#{$2}" : version
end
|
#name ⇒ Object
31
32
33
34
35
36
37
38
|
# File 'lib/aua.rb', line 31
def name
@name unless unknown?
if simple?
app
else
raw
end
end
|
#os_major_version ⇒ Object
54
55
56
|
# File 'lib/aua.rb', line 54
def os_major_version
@os_major_version ||= (os_version || "") =~ MAJOR_VERSION ? "#{$1}.#{$2}" : os_version
end
|
#os_string ⇒ Object
95
96
97
|
# File 'lib/aua.rb', line 95
def os_string
@os_string ||= .first && .first[2]
end
|
#parse ⇒ Object
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/aua.rb', line 17
def parse
string = @raw.dup
@parts = []
while m = string.match(MATCHER)
@parts << [m[1] ? m[1].sub(/;$/,"") : m[1], m[2], m[4] ? m[4].split(/\s?;\s?/) : []]
string = string.sub(m[0], '').strip
end
Aua::Agents.extend_agent(self)
Aua::OperatingSystems.extend_agent(self)
end
|
91
92
93
|
# File 'lib/aua.rb', line 91
def platform_string
@platform_string ||= .first && .first.first
end
|
#products ⇒ Object
58
59
60
|
# File 'lib/aua.rb', line 58
def products
@products ||= parts.map{|p| p[0] }
end
|
#simple? ⇒ Boolean
103
104
105
|
# File 'lib/aua.rb', line 103
def simple?
products.size == 1 && versions.size <= 1 && == [[]]
end
|
#to_s ⇒ Object
107
108
109
110
|
# File 'lib/aua.rb', line 107
def to_s
return "Unknown: #{raw}#{" (simple)" if simple?}" if unknown?
"#{type} #{name}/#{version} #{os_name}/#{os_version} #{platform}"
end
|
#type ⇒ Object
40
41
42
|
# File 'lib/aua.rb', line 40
def type
@type || :Unknown
end
|
#unknown? ⇒ Boolean
99
100
101
|
# File 'lib/aua.rb', line 99
def unknown?
type == :Unknown
end
|
#version_of(product) ⇒ Object
86
87
88
89
|
# File 'lib/aua.rb', line 86
def version_of(product)
i = products.index(product.to_s)
versions[i] if i && versions[i] != ""
end
|
#versions ⇒ Object
62
63
64
|
# File 'lib/aua.rb', line 62
def versions
@versions ||= parts.map{|p| p[1] != "" ? p[1] : nil }
end
|