can_i_use 0.0.3 → 0.0.4

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: 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