browserino 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 145fb38f1f0f65b83e1488a3e4b7896133e2baf1
4
- data.tar.gz: fadda252f2067a005172cc15b17232a125895922
3
+ metadata.gz: 62aa83f64ee7982eaf6453f3c254167a65bebd70
4
+ data.tar.gz: 01f75dffa40b326bf0d66c0fef20868e297c7d4e
5
5
  SHA512:
6
- metadata.gz: abe882ef84cb6c9f00e1725be9424a919a4b209104f3d078d9773811cd088d12234246500fa42d1cfa1a1ac01bf34b26af244bda6525df3c2f51f0359de07fba
7
- data.tar.gz: f967593c8af4be8b54ad5824f027ed72edc9acafd22c0983453696a492f1ca774f528b75b70f9ff7a0fa74079b56d0c8f4a34b85348e6f99bf9e74741da91ae3
6
+ metadata.gz: a46012b967787e15d71ce2aa61482ed50f756de8e02dfd83aa0b7776c8b0c8846cdce704d1792f6fd7f662ad3ca3572d6744115ee8529304209a3b3d2e51cd64
7
+ data.tar.gz: 29e4edf778b263f13d06e3bfd4facf599746e9f3d457573d3124ef14f6de6e922c5a26846d2e080c2d140235c5b93893fc0adfaac51f594bf7f12aa774c3ff89
@@ -0,0 +1,16 @@
1
+ module Browserino
2
+ module Browser
3
+ def self.name(ua = nil)
4
+ name = nil
5
+ browsers = Browserino::PATTERNS[:browser].keys
6
+ until browsers.empty? || !name.nil?
7
+ subject = browsers.shift
8
+ name = subject if (ua.match(Browserino::PATTERNS[:browser][subject][:name]))
9
+ end
10
+ name ||= :unknown
11
+ end
12
+
13
+ def self.version
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,9 @@
1
+ module Browserino
2
+ module Engine
3
+ def self.name
4
+ end
5
+
6
+ def self.version
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,12 @@
1
+ module Browserino
2
+ module OperatingSystem
3
+ def self.name
4
+ end
5
+
6
+ def self.version
7
+ end
8
+
9
+ def self.architecture
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,53 @@
1
+ # See this as a giant CSS selector.
2
+ # It will iterate through hashes recursively.
3
+ # If the :name is set in e.g. :browser then it will be global for all browsers.
4
+ # However if in :browser there is a hash called :opera with a :name
5
+ # then that will override the global setting.
6
+ # This basically follows the 'Cascading Style Sheet' flow
7
+
8
+ module Browserino
9
+ PATTERNS = {
10
+ browser: {
11
+ opera: {
12
+ name: /(?<name>ope?ra?)/i,
13
+ version: /(ope?ra?|version)(\/|\s)(?<version>[\d\.]+)/i
14
+ },
15
+
16
+ maxthon: {
17
+ name: /(?<name> maxthon)/i,
18
+ version: /maxthon(\s|\/)(?<version> [\d\.]+)/i
19
+ },
20
+
21
+ ie: {
22
+ name: /(?<name> msie|trident)/i,
23
+ version: /(msie\s|rv\:)(?<version> [\d\.b]+)/i
24
+ },
25
+
26
+ firefox: {
27
+ name: /(?<name> (fire|water)(fox|bird)|ice(weasel|cat)|netscape)/i,
28
+ version: /(fire|water)(fox|bird)|ice(weasel|cat)|netscape(?<version> [\d\.]+)/i
29
+ },
30
+
31
+ chrome: {
32
+ name: /(?<name> chrome?(ium|plus)?)/i,
33
+ version: /chrome?(ium|plus)?\/(?<version> [\d\.]+)/i
34
+ },
35
+
36
+ safari: {
37
+ name: /(?<name> safari)/i,
38
+ version: /(version|safari)\/(?<version> [\d\.]+)/i
39
+ }
40
+ },
41
+
42
+ engine: {
43
+ name: /(?<name> ((apple)?webkit|gecko|trident|presto))/i,
44
+ version: /((apple)?webkit|gecko|trident|presto)(?<version> [\d\.]+)/i
45
+ },
46
+
47
+ operating_system: {
48
+ name: /(?<name> windows|macintosh|linux)/i,
49
+ version: /(nt|mac\sos\sx)\s(?<version> [\d\._]+)/i,
50
+ architecture: /(?<architecture> (x?(86_)?64)|i(3|6)86)/i
51
+ }
52
+ }
53
+ end
@@ -1,3 +1,3 @@
1
1
  module Browserino
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/browserino.rb CHANGED
@@ -1,6 +1,18 @@
1
1
  require "browserino/version"
2
- require "browserino/test"
2
+ require "browserino/patterns"
3
+ require "browserino/browser"
4
+ require "browserino/engine"
5
+ require "browserino/operating_system"
3
6
 
4
7
  module Browserino
5
- # Your code goes here...
8
+ def self.parse ua
9
+ ua = self::clean(ua)
10
+ Browser::name(ua)
11
+ end
12
+
13
+ private
14
+
15
+ def self.clean ua
16
+ ua.gsub(/(Mozilla\/[\d\.]+)/, '').strip
17
+ end
6
18
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: browserino
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sidney Liebrand
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-09-12 00:00:00.000000000 Z
11
+ date: 2015-09-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -115,7 +115,10 @@ files:
115
115
  - bin/setup
116
116
  - browserino.gemspec
117
117
  - lib/browserino.rb
118
- - lib/browserino/test.rb
118
+ - lib/browserino/browser.rb
119
+ - lib/browserino/engine.rb
120
+ - lib/browserino/operating_system.rb
121
+ - lib/browserino/patterns.rb
119
122
  - lib/browserino/version.rb
120
123
  homepage: https://github.com/SidOfc/browserino
121
124
  licenses:
@@ -1,11 +0,0 @@
1
- module Browserino
2
-
3
- class Greeter
4
-
5
- def greet name = 'guest'
6
- "Hello, #{name}."
7
- end
8
-
9
- end
10
-
11
- end