can_i_use 0.0.1

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.
@@ -0,0 +1,3 @@
1
+ [submodule "vendor/caniuse"]
2
+ path = vendor/caniuse
3
+ url = https://github.com/Fyrd/caniuse.git
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in mongoid_ability.gemspec
4
+ gemspec
@@ -0,0 +1,86 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ can_i_use (0.0.1)
5
+ user_agent_parser
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ celluloid (0.16.0)
11
+ timers (~> 4.0.0)
12
+ coderay (1.1.0)
13
+ coveralls (0.7.11)
14
+ multi_json (~> 1.10)
15
+ rest-client (>= 1.6.8, < 2)
16
+ simplecov (~> 0.9.1)
17
+ term-ansicolor (~> 1.3)
18
+ thor (~> 0.19.1)
19
+ docile (1.1.5)
20
+ ffi (1.9.6)
21
+ formatador (0.2.5)
22
+ guard (2.12.4)
23
+ formatador (>= 0.2.4)
24
+ listen (~> 2.7)
25
+ lumberjack (~> 1.0)
26
+ nenv (~> 0.1)
27
+ notiffany (~> 0.0)
28
+ pry (>= 0.9.12)
29
+ shellany (~> 0.0)
30
+ thor (>= 0.18.1)
31
+ guard-compat (1.2.1)
32
+ guard-minitest (2.4.4)
33
+ guard-compat (~> 1.2)
34
+ minitest (>= 3.0)
35
+ hitimes (1.2.2)
36
+ listen (2.8.5)
37
+ celluloid (>= 0.15.2)
38
+ rb-fsevent (>= 0.9.3)
39
+ rb-inotify (>= 0.9)
40
+ lumberjack (1.0.9)
41
+ method_source (0.8.2)
42
+ mime-types (2.4.3)
43
+ minitest (5.5.1)
44
+ multi_json (1.11.0)
45
+ nenv (0.2.0)
46
+ netrc (0.10.3)
47
+ notiffany (0.0.6)
48
+ nenv (~> 0.1)
49
+ shellany (~> 0.0)
50
+ pry (0.10.1)
51
+ coderay (~> 1.1.0)
52
+ method_source (~> 0.8.1)
53
+ slop (~> 3.4)
54
+ rake (10.4.2)
55
+ rb-fsevent (0.9.4)
56
+ rb-inotify (0.9.5)
57
+ ffi (>= 0.5.0)
58
+ rest-client (1.7.3)
59
+ mime-types (>= 1.16, < 3.0)
60
+ netrc (~> 0.7)
61
+ shellany (0.0.1)
62
+ simplecov (0.9.2)
63
+ docile (~> 1.1.0)
64
+ multi_json (~> 1.0)
65
+ simplecov-html (~> 0.9.0)
66
+ simplecov-html (0.9.0)
67
+ slop (3.6.0)
68
+ term-ansicolor (1.3.0)
69
+ tins (~> 1.0)
70
+ thor (0.19.1)
71
+ timers (4.0.1)
72
+ hitimes
73
+ tins (1.3.5)
74
+ user_agent_parser (2.2.0)
75
+
76
+ PLATFORMS
77
+ ruby
78
+
79
+ DEPENDENCIES
80
+ bundler (~> 1.6)
81
+ can_i_use!
82
+ coveralls
83
+ guard
84
+ guard-minitest
85
+ minitest
86
+ rake
@@ -0,0 +1,8 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard :minitest do
5
+ watch(%r{^lib/(.+)\.rb$}) { |m| "test/#{m[1]}_test.rb" }
6
+ watch(%r{^test/.+_test\.rb$})
7
+ watch(%r{^test/test_helper\.rb$}) { 'test' }
8
+ end
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Tomas Celizna
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,48 @@
1
+ # CanIUse
2
+
3
+ [![Build Status](https://travis-ci.org/tomasc/can_i_use.svg)](https://travis-ci.org/tomasc/can_i_use) [![Gem Version](https://badge.fury.io/rb/can_i_use.svg)](http://badge.fury.io/rb/can_i_use) [![Coverage Status](https://img.shields.io/coveralls/tomasc/can_i_use.svg)](https://coveralls.io/r/tomasc/can_i_use)
4
+
5
+ Very light Ruby wrapper on [caniuse](http://www.caniuse.com) data.
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'can_i_use'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ ```
18
+ $ bundle
19
+ ```
20
+
21
+ Or install it yourself as:
22
+
23
+ ```
24
+ $ gem install can_i_use
25
+ ```
26
+
27
+ ## Usage
28
+
29
+ Test user agent for support of a feature. Optionally specify minimal required type of support (`:almost`, `:polyfill`, `:prefix` or `:disabled`).
30
+
31
+ ```ruby
32
+ CanIUse::UserAgent.new(user_agent_string).supports?('canvas') # => true
33
+ CanIUse::UserAgent.new(user_agent_string).supports?('canvas', :polyfill) # => true
34
+ ```
35
+
36
+ The [caniuse](http://www.caniuse.com) data are included as a submodule from the [official GitHub repo](https://github.com/fyrd/caniuse). This means this gem needs to be regularly updated in order to reflect the latest features and their implementation in browsers. Pull requests are welcome.
37
+
38
+ ```ruby
39
+ CanIUse.updated_at # => 2015-03-01 05:59:31 UTC
40
+ ```
41
+
42
+ ## Contributing
43
+
44
+ 1. Fork it ( https://github.com/tomasc/can_i_use/fork )
45
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
46
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
47
+ 4. Push to the branch (`git push origin my-new-feature`)
48
+ 5. Create a new Pull Request
@@ -0,0 +1,9 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.libs << 'test'
6
+ t.pattern = 'test/**/*_test.rb'
7
+ end
8
+
9
+ task :default => :test
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'can_i_use/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "can_i_use"
8
+ spec.version = CanIUse::VERSION
9
+ spec.authors = ["Tomas Celizna"]
10
+ spec.email = ["tomas.celizna@gmail.com"]
11
+ spec.summary = %q{Very light Ruby wrapper on caniuse data.}
12
+ spec.description = %q{Very light Ruby wrapper on caniuse data.}
13
+ spec.homepage = "https://github.com/tomasc/can_i_use"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency 'user_agent_parser'
22
+
23
+ spec.add_development_dependency "bundler", "~> 1.6"
24
+ spec.add_development_dependency "coveralls"
25
+ spec.add_development_dependency "guard"
26
+ spec.add_development_dependency "guard-minitest"
27
+ spec.add_development_dependency "minitest"
28
+ spec.add_development_dependency "rake"
29
+ end
@@ -0,0 +1,24 @@
1
+ require "can_i_use/version"
2
+
3
+ require 'can_i_use/browser'
4
+ require 'can_i_use/browser_version'
5
+ require 'can_i_use/feature'
6
+ require 'can_i_use/user_agent'
7
+
8
+ class CanIUse
9
+
10
+ CANIUSE_DATA = JSON.parse(
11
+ File.read(
12
+ File.join(
13
+ [ File.dirname(__FILE__), '..', 'vendor/caniuse/data.json' ]
14
+ )
15
+ )
16
+ )
17
+
18
+ # =====================================================================
19
+
20
+ def self.updated_at
21
+ Time.at(CANIUSE_DATA['updated'].to_i).utc
22
+ end
23
+
24
+ end
@@ -0,0 +1,49 @@
1
+ require_relative 'version'
2
+
3
+ class CanIUse
4
+ class Browser
5
+
6
+ attr_accessor :name
7
+ attr_accessor :versions_hash
8
+
9
+ # =====================================================================
10
+
11
+ def initialize name, versions_hash
12
+ @name = name
13
+ @versions_hash = versions_hash
14
+ end
15
+
16
+ # ---------------------------------------------------------------------
17
+
18
+ def versions
19
+ @versions_hash.select{ |k, v| k =~ /[\d\.]/ }.inject([]) do |res, h|
20
+ res << BrowserVersion.new(*h)
21
+ end
22
+ end
23
+
24
+ def version version_number
25
+ versions.detect{ |v| v.to_s == version_number }
26
+ end
27
+
28
+ def supported_from_version support_type=:yes
29
+ versions.detect{ |v| v.support_type == support_type }
30
+ end
31
+
32
+ # ---------------------------------------------------------------------
33
+
34
+ def is? str
35
+ !!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
45
+ end
46
+ end
47
+
48
+ end
49
+ end
@@ -0,0 +1,71 @@
1
+ class CanIUse
2
+ class BrowserVersion
3
+
4
+ attr_accessor :version_string
5
+ attr_accessor :support_string
6
+
7
+ # =====================================================================
8
+
9
+ def initialize version_string, support_string
10
+ @version_string = version_string
11
+ @support_string = support_string
12
+ end
13
+
14
+ # ---------------------------------------------------------------------
15
+
16
+ def <=> other
17
+ Gem::Version.new(to_s.dup) <=> Gem::Version.new(other.to_s.dup)
18
+ end
19
+
20
+ def > other
21
+ Gem::Version.new(to_s.dup) > Gem::Version.new(other.to_s.dup)
22
+ end
23
+
24
+ def >= other
25
+ Gem::Version.new(to_s.dup) >= Gem::Version.new(other.to_s.dup)
26
+ end
27
+
28
+ def < other
29
+ Gem::Version.new(to_s.dup) < Gem::Version.new(other.to_s.dup)
30
+ end
31
+
32
+ def <= other
33
+ Gem::Version.new(to_s.dup) <= Gem::Version.new(other.to_s.dup)
34
+ end
35
+
36
+ def == other
37
+ Gem::Version.new(to_s.dup) == Gem::Version.new(other.to_s.dup)
38
+ end
39
+
40
+ # ---------------------------------------------------------------------
41
+
42
+ def to_s
43
+ @version_string
44
+ end
45
+
46
+ # ---------------------------------------------------------------------
47
+
48
+ # y - (Y)es, supported by default
49
+ # a - (A)lmost supported (aka Partial support)
50
+ # n - (N)o support, or disabled by default
51
+ # p - No support, but has (P)olyfill
52
+ # u - Support (u)nknown
53
+ # x - Requires prefi(x) to work
54
+ # d - (D)isabled by default (need to enable flag or something)
55
+ # #n - Where n is a number, starting with 1, corresponds to the notes_by_num note. For example: "42":"y #1" means version 42 is supported by default and see note 1.
56
+
57
+ # TODO: append note
58
+ def support_type
59
+ case
60
+ when support_string =~ /y/i then :yes
61
+ when support_string =~ /a/i then :almost
62
+ when support_string =~ /n/i then :no
63
+ when support_string =~ /p/i then :polyfill
64
+ when support_string =~ /u/i then :unknown
65
+ when support_string =~ /x/i then :prefix
66
+ when support_string =~ /d/i then :disabled
67
+ end
68
+ end
69
+
70
+ end
71
+ end
@@ -0,0 +1,30 @@
1
+ require 'json'
2
+
3
+ require_relative 'browser'
4
+
5
+ class CanIUse
6
+ class Feature
7
+
8
+ def initialize name
9
+ @name = name
10
+ end
11
+
12
+ # ---------------------------------------------------------------------
13
+
14
+ def browsers
15
+ return [] unless feature_data
16
+ feature_data.fetch('stats', {}).inject([]) { |res, h| res << Browser.new(*h) }
17
+ end
18
+
19
+ def for_browser name
20
+ browsers.detect{ |b| b.is?(name) }
21
+ end
22
+
23
+ private # =============================================================
24
+
25
+ def feature_data
26
+ @feature_data ||= CANIUSE_DATA['data'][@name]
27
+ end
28
+
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+ require 'user_agent_parser'
2
+
3
+ class CanIUse
4
+ class UserAgent
5
+
6
+ attr_accessor :user_agent_string
7
+
8
+ # =====================================================================
9
+
10
+ def initialize user_agent_string
11
+ @user_agent_string = user_agent_string
12
+ end
13
+
14
+ # ---------------------------------------------------------------------
15
+
16
+ def supports? feature_name, support_type=:yes
17
+ feature = Feature.new(feature_name)
18
+ browser = feature.for_browser(user_agent.family)
19
+ supported_from_version = browser.supported_from_version(support_type)
20
+ Gem::Version.new(user_agent.version.to_s.dup) >= Gem::Version.new(supported_from_version.to_s.dup)
21
+ end
22
+
23
+ private # =============================================================
24
+
25
+ def user_agent
26
+ UserAgentParser.parse(@user_agent_string)
27
+ end
28
+
29
+ end
30
+ end
@@ -0,0 +1,3 @@
1
+ class CanIUse
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,115 @@
1
+ require 'test_helper'
2
+
3
+ class CanIUse
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" }) }
7
+
8
+ describe '#versions' do
9
+ it 'returns an array of versions' do
10
+ subject.versions.must_be_kind_of Array
11
+ subject.versions.map(&:class).uniq.first.must_equal CanIUse::BrowserVersion
12
+ end
13
+ end
14
+
15
+ describe '#version' do
16
+ it 'returns CanIUse::BrowserVersion' do
17
+ subject.version('6').must_be_kind_of CanIUse::BrowserVersion
18
+ end
19
+ end
20
+
21
+ describe '#supported_from_version' do
22
+ it 'returns supported version' do
23
+ subject.supported_from_version.must_be_kind_of CanIUse::BrowserVersion
24
+ subject.supported_from_version.to_s.must_equal '9'
25
+ end
26
+
27
+ it 'returns supported version with support type' do
28
+ subject.supported_from_version.must_be_kind_of CanIUse::BrowserVersion
29
+ subject.supported_from_version(:polyfill).to_s.must_equal '6'
30
+ end
31
+ end
32
+
33
+ # ---------------------------------------------------------------------
34
+
35
+ describe '#is?' do
36
+ describe 'chrome' do
37
+ let(:browser) { CanIUse::Browser.new("chrome", {}) }
38
+ it { browser.is?('Chrome').must_equal true }
39
+ end
40
+
41
+ describe 'ie' do
42
+ let(:browser) { CanIUse::Browser.new("ie", {}) }
43
+ it { browser.is?('IE').must_equal true }
44
+ it { browser.is?('MSIE').must_equal true }
45
+ end
46
+
47
+ describe 'safari' do
48
+ let(:browser) { CanIUse::Browser.new("safari", {}) }
49
+ it { browser.is?('Safari').must_equal true }
50
+ end
51
+
52
+ describe 'ios_saf' do
53
+ let(:browser) { CanIUse::Browser.new("ios_saf", {}) }
54
+ it { browser.is?('Safari Mobile').must_equal true }
55
+ it { browser.is?('Mobile Safari').must_equal true }
56
+ end
57
+
58
+ describe 'firefox' do
59
+ let(:browser) { CanIUse::Browser.new("firefox", {}) }
60
+ it { browser.is?('Firefox').must_equal true }
61
+ end
62
+
63
+ describe 'opera' do
64
+ let(:browser) { CanIUse::Browser.new("opera", {}) }
65
+ it { browser.is?('Opera').must_equal true }
66
+ end
67
+
68
+ describe 'op_mini' do
69
+ let(:browser) { CanIUse::Browser.new("op_mini", {}) }
70
+ it { browser.is?('Opera Mini').must_equal true }
71
+ end
72
+
73
+ describe 'android' do
74
+ let(:browser) { CanIUse::Browser.new("android", {}) }
75
+ it { browser.is?('Android').must_equal true }
76
+ end
77
+
78
+ describe 'bb' do
79
+ let(:browser) { CanIUse::Browser.new("bb", {}) }
80
+ it { browser.is?('BlackBerry').must_equal true }
81
+ end
82
+
83
+ describe 'op_mob' do
84
+ let(:browser) { CanIUse::Browser.new("op_mob", {}) }
85
+ it { browser.is?('Opera Mobi').must_equal true }
86
+ end
87
+
88
+ describe 'and_chr' do
89
+ let(:browser) { CanIUse::Browser.new("and_chr", {}) }
90
+ it { browser.is?('Android Chrome').must_equal true }
91
+ end
92
+
93
+ describe 'and_ff' do
94
+ let(:browser) { CanIUse::Browser.new("and_ff", {}) }
95
+ it { browser.is?('Android Firefox').must_equal true }
96
+ end
97
+
98
+ describe 'ie_mob' do
99
+ let(:browser) { CanIUse::Browser.new("ie_mob", {}) }
100
+ it { browser.is?('IEMobile').must_equal true }
101
+ it { browser.is?('MSIE Mobile').must_equal true }
102
+ it { browser.is?('IE Mobile').must_equal true }
103
+ end
104
+
105
+ describe 'and_uc' do
106
+ let(:browser) { CanIUse::Browser.new("and_uc", {}) }
107
+ it { browser.is?('UCBrowser').must_equal true }
108
+ it { browser.is?('Android UC').must_equal true }
109
+ it { browser.is?('UC Browser').must_equal true }
110
+ it { browser.is?('Android UC Browser').must_equal true }
111
+ end
112
+ end
113
+
114
+ end
115
+ end
@@ -0,0 +1,47 @@
1
+ require 'test_helper'
2
+
3
+ class CanIUse
4
+ describe BrowserVersion do
5
+
6
+ describe 'support' do
7
+ it { CanIUse::BrowserVersion.new('0', 'y').support_type.must_equal :yes }
8
+ it { CanIUse::BrowserVersion.new('0', 'a').support_type.must_equal :almost }
9
+ it { CanIUse::BrowserVersion.new('0', 'n').support_type.must_equal :no }
10
+ it { CanIUse::BrowserVersion.new('0', 'p').support_type.must_equal :polyfill }
11
+ it { CanIUse::BrowserVersion.new('0', 'u').support_type.must_equal :unknown }
12
+ it { CanIUse::BrowserVersion.new('0', 'x').support_type.must_equal :prefix }
13
+ it { CanIUse::BrowserVersion.new('0', 'd').support_type.must_equal :disabled }
14
+ end
15
+
16
+ describe 'sorting' do
17
+ let(:versions) {
18
+ [
19
+ CanIUse::BrowserVersion.new('1', 'n'),
20
+ CanIUse::BrowserVersion.new('1.1', 'n'),
21
+ CanIUse::BrowserVersion.new('1.0.5', 'n'),
22
+ CanIUse::BrowserVersion.new('1.10', 'n'),
23
+ CanIUse::BrowserVersion.new('10', 'n'),
24
+ CanIUse::BrowserVersion.new('6.5.4', 'n'),
25
+ CanIUse::BrowserVersion.new('3.1', 'n')
26
+ ]
27
+ }
28
+ it 'sorts the versions' do
29
+ versions.sort.map(&:to_s).must_equal %w(1 1.0.5 1.1 1.10 3.1 6.5.4 10)
30
+ end
31
+ end
32
+
33
+ describe 'comparison' do
34
+ let(:v1) { CanIUse::BrowserVersion.new('1.10', 'n') }
35
+ let(:v2) { CanIUse::BrowserVersion.new('5.0.4', 'n') }
36
+
37
+ it 'compares them' do
38
+ (v1 > v2).must_equal false
39
+ (v1 >= v2).must_equal false
40
+ (v1 < v2).must_equal true
41
+ (v1 <= v2).must_equal true
42
+ (v1 == v2).must_equal false
43
+ end
44
+ end
45
+
46
+ end
47
+ end
@@ -0,0 +1,25 @@
1
+ require 'test_helper'
2
+
3
+ class CanIUse
4
+ describe Feature do
5
+
6
+ describe 'WOFF' do
7
+ let(:feature) { CanIUse::Feature.new('woff') }
8
+
9
+ describe 'browser' do
10
+ it 'returns Hash of browsers' do
11
+ feature.browsers.must_be_kind_of Array
12
+ feature.browsers.map(&:class).uniq.first.must_equal CanIUse::Browser
13
+ end
14
+ end
15
+
16
+ describe '#for_browser' do
17
+ it 'return CanIUse::Browser' do
18
+ feature.for_browser('ie').must_be_kind_of CanIUse::Browser
19
+ feature.for_browser('ie').name.must_equal 'ie'
20
+ end
21
+ end
22
+ end
23
+
24
+ end
25
+ end
@@ -0,0 +1,24 @@
1
+ require 'test_helper'
2
+
3
+ class CanIUse
4
+ describe UserAgent do
5
+
6
+ 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
+ let(:ie_6_user_agent_string) { 'Mozilla/5.0 (Windows; U; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)' }
8
+
9
+ # ---------------------------------------------------------------------
10
+
11
+ describe 'Safari 8' do
12
+ it 'supports "canvas"' do
13
+ CanIUse::UserAgent.new(safari_8_user_agent_string).supports?('canvas').must_equal true
14
+ end
15
+ end
16
+
17
+ describe 'IE 6' do
18
+ it 'does not support "canvas"' do
19
+ CanIUse::UserAgent.new(ie_6_user_agent_string).supports?('canvas').must_equal false
20
+ end
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,11 @@
1
+ require 'test_helper'
2
+
3
+ describe CanIUse do
4
+
5
+ describe '.updated_at' do
6
+ it 'returns last update of the caniuse data embedded in this gem via submodule' do
7
+ CanIUse.updated_at.must_be_kind_of Time
8
+ end
9
+ end
10
+
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'bundler/setup'
2
+ require 'minitest'
3
+ require 'minitest/autorun'
4
+ require 'minitest/spec'
5
+
6
+ require 'can_i_use'
7
+
8
+ if ENV["CI"]
9
+ require "coveralls"
10
+ Coveralls.wear!
11
+ end
metadata ADDED
@@ -0,0 +1,157 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: can_i_use
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Tomas Celizna
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-03-07 00:00:00.000000000 +01:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: user_agent_parser
17
+ requirement: &1 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *1
26
+ - !ruby/object:Gem::Dependency
27
+ name: bundler
28
+ requirement: &2 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.6'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: *2
37
+ - !ruby/object:Gem::Dependency
38
+ name: coveralls
39
+ requirement: &3 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ type: :development
46
+ prerelease: false
47
+ version_requirements: *3
48
+ - !ruby/object:Gem::Dependency
49
+ name: guard
50
+ requirement: &4 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: *4
59
+ - !ruby/object:Gem::Dependency
60
+ name: guard-minitest
61
+ requirement: &5 !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: *5
70
+ - !ruby/object:Gem::Dependency
71
+ name: minitest
72
+ requirement: &6 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: *6
81
+ - !ruby/object:Gem::Dependency
82
+ name: rake
83
+ requirement: &7 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: *7
92
+ description: Very light Ruby wrapper on caniuse data.
93
+ email:
94
+ - tomas.celizna@gmail.com
95
+ executables: []
96
+ extensions: []
97
+ extra_rdoc_files: []
98
+ files:
99
+ - ".gitmodules"
100
+ - Gemfile
101
+ - Gemfile.lock
102
+ - Guardfile
103
+ - LICENSE.txt
104
+ - README.md
105
+ - Rakefile
106
+ - can_i_use.gemspec
107
+ - lib/can_i_use.rb
108
+ - lib/can_i_use/browser.rb
109
+ - lib/can_i_use/browser_version.rb
110
+ - lib/can_i_use/feature.rb
111
+ - lib/can_i_use/user_agent.rb
112
+ - lib/can_i_use/version.rb
113
+ - test/can_i_use/browser_test.rb
114
+ - test/can_i_use/browser_version_test.rb
115
+ - test/can_i_use/feature_test.rb
116
+ - test/can_i_use/user_agent_test.rb
117
+ - test/can_i_use_test.rb
118
+ - test/test_helper.rb
119
+ has_rdoc: true
120
+ homepage: https://github.com/tomasc/can_i_use
121
+ licenses:
122
+ - MIT
123
+ post_install_message:
124
+ rdoc_options: []
125
+ require_paths:
126
+ - lib
127
+ required_ruby_version: !ruby/object:Gem::Requirement
128
+ none: false
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ segments:
134
+ - 0
135
+ hash: 2855716620795771990
136
+ required_rubygems_version: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ segments:
143
+ - 0
144
+ hash: 2855716620795771990
145
+ requirements: []
146
+ rubyforge_project:
147
+ rubygems_version: 1.3.9.5
148
+ signing_key:
149
+ specification_version: 3
150
+ summary: Very light Ruby wrapper on caniuse data.
151
+ test_files:
152
+ - test/can_i_use/browser_test.rb
153
+ - test/can_i_use/browser_version_test.rb
154
+ - test/can_i_use/feature_test.rb
155
+ - test/can_i_use/user_agent_test.rb
156
+ - test/can_i_use_test.rb
157
+ - test/test_helper.rb