| //************************************************************************// |
| // Helper function for linear/radial-gradient-parsers. |
| // Source: http://sassmeister.com/gist/9647408 |
| //************************************************************************// |
| @function _str-to-num($string) { |
| // Matrices |
| $strings: '0' '1' '2' '3' '4' '5' '6' '7' '8' '9'; |
| $numbers: 0 1 2 3 4 5 6 7 8 9; |
| |
| // Result |
| $result: 0; |
| $divider: 0; |
| $minus: false; |
| |
| // Looping through all characters |
| @for $i from 1 through str-length($string) { |
| $character: str-slice($string, $i, $i); |
| $index: index($strings, $character); |
| |
| @if $character == '-' { |
| $minus: true; |
| } |
| |
| @else if $character == '.' { |
| $divider: 1; |
| } |
| |
| @else { |
| @if not $index { |
| $result: if($minus, $result * -1, $result); |
| @return _convert-units($result, str-slice($string, $i)); |
| } |
| |
| $number: nth($numbers, $index); |
| |
| @if $divider == 0 { |
| $result: $result * 10; |
| } |
| |
| @else { |
| // Move the decimal dot to the left |
| $divider: $divider * 10; |
| $number: $number / $divider; |
| } |
| |
| $result: $result + $number; |
| } |
| } |
| @return if($minus, $result * -1, $result); |
| } |