can_i_use 0.0.3 → 0.0.4

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: 07572e0f9cabdff4c5a6586efd6ccc8d8d597e8b
4
- data.tar.gz: 51075b22ed50071f15d93e4053035bc162976989
3
+ metadata.gz: 0f6ffc19e85a11069fef862c4b7725c4623c07ec
4
+ data.tar.gz: 5200b4644f2cb7bbf5fd2e98d021605f8e070414
5
5
  SHA512:
6
- metadata.gz: a1eaeda3864c3c547ed332c27fd39dc0b9930a1e63b2804f06efce2f77fdde2f31ecca6b2086dca502e17b1ceb7bdbc4b1aec64e84afce8400a5e5aec51500ee
7
- data.tar.gz: ca3fe459c664bfc5059cfc0fe6d56a2dc3268d1cd181dea35505dbb556745bcac1368f7c2a31fda091e2f5e47f9db4da61f52a7da0cff2c65d06d87a9dd16dce
6
+ metadata.gz: 3ddaad6300c2b8e68529810ea4ccaa076ad041803c60cbba1496a5d306c38200d3f8af044ed9eb1679097e7d579c41a4cf1b5da21e73ea5babd12b00cfd971a6
7
+ data.tar.gz: ecf44f7687c861b367becde1c22f4373473354c4de5bae40c0db9e69739a2cc2ab52fb162616981b35701b7630ed8d25b5c0d3b0fbe7c644827cf2c941efd4d2
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- can_i_use (0.0.3)
4
+ can_i_use (0.0.4)
5
5
  user_agent_parser
6
6
 
7
7
  GEM
@@ -1,4 +1,4 @@
1
- require "can_i_use/version"
1
+ require 'can_i_use/version'
2
2
 
3
3
  require 'can_i_use/browser'
4
4
  require 'can_i_use/browser_version'
@@ -6,19 +6,17 @@ require 'can_i_use/feature'
6
6
  require 'can_i_use/user_agent'
7
7
 
8
8
  class CanIUse
9
-
10
9
  CANIUSE_DATA = JSON.parse(
11
10
  File.read(
12
11
  File.join(
13
- [ File.dirname(__FILE__), '..', 'vendor/caniuse/data.json' ]
12
+ [File.dirname(__FILE__), '..', 'vendor/caniuse/data.json']
14
13
  )
15
14
  )
16
15
  )
17
16
 
18
17
  # =====================================================================
19
-
18
+
20
19
  def self.updated_at
21
20
  Time.at(CANIUSE_DATA['updated'].to_i).utc
22
21
  end
23
-
24
22
  end
@@ -2,48 +2,46 @@ require_relative 'version'
2
2
 
3
3
  class CanIUse
4
4
  class Browser
5
-
6
5
  attr_accessor :name
7
6
  attr_accessor :versions_hash
8
7
 
9
8
  # =====================================================================
10
-
11
- def initialize name, versions_hash
9
+
10
+ def initialize(name, versions_hash)
12
11
  @name = name
13
12
  @versions_hash = versions_hash
14
13
  end
15
14
 
16
15
  # ---------------------------------------------------------------------
17
-
16
+
18
17
  def versions
19
- @versions_hash.select{ |k, v| k =~ /[\d\.]/ }.inject([]) do |res, h|
18
+ @versions_hash.select { |k, _v| k =~ /[\d\.]/ }.inject([]) do |res, h|
20
19
  res << BrowserVersion.new(*h)
21
20
  end
22
21
  end
23
22
 
24
- def version version_number
25
- versions.detect{ |v| v.to_s == version_number }
23
+ def version(version_number)
24
+ versions.detect { |v| v.to_s == version_number }
26
25
  end
27
26
 
28
- def supported_from_version support_type=:yes
29
- versions.detect{ |v| v.support_type == support_type }
27
+ def supported_from_version(support_type = :yes)
28
+ versions.detect { |v| v.support_type == support_type }
30
29
  end
31
30
 
32
31
  # ---------------------------------------------------------------------
33
-
34
- def is? str
32
+
33
+ def is?(str)
35
34
  !!case name
36
- when 'ios_saf' then str =~ /mobile/i && str =~ /safari/i
37
- when 'op_mini' then str =~ /opera/i && str =~ /mini/i
38
- when 'bb' then str =~ /BlackBerry/i
39
- when 'op_mob' then str =~ /Opera/i && str =~ /Mobi/i
40
- when 'and_chr' then str =~ /Android/i && str =~ /Chrome/i
41
- when 'and_ff' then str =~ /Android/i && str =~ /Firefox/i
42
- when 'ie_mob' then str =~ /IE/i && str =~ /Mobile/i
43
- when 'and_uc' then str =~ /(Android)?UC\s?(Browser)?/i
44
- else str =~ /#{name}/i
35
+ when 'ios_saf' then str =~ /mobile/i && str =~ /safari/i
36
+ when 'op_mini' then str =~ /opera/i && str =~ /mini/i
37
+ when 'bb' then str =~ /BlackBerry/i
38
+ when 'op_mob' then str =~ /Opera/i && str =~ /Mobi/i
39
+ when 'and_chr' then str =~ /Android/i && str =~ /Chrome/i
40
+ when 'and_ff' then str =~ /Android/i && str =~ /Firefox/i
41
+ when 'ie_mob' then str =~ /IE/i && str =~ /Mobile/i
42
+ when 'and_uc' then str =~ /(Android)?UC\s?(Browser)?/i
43
+ else str =~ /#{name}/i
45
44
  end
46
45
  end
47
-
48
46
  end
49
- end
47
+ end
@@ -1,50 +1,49 @@
1
1
  class CanIUse
2
2
  class BrowserVersion
3
-
4
3
  attr_accessor :version_string
5
4
  attr_accessor :support_string
6
5
 
7
6
  # =====================================================================
8
-
9
- def initialize version_string, support_string
7
+
8
+ def initialize(version_string, support_string)
10
9
  @version_string = version_string
11
10
  @support_string = support_string
12
11
  end
13
12
 
14
13
  # ---------------------------------------------------------------------
15
-
16
- def <=> other
14
+
15
+ def <=>(other)
17
16
  Gem::Version.new(to_s.dup) <=> Gem::Version.new(other.to_s.dup)
18
17
  end
19
18
 
20
- def > other
19
+ def >(other)
21
20
  Gem::Version.new(to_s.dup) > Gem::Version.new(other.to_s.dup)
22
21
  end
23
22
 
24
- def >= other
23
+ def >=(other)
25
24
  Gem::Version.new(to_s.dup) >= Gem::Version.new(other.to_s.dup)
26
25
  end
27
26
 
28
- def < other
27
+ def <(other)
29
28
  Gem::Version.new(to_s.dup) < Gem::Version.new(other.to_s.dup)
30
29
  end
31
30
 
32
- def <= other
31
+ def <=(other)
33
32
  Gem::Version.new(to_s.dup) <= Gem::Version.new(other.to_s.dup)
34
33
  end
35
34
 
36
- def == other
35
+ def ==(other)
37
36
  Gem::Version.new(to_s.dup) == Gem::Version.new(other.to_s.dup)
38
37
  end
39
38
 
40
39
  # ---------------------------------------------------------------------
41
-
40
+
42
41
  def to_s
43
42
  @version_string
44
43
  end
45
44
 
46
45
  # ---------------------------------------------------------------------
47
-
46
+
48
47
  # y - (Y)es, supported by default
49
48
  # a - (A)lmost supported (aka Partial support)
50
49
  # n - (N)o support, or disabled by default
@@ -66,6 +65,5 @@ class CanIUse
66
65
  when support_string =~ /d/i then :disabled
67
66
  end
68
67
  end
69
-
70
68
  end
71
- end
69
+ end
@@ -4,27 +4,25 @@ require_relative 'browser'
4
4
 
5
5
  class CanIUse
6
6
  class Feature
7
-
8
- def initialize name
7
+ def initialize(name)
9
8
  @name = name
10
9
  end
11
10
 
12
11
  # ---------------------------------------------------------------------
13
-
12
+
14
13
  def browsers
15
14
  return [] unless feature_data
16
15
  feature_data.fetch('stats', {}).inject([]) { |res, h| res << Browser.new(*h) }
17
16
  end
18
17
 
19
- def for_browser name
20
- browsers.detect{ |b| b.is?(name) }
18
+ def for_browser(name)
19
+ browsers.detect { |b| b.is?(name) }
21
20
  end
22
21
 
23
22
  private # =============================================================
24
-
23
+
25
24
  def feature_data
26
25
  @feature_data ||= CANIUSE_DATA['data'][@name]
27
26
  end
28
-
29
27
  end
30
- end
28
+ end
@@ -2,29 +2,27 @@ require 'user_agent_parser'
2
2
 
3
3
  class CanIUse
4
4
  class UserAgent
5
-
6
5
  attr_accessor :user_agent_string
7
6
 
8
7
  # =====================================================================
9
-
10
- def initialize user_agent_string
8
+
9
+ def initialize(user_agent_string)
11
10
  @user_agent_string = user_agent_string
12
11
  end
13
12
 
14
13
  # ---------------------------------------------------------------------
15
-
16
- def supports? feature_name, support_type=:yes
14
+
15
+ def supports?(feature_name, support_type = :yes)
17
16
  feature = Feature.new(feature_name)
18
17
  browser = feature.for_browser(user_agent.family)
19
- supported_from_version = browser.supported_from_version(support_type)
18
+ return false unless supported_from_version = browser.supported_from_version(support_type)
20
19
  Gem::Version.new(user_agent.version.to_s.dup) >= Gem::Version.new(supported_from_version.to_s.dup)
21
20
  end
22
21
 
23
22
  private # =============================================================
24
-
23
+
25
24
  def user_agent
26
25
  UserAgentParser.parse(@user_agent_string)
27
26
  end
28
-
29
27
  end
30
- end
28
+ end
@@ -1,3 +1,3 @@
1
1
  class CanIUse
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -2,8 +2,7 @@ require 'test_helper'
2
2
 
3
3
  class CanIUse
4
4
  describe Browser do
5
-
6
- subject { CanIUse::Browser.new("ie", { "5.5"=>"n", "6"=>"p", "7"=>"p", "8"=>"p", "9"=>"y", "10"=>"y", "11"=>"y", "TP"=>"y" }) }
5
+ subject { CanIUse::Browser.new('ie', '5.5' => 'n', '6' => 'p', '7' => 'p', '8' => 'p', '9' => 'y', '10' => 'y', '11' => 'y', 'TP' => 'y') }
7
6
 
8
7
  describe '#versions' do
9
8
  it 'returns an array of versions' do
@@ -31,85 +30,84 @@ class CanIUse
31
30
  end
32
31
 
33
32
  # ---------------------------------------------------------------------
34
-
33
+
35
34
  describe '#is?' do
36
35
  describe 'chrome' do
37
- let(:browser) { CanIUse::Browser.new("chrome", {}) }
36
+ let(:browser) { CanIUse::Browser.new('chrome', {}) }
38
37
  it { browser.is?('Chrome').must_equal true }
39
38
  end
40
39
 
41
40
  describe 'ie' do
42
- let(:browser) { CanIUse::Browser.new("ie", {}) }
41
+ let(:browser) { CanIUse::Browser.new('ie', {}) }
43
42
  it { browser.is?('IE').must_equal true }
44
43
  it { browser.is?('MSIE').must_equal true }
45
44
  end
46
45
 
47
46
  describe 'safari' do
48
- let(:browser) { CanIUse::Browser.new("safari", {}) }
47
+ let(:browser) { CanIUse::Browser.new('safari', {}) }
49
48
  it { browser.is?('Safari').must_equal true }
50
49
  end
51
50
 
52
51
  describe 'ios_saf' do
53
- let(:browser) { CanIUse::Browser.new("ios_saf", {}) }
52
+ let(:browser) { CanIUse::Browser.new('ios_saf', {}) }
54
53
  it { browser.is?('Safari Mobile').must_equal true }
55
54
  it { browser.is?('Mobile Safari').must_equal true }
56
55
  end
57
56
 
58
57
  describe 'firefox' do
59
- let(:browser) { CanIUse::Browser.new("firefox", {}) }
58
+ let(:browser) { CanIUse::Browser.new('firefox', {}) }
60
59
  it { browser.is?('Firefox').must_equal true }
61
60
  end
62
61
 
63
62
  describe 'opera' do
64
- let(:browser) { CanIUse::Browser.new("opera", {}) }
63
+ let(:browser) { CanIUse::Browser.new('opera', {}) }
65
64
  it { browser.is?('Opera').must_equal true }
66
65
  end
67
66
 
68
67
  describe 'op_mini' do
69
- let(:browser) { CanIUse::Browser.new("op_mini", {}) }
68
+ let(:browser) { CanIUse::Browser.new('op_mini', {}) }
70
69
  it { browser.is?('Opera Mini').must_equal true }
71
70
  end
72
71
 
73
72
  describe 'android' do
74
- let(:browser) { CanIUse::Browser.new("android", {}) }
73
+ let(:browser) { CanIUse::Browser.new('android', {}) }
75
74
  it { browser.is?('Android').must_equal true }
76
75
  end
77
76
 
78
77
  describe 'bb' do
79
- let(:browser) { CanIUse::Browser.new("bb", {}) }
78
+ let(:browser) { CanIUse::Browser.new('bb', {}) }
80
79
  it { browser.is?('BlackBerry').must_equal true }
81
80
  end
82
81
 
83
82
  describe 'op_mob' do
84
- let(:browser) { CanIUse::Browser.new("op_mob", {}) }
83
+ let(:browser) { CanIUse::Browser.new('op_mob', {}) }
85
84
  it { browser.is?('Opera Mobi').must_equal true }
86
85
  end
87
86
 
88
87
  describe 'and_chr' do
89
- let(:browser) { CanIUse::Browser.new("and_chr", {}) }
88
+ let(:browser) { CanIUse::Browser.new('and_chr', {}) }
90
89
  it { browser.is?('Android Chrome').must_equal true }
91
90
  end
92
91
 
93
92
  describe 'and_ff' do
94
- let(:browser) { CanIUse::Browser.new("and_ff", {}) }
93
+ let(:browser) { CanIUse::Browser.new('and_ff', {}) }
95
94
  it { browser.is?('Android Firefox').must_equal true }
96
95
  end
97
96
 
98
97
  describe 'ie_mob' do
99
- let(:browser) { CanIUse::Browser.new("ie_mob", {}) }
98
+ let(:browser) { CanIUse::Browser.new('ie_mob', {}) }
100
99
  it { browser.is?('IEMobile').must_equal true }
101
100
  it { browser.is?('MSIE Mobile').must_equal true }
102
101
  it { browser.is?('IE Mobile').must_equal true }
103
102
  end
104
103
 
105
104
  describe 'and_uc' do
106
- let(:browser) { CanIUse::Browser.new("and_uc", {}) }
105
+ let(:browser) { CanIUse::Browser.new('and_uc', {}) }
107
106
  it { browser.is?('UCBrowser').must_equal true }
108
107
  it { browser.is?('Android UC').must_equal true }
109
108
  it { browser.is?('UC Browser').must_equal true }
110
109
  it { browser.is?('Android UC Browser').must_equal true }
111
110
  end
112
111
  end
113
-
114
112
  end
115
- end
113
+ end
@@ -2,7 +2,6 @@ require 'test_helper'
2
2
 
3
3
  class CanIUse
4
4
  describe BrowserVersion do
5
-
6
5
  describe 'support' do
7
6
  it { CanIUse::BrowserVersion.new('0', 'y').support_type.must_equal :yes }
8
7
  it { CanIUse::BrowserVersion.new('0', 'a').support_type.must_equal :almost }
@@ -14,7 +13,7 @@ class CanIUse
14
13
  end
15
14
 
16
15
  describe 'sorting' do
17
- let(:versions) {
16
+ let(:versions) do
18
17
  [
19
18
  CanIUse::BrowserVersion.new('1', 'n'),
20
19
  CanIUse::BrowserVersion.new('1.1', 'n'),
@@ -24,7 +23,7 @@ class CanIUse
24
23
  CanIUse::BrowserVersion.new('6.5.4', 'n'),
25
24
  CanIUse::BrowserVersion.new('3.1', 'n')
26
25
  ]
27
- }
26
+ end
28
27
  it 'sorts the versions' do
29
28
  versions.sort.map(&:to_s).must_equal %w(1 1.0.5 1.1 1.10 3.1 6.5.4 10)
30
29
  end
@@ -42,6 +41,5 @@ class CanIUse
42
41
  (v1 == v2).must_equal false
43
42
  end
44
43
  end
45
-
46
44
  end
47
45
  end
@@ -2,7 +2,6 @@ require 'test_helper'
2
2
 
3
3
  class CanIUse
4
4
  describe Feature do
5
-
6
5
  describe 'WOFF' do
7
6
  let(:feature) { CanIUse::Feature.new('woff') }
8
7
 
@@ -20,6 +19,5 @@ class CanIUse
20
19
  end
21
20
  end
22
21
  end
23
-
24
22
  end
25
- end
23
+ end
@@ -2,12 +2,12 @@ require 'test_helper'
2
2
 
3
3
  class CanIUse
4
4
  describe UserAgent do
5
-
6
5
  let(:safari_8_user_agent_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/600.5.6 (KHTML, like Gecko) Version/8.0.5 Safari/600.5.6' }
7
6
  let(:ie_6_user_agent_string) { 'Mozilla/5.0 (Windows; U; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)' }
7
+ let(:ie_10) { 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)' }
8
8
 
9
9
  # ---------------------------------------------------------------------
10
-
10
+
11
11
  describe 'Safari 8' do
12
12
  it 'supports "canvas"' do
13
13
  CanIUse::UserAgent.new(safari_8_user_agent_string).supports?('canvas').must_equal true
@@ -20,5 +20,10 @@ class CanIUse
20
20
  end
21
21
  end
22
22
 
23
+ describe 'not supported at all' do
24
+ it 'does not support "woff2"' do
25
+ CanIUse::UserAgent.new(ie_10).supports?('woff2').must_equal false
26
+ end
27
+ end
23
28
  end
24
- end
29
+ end
@@ -1,11 +1,9 @@
1
1
  require 'test_helper'
2
2
 
3
3
  describe CanIUse do
4
-
5
4
  describe '.updated_at' do
6
5
  it 'returns last update of the caniuse data embedded in this gem via submodule' do
7
6
  CanIUse.updated_at.must_be_kind_of Time
8
7
  end
9
8
  end
10
-
11
9
  end
@@ -4,8 +4,8 @@ require 'minitest/autorun'
4
4
  require 'minitest/spec'
5
5
 
6
6
  require 'can_i_use'
7
-
8
- if ENV["CI"]
9
- require "coveralls"
7
+
8
+ if ENV['CI']
9
+ require 'coveralls'
10
10
  Coveralls.wear!
11
11
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: can_i_use
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomas Celizna