browserino 0.1.0 → 0.2.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 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