SassyCast 0.0.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/CHANGELOG.md +1 -0
- data/lib/SassyCast.rb +2 -2
- data/stylesheets/types/color/_color.scss +2 -0
- data/stylesheets/types/color/helpers/_from-hex.scss +6 -0
- data/stylesheets/types/color/helpers/_from-hsl.scss +6 -0
- data/stylesheets/types/color/helpers/_from-rgb.scss +6 -0
- data/stylesheets/types/color/helpers/_get-color-value.scss +6 -0
- data/stylesheets/types/color/helpers/_hex-to-dec.scss +6 -0
- data/stylesheets/types/list/_list.scss +13 -2
- data/stylesheets/types/number/_number.scss +23 -21
- data/stylesheets/types/number/helpers/_find-digits.scss +3 -5
- data/stylesheets/types/number/helpers/_find-integer.scss +4 -6
- data/stylesheets/types/number/helpers/_length.scss +7 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f42a0fe044be49a40d427fe6af9cdc0fa60639a
|
4
|
+
data.tar.gz: 8a4c35110c665195d42761ae5a9aa389ea86bb5f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf461c41c1d0a48c9496a755996edff6ced8011b14541e7708968a46027cbcaf2dab57d15fe1d9971948bcd3d4818bc1f65184f46267b09c2b5bc88cec3cb6ea
|
7
|
+
data.tar.gz: e16b8b9828b79152b02b54f697e51a39b9ccaed02fd0526023c8de3646a84aff6528e78cf876e38337f44524c4f9aa0cf4fbe4eefc798aca5af19df0cc7e57b6
|
data/CHANGELOG.md
CHANGED
data/lib/SassyCast.rb
CHANGED
@@ -5,8 +5,8 @@ Compass::Frameworks.register('SassyCast', :path => extension_path)
|
|
5
5
|
# Version is a number. If a version contains alphas, it will be created as a prerelease version
|
6
6
|
# Date is in the form of YYYY-MM-DD
|
7
7
|
module SassyCast
|
8
|
-
VERSION = "0.0
|
9
|
-
DATE = "2014-01-
|
8
|
+
VERSION = "1.0.0"
|
9
|
+
DATE = "2014-01-31"
|
10
10
|
end
|
11
11
|
|
12
12
|
module Sass::Script::Functions
|
@@ -1,3 +1,9 @@
|
|
1
|
+
// Cast a string into a hexadecimal color
|
2
|
+
// --------------------------------------------------------------------------------
|
3
|
+
// @param [string] $string: string
|
4
|
+
// --------------------------------------------------------------------------------
|
5
|
+
// @return [color|string] string or hex color depending on the match
|
6
|
+
|
1
7
|
@function _from-hex($string) {
|
2
8
|
$string-lower: to-lower-case($string);
|
3
9
|
$r: ""; $g: ""; $b: "";
|
@@ -1,3 +1,9 @@
|
|
1
|
+
// Cast a string into a hsl color
|
2
|
+
// --------------------------------------------------------------------------------
|
3
|
+
// @param [string] $string: string
|
4
|
+
// --------------------------------------------------------------------------------
|
5
|
+
// @return [color|string] string or hsl color depending on the match
|
6
|
+
|
1
7
|
@function _from-hsl($string) {
|
2
8
|
$frags: ();
|
3
9
|
$string-lower: to-lower-case($string);
|
@@ -1,3 +1,9 @@
|
|
1
|
+
// Cast a string into a rgb color
|
2
|
+
// --------------------------------------------------------------------------------
|
3
|
+
// @param [string] $string: string
|
4
|
+
// --------------------------------------------------------------------------------
|
5
|
+
// @return [color|string] string or rgb color depending on the match
|
6
|
+
|
1
7
|
@function _from-rgb($string) {
|
2
8
|
$string-lower: to-lower-case($string);
|
3
9
|
$frags: ();
|
@@ -1,3 +1,9 @@
|
|
1
|
+
// Cast a stringified number / stringified percentage into number type
|
2
|
+
// --------------------------------------------------------------------------------
|
3
|
+
// @param [string] $string: string
|
4
|
+
// --------------------------------------------------------------------------------
|
5
|
+
// @return [number] unitless number or percentage
|
6
|
+
|
1
7
|
@function _get-color-value($string) {
|
2
8
|
$first: str-slice($string, 1, 1);
|
3
9
|
|
@@ -1,3 +1,9 @@
|
|
1
|
+
// Convert an hexadecimal number to a decimal number
|
2
|
+
// --------------------------------------------------------------------------------
|
3
|
+
// @param [string] $string: hexadecimal value
|
4
|
+
// --------------------------------------------------------------------------------
|
5
|
+
// @return [number] decimal number
|
6
|
+
|
1
7
|
@function _hex-to-dec($string){
|
2
8
|
$hex: "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "a" "b" "c" "d" "e" "f";
|
3
9
|
$string: to-lower-case($string);
|
@@ -4,7 +4,9 @@
|
|
4
4
|
// --------------------------------------------------------------------------------
|
5
5
|
// @return [list]
|
6
6
|
|
7
|
-
@function to-list($value) {
|
7
|
+
@function to-list($value, $keep: 'both') {
|
8
|
+
$keep: if(index('keys' 'values' 'both', $keep), $keep, 'both');
|
9
|
+
|
8
10
|
@if type-of($value) == map {
|
9
11
|
$keys: ();
|
10
12
|
$values: ();
|
@@ -12,7 +14,16 @@
|
|
12
14
|
$keys: append($keys, $key);
|
13
15
|
$values: append($values, $val);
|
14
16
|
}
|
15
|
-
|
17
|
+
|
18
|
+
@if $keep == 'keys' {
|
19
|
+
@return $keys;
|
20
|
+
}
|
21
|
+
@else if $keep == 'values' {
|
22
|
+
@return $values;
|
23
|
+
}
|
24
|
+
@else {
|
25
|
+
@return zip($keys, $values);
|
26
|
+
}
|
16
27
|
}
|
17
28
|
|
18
29
|
@return if(type-of($value) != list, ($value,), $value);
|
@@ -1,64 +1,66 @@
|
|
1
|
+
// Helpers
|
2
|
+
|
1
3
|
@import "helpers/find-integer";
|
2
4
|
@import "helpers/find-digits";
|
3
5
|
@import "helpers/pow";
|
4
6
|
@import "helpers/length";
|
5
7
|
|
6
|
-
//
|
7
|
-
// --------------------------------------------------------------------------------
|
8
|
-
// @param [string] $source: JSON complete source
|
9
|
-
// @param [number] $pointer: current pointer
|
8
|
+
// Cast a value to a number if possible or return 0
|
10
9
|
// --------------------------------------------------------------------------------
|
11
|
-
// @
|
12
|
-
// @throw "Unexpected end of stream."
|
10
|
+
// @param [string] $value: complete source
|
13
11
|
// --------------------------------------------------------------------------------
|
14
|
-
// @return [
|
12
|
+
// @return [number] number (0 if cast failed)
|
15
13
|
|
16
|
-
@function to-number($
|
17
|
-
|
18
|
-
|
14
|
+
@function to-number($value) {
|
15
|
+
// In case everything's good
|
16
|
+
@if type-of($value) == number {
|
17
|
+
@return $value;
|
19
18
|
}
|
20
19
|
|
21
|
-
|
20
|
+
// Boolean to number
|
21
|
+
@if $value == true {
|
22
22
|
@return 1;
|
23
23
|
}
|
24
24
|
|
25
|
-
|
25
|
+
// Fail
|
26
|
+
@if type-of($value) != string {
|
26
27
|
@return 0;
|
27
28
|
}
|
28
29
|
|
30
|
+
// Trying to cast
|
29
31
|
$pointer: 1;
|
30
32
|
$result: 0;
|
31
33
|
$allowed: '-' '0' '1' '2' '3' '4' '5' '6' '7' '8' '9'; // Allowed characted to start with
|
32
|
-
$first: str-slice($
|
34
|
+
$first: str-slice($value, $pointer, $pointer); // First character of the number
|
33
35
|
$minus: $first == '-'; // Is it negative?
|
34
36
|
|
35
37
|
// Early check for errors
|
36
38
|
@if not index($allowed, $first) {
|
37
|
-
|
39
|
+
@warn "Could not cast `#{inspect($value)} into number.";
|
38
40
|
@return 0;
|
39
41
|
}
|
40
42
|
|
41
43
|
// Find the integer part
|
42
|
-
$find-integer: _find-integer($
|
44
|
+
$find-integer: _find-integer($value, $pointer);
|
43
45
|
$pointer: nth($find-integer, 1);
|
44
46
|
$result: nth($find-integer, 2);
|
45
47
|
|
46
48
|
// Find digits
|
47
|
-
@if str-slice($
|
48
|
-
$find-digits: _find-digits($
|
49
|
+
@if str-slice($value, $pointer, $pointer) == '.' {
|
50
|
+
$find-digits: _find-digits($value, $pointer);
|
49
51
|
$pointer: nth($find-digits, 1);
|
50
52
|
$digits: nth($find-digits, 2);
|
51
53
|
$result: $result + $digits;
|
52
54
|
}
|
53
55
|
|
56
|
+
// In case of negative
|
54
57
|
@if $minus {
|
55
58
|
$result: $result * -1;
|
56
59
|
}
|
57
60
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
$result: _length($result, str-slice($source, $pointer));
|
61
|
+
// In case of possible CSS unit
|
62
|
+
@if $pointer < str-length($value) {
|
63
|
+
$result: _length($result, str-slice($value, $pointer));
|
62
64
|
}
|
63
65
|
|
64
66
|
@return $result;
|
@@ -1,11 +1,9 @@
|
|
1
|
-
//
|
1
|
+
// Finding the digits part of a stringified number
|
2
2
|
// --------------------------------------------------------------------------------
|
3
|
-
// @param [string] $source:
|
3
|
+
// @param [string] $source: string source
|
4
4
|
// @param [number] $pointer: current pointer
|
5
5
|
// --------------------------------------------------------------------------------
|
6
|
-
// @
|
7
|
-
// --------------------------------------------------------------------------------
|
8
|
-
// @return [list|false] (new pointer, parsed number)
|
6
|
+
// @return [list] (new pointer, parsed number)
|
9
7
|
|
10
8
|
@function _find-digits($source, $pointer) {
|
11
9
|
$source: to-lower-case($source);
|
@@ -1,11 +1,9 @@
|
|
1
|
-
//
|
1
|
+
// Finding the integer part of a stringified number
|
2
2
|
// --------------------------------------------------------------------------------
|
3
|
-
// @param [string] $source:
|
3
|
+
// @param [string] $source: string source
|
4
4
|
// @param [number] $pointer: current pointer
|
5
5
|
// --------------------------------------------------------------------------------
|
6
|
-
// @
|
7
|
-
// --------------------------------------------------------------------------------
|
8
|
-
// @return [list|false] (new pointer, parsed number)
|
6
|
+
// @return [list] (new pointer, parsed number)
|
9
7
|
|
10
8
|
@function _find-integer($source, $pointer) {
|
11
9
|
$source: to-lower-case($source);
|
@@ -18,7 +16,7 @@
|
|
18
16
|
$index: index($numbers, $token);
|
19
17
|
|
20
18
|
@if $token == '-' {
|
21
|
-
//
|
19
|
+
// @continue;
|
22
20
|
}
|
23
21
|
@else if $index {
|
24
22
|
$result: $result * 10 + ($index - 1);
|
@@ -1,3 +1,10 @@
|
|
1
|
+
// Tries to find a unit that would match a CSS length
|
2
|
+
// --------------------------------------------------------------------------------
|
3
|
+
// @param [number] $number: number
|
4
|
+
// @param [unit] $unit: potential unit
|
5
|
+
// --------------------------------------------------------------------------------
|
6
|
+
// @return [number] length (0 if cast failed)
|
7
|
+
|
1
8
|
@function _length($number, $unit) {
|
2
9
|
$strings: 'px' 'cm' 'mm' '%' 'ch' 'pica' 'in' 'em' 'rem' 'pt' 'pc' 'ex' 'vw' 'vh' 'vmin' 'vmax';
|
3
10
|
$units: 1px 1cm 1mm 1% 1ch 1pica 1in 1em 1rem 1pt 1pc 1ex 1vw 1vh 1vmin 1vmax;
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: SassyCast
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hugo Giraudel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-31 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Sass API for type conversion.
|
14
14
|
email:
|