support-for 1.0.0.beta.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +73 -2
- data/sass/_support-for.scss +17 -11
- data/support-for.gemspec +2 -2
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a237da8b1487ba22400a55f5bf22ca8c70768b32
|
4
|
+
data.tar.gz: d4973a6ed4d70c5ad4d02be8d0003b10e472d02b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4da375a0b0a70a7b6331e67df9dd14cc78a49b23f8d28c7c641cef217b04e4f2195b21cdee5e548f750c3e5cf483e3e4c0f84faa2b06bbc8e5f42d8359777751
|
7
|
+
data.tar.gz: 7fee9548810ebbdba18cb127f37cd2b3d5c7dbe5172aeb0180f71aa065c0c9e66c82d190b4ab6bffbe03e6ff3ddc1ad27646bd71abc759a1a7c2e3c725fe0c8a
|
data/README.md
CHANGED
@@ -1,8 +1,77 @@
|
|
1
1
|
# support-for
|
2
2
|
|
3
|
-
The `support-for` module is designed to be used by
|
3
|
+
The `support-for` module is designed to be used by Sass authors to ease conditional browser support while creating their Sass module or Sass partial.
|
4
4
|
|
5
|
-
|
5
|
+
Authors of Sass code that uses support-for can specify which browser versions they want to support by setting a simple Sass variable, `$support-for`.
|
6
|
+
|
7
|
+
Here are some example usages:
|
8
|
+
|
9
|
+
1. The Sass author only wants to support Safari 8 and later (and no other browsers) because he is an asshole.
|
10
|
+
|
11
|
+
```scss
|
12
|
+
$support-for: (
|
13
|
+
safari: 8,
|
14
|
+
'*': null, // null means "no support" and is the
|
15
|
+
// default value for any browser not
|
16
|
+
// specified in $support-for
|
17
|
+
);
|
18
|
+
|
19
|
+
// Normalize-scss uses support-for.
|
20
|
+
@import "normalize";
|
21
|
+
```
|
22
|
+
|
23
|
+
2. The Sass author wants to support the 4 most recent versions of all browsers which she can do by setting the wildcard browser, `'*'`. She also has to support IE 6 and later because the client hates her.
|
24
|
+
|
25
|
+
```scss
|
26
|
+
$support-for: (
|
27
|
+
'*': -4,
|
28
|
+
ie: 6,
|
29
|
+
);
|
30
|
+
|
31
|
+
@import "normalize";
|
32
|
+
```
|
33
|
+
|
34
|
+
3. The Sass author is working for a government client and every browser version has a specific version specified in the contract.
|
35
|
+
|
36
|
+
```scss
|
37
|
+
$support-for: (
|
38
|
+
chrome: 29,
|
39
|
+
edge: 20,
|
40
|
+
firefox: 26,
|
41
|
+
ie: 8,
|
42
|
+
opera: 14,
|
43
|
+
safari: 5,
|
44
|
+
);
|
45
|
+
|
46
|
+
@import "normalize";
|
47
|
+
```
|
48
|
+
|
49
|
+
### Update your Sass partials to use `support-for()`
|
50
|
+
|
51
|
+
If a Sass module tells you that it uses `support-for`, you just need to override the default value of the `$support-for` variable before you import that module. See the examples above about some of your options.
|
52
|
+
|
53
|
+
If, however, you want to conditionally include Sass in your CSS output, you can update your Sass code to wrap those lines of CSS with an `@if` block that uses the `support-for()` function.
|
54
|
+
|
55
|
+
```
|
56
|
+
@mixin my-sweet-sweet-mixin($cocoa: lots) {
|
57
|
+
border-radius: 100%;
|
58
|
+
|
59
|
+
// Only include this property if we support IE 10.
|
60
|
+
@if support-for(ie, 10) {
|
61
|
+
// Remove border when applied to an `img` inside an `a` element in IE 8/9/10.
|
62
|
+
border: 0;
|
63
|
+
}
|
64
|
+
}
|
65
|
+
```
|
66
|
+
|
67
|
+
If you later drop support for IE 10 (someday!), you just need to update the
|
68
|
+
`$support-for` variable and your code will stop outputting the IE-10-specific
|
69
|
+
CSS.
|
70
|
+
|
71
|
+
## Updating your module to use `support-for`
|
72
|
+
|
73
|
+
If you are a Sass module author wanting to use `support-for` in your module, it's
|
74
|
+
quite easy to add it.
|
6
75
|
|
7
76
|
### Ruby Sass
|
8
77
|
|
@@ -30,3 +99,5 @@ Add your dependency with the following command:
|
|
30
99
|
```
|
31
100
|
bower install --save support-for
|
32
101
|
```
|
102
|
+
|
103
|
+
[![Build Status](https://travis-ci.org/JohnAlbin/support-for.png?branch=master)](https://travis-ci.org/JohnAlbin/support-for)
|
data/sass/_support-for.scss
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
// Support the last 4 versions of all browsers except IE.
|
2
2
|
$support-for: (
|
3
|
-
chrome:
|
4
|
-
edge:
|
5
|
-
firefox:
|
3
|
+
chrome: -4,
|
4
|
+
edge: -4,
|
5
|
+
firefox: -4,
|
6
6
|
ie: 9,
|
7
|
-
opera:
|
8
|
-
safari:
|
7
|
+
opera: -4,
|
8
|
+
safari: -4,
|
9
|
+
'*': -4,
|
9
10
|
) !default;
|
10
11
|
|
11
|
-
// Set the current version number for all browsers. As of: 2015-11-
|
12
|
+
// Set the current version number for all browsers. As of: 2015-11-17
|
12
13
|
$support-for-current-browser-version: (
|
13
14
|
chrome: 46,
|
14
15
|
edge: 25,
|
@@ -31,12 +32,17 @@ $support-for-current-browser-version: (
|
|
31
32
|
@function support-for($browser, $version) {
|
32
33
|
// Ensure $version is an integer (or null).
|
33
34
|
@if not (type-of($version) == "null" or type-of($version) == "number" and round($version) == $version) {
|
34
|
-
@error "The $version parameter of support-for() must be an integer; #{
|
35
|
+
@error "The $version parameter of support-for() must be an integer; #{type-of($version)} given.";
|
35
36
|
}
|
36
37
|
|
37
38
|
// Check against declared minimums.
|
38
|
-
$min-version:
|
39
|
-
|
39
|
+
$min-version: null;
|
40
|
+
@if map-has-key($support-for, $browser) {
|
41
|
+
$min-version: map-get($support-for, $browser);
|
42
|
+
}
|
43
|
+
@else if map-has-key($support-for, '*') {
|
44
|
+
$min-version: map-get($support-for, '*');
|
45
|
+
}
|
40
46
|
|
41
47
|
// Ensure $min-version is an integer (or null).
|
42
48
|
@if type-of($min-version) != "null" and type-of($min-version) != "number" {
|
@@ -49,10 +55,10 @@ $support-for-current-browser-version: (
|
|
49
55
|
// Negative $min-version means "X most recent versions".
|
50
56
|
@if type-of($min-version) == "number" and $min-version < 0 {
|
51
57
|
@if not map-has-key($support-for-current-browser-version, $browser) {
|
52
|
-
@error "$support-for-current-browser-version
|
58
|
+
@error "#{$browser} not found in $support-for-current-browser-version map; it must be set to an integer.";
|
53
59
|
}
|
54
60
|
$min-version: map-get($support-for-current-browser-version, $browser) + $min-version + 1;
|
55
61
|
}
|
56
62
|
|
57
|
-
@return ($min-version and ($version >= $min-version));
|
63
|
+
@return if(($min-version and ($version >= $min-version)), true, false);
|
58
64
|
}
|
data/support-for.gemspec
CHANGED
@@ -9,8 +9,8 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.homepage = 'https://github.com/JohnAlbin/support-for'
|
10
10
|
spec.rubyforge_project =
|
11
11
|
|
12
|
-
spec.version = '1.0.0
|
13
|
-
spec.date = '2015-11-
|
12
|
+
spec.version = '1.0.0'
|
13
|
+
spec.date = '2015-11-17'
|
14
14
|
spec.licenses = ['GPL-2']
|
15
15
|
|
16
16
|
spec.authors = ['John Albin Wilkins']
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: support-for
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Albin Wilkins
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-11-
|
11
|
+
date: 2015-11-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sass
|
@@ -50,11 +50,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
50
50
|
version: '0'
|
51
51
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- - "
|
53
|
+
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version:
|
55
|
+
version: '0'
|
56
56
|
requirements: []
|
57
|
-
rubyforge_project: 1.0.0
|
57
|
+
rubyforge_project: 1.0.0
|
58
58
|
rubygems_version: 2.4.8
|
59
59
|
signing_key:
|
60
60
|
specification_version: 4
|