SassyJSON 1.0.6

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.
Files changed (40) hide show
  1. data/CHANGELOG.md +11 -0
  2. data/README.md +96 -0
  3. data/lib/SassyJSON.rb +14 -0
  4. data/src/SassyJSON.scss +2 -0
  5. data/src/decode/api/_json.scss +26 -0
  6. data/src/decode/decode.scss +28 -0
  7. data/src/decode/helpers/all/_throw.scss +11 -0
  8. data/src/decode/helpers/all/_value.scss +49 -0
  9. data/src/decode/helpers/color/_color.scss +45 -0
  10. data/src/decode/helpers/color/_get-color-value.scss +18 -0
  11. data/src/decode/helpers/color/_hex-to-dec.scss +20 -0
  12. data/src/decode/helpers/color/_hex.scss +39 -0
  13. data/src/decode/helpers/color/_hsl.scss +46 -0
  14. data/src/decode/helpers/color/_rgb.scss +46 -0
  15. data/src/decode/helpers/map/_consume.scss +33 -0
  16. data/src/decode/helpers/number/_find-digits.scss +40 -0
  17. data/src/decode/helpers/number/_find-exponent.scss +46 -0
  18. data/src/decode/helpers/number/_find-integer.scss +38 -0
  19. data/src/decode/helpers/number/_pow.scss +22 -0
  20. data/src/decode/helpers/string/_find-ending-quote.scss +36 -0
  21. data/src/decode/helpers/string/_length.scss +39 -0
  22. data/src/decode/helpers/string/_strip-token.scss +16 -0
  23. data/src/decode/types/_bool.scss +40 -0
  24. data/src/decode/types/_list.scss +54 -0
  25. data/src/decode/types/_map.scss +78 -0
  26. data/src/decode/types/_null.scss +19 -0
  27. data/src/decode/types/_number.scss +63 -0
  28. data/src/decode/types/_string.scss +41 -0
  29. data/src/encode/api/_json.scss +17 -0
  30. data/src/encode/encode.scss +17 -0
  31. data/src/encode/helpers/_quote.scss +9 -0
  32. data/src/encode/mixins/_json.scss +34 -0
  33. data/src/encode/types/_bool.scss +9 -0
  34. data/src/encode/types/_color.scss +9 -0
  35. data/src/encode/types/_list.scss +13 -0
  36. data/src/encode/types/_map.scss +13 -0
  37. data/src/encode/types/_null.scss +9 -0
  38. data/src/encode/types/_number.scss +9 -0
  39. data/src/encode/types/_string.scss +9 -0
  40. metadata +119 -0
@@ -0,0 +1,36 @@
1
+ // Will find the first non escaped quote in a JSON String
2
+ // --------------------------------------------------------------------------------
3
+ // @param [string] $string: to search in
4
+ // --------------------------------------------------------------------------------
5
+ // @return [number] position of the last non escaped quote
6
+
7
+ @function _find-ending-quote($string){
8
+ $backslash: str-slice("\\", 1, 1); // Dirty hack to have a single backslash
9
+ $search: $string;
10
+
11
+ $end-quote-found: false;
12
+ $position: 0;
13
+
14
+
15
+ @while not $end-quote-found {
16
+ $index: str-index($search, '"');
17
+
18
+ @if not $index or $index == 0 { // No end of string found
19
+ @return $index;
20
+ }
21
+
22
+ @else {
23
+ $position: $position + $index;
24
+ }
25
+
26
+ $char-before-quote: str-slice($search, $index - 1, $index - 1);
27
+
28
+ @if $char-before-quote != $backslash {
29
+ $end-quote-found: true;
30
+ }
31
+
32
+ $search: str-slice($search, $index + 1);
33
+ }
34
+
35
+ @return $position;
36
+ }
@@ -0,0 +1,39 @@
1
+ // Parses a JSON encoded string to see if it's a CSS length
2
+ // --------------------------------------------------------------------------------
3
+ // @param [string] $string: JSON string
4
+ // --------------------------------------------------------------------------------
5
+ // @return [number|string] string or number, depending on the match
6
+
7
+ @function _length($string) {
8
+ $strings: 'px' 'cm' 'mm' '%' 'ch' 'pica' 'in' 'em' 'rem' 'pt' 'pc' 'ex' 'vw' 'vh' 'vmin' 'vmax';
9
+ $units: 1px 1cm 1mm 1% 1ch 1pica 1in 1em 1rem 1pt 1pc 1ex 1vw 1vh 1vmin 1vmax;
10
+ $number: "";
11
+ $unit: "";
12
+
13
+ @for $i from 1 through str-length($string) {
14
+ $c: str-slice($string, $i, $i);
15
+ @if $c == ' ' {
16
+ @if $number != "" {
17
+ @return $string;
18
+ }
19
+ }
20
+ @else if index('0' '1' '2' '3' '4' '5' '6' '7' '8' '9' '-' '.', $c) {
21
+ $number: $number + $c;
22
+ }
23
+ @else {
24
+ @if $number == "" {
25
+ @return $string;
26
+ }
27
+ $unit: $unit + $c;
28
+ }
29
+ }
30
+
31
+ $number: nth(_json-decode--number($number, 2), 2);
32
+ $index: index($strings, to-lower-case($unit));
33
+
34
+ @if $index and $index > 0 {
35
+ @return $number * nth($units, $index);
36
+ }
37
+
38
+ @return $string;
39
+ }
@@ -0,0 +1,16 @@
1
+ // Strip special carriage return characters
2
+ // --------------------------------------------------------------------------------
3
+ // @param [string] $string: string to parse
4
+ // @param [string] $char: char to strip
5
+ // --------------------------------------------------------------------------------
6
+ // @return [string] new string
7
+
8
+ @function _strip-token($string, $token, $replace) {
9
+
10
+ @while str-index($string, $token) and str-index($string, $token) > 0 {
11
+ $index: str-index($string, $token);
12
+ $string: str-slice($string, 1, $index - 1) + $replace + str-slice($string, $index + str-length($token));
13
+ }
14
+
15
+ @return $string;
16
+ }
@@ -0,0 +1,40 @@
1
+ // Parses a JSON encoded `true`
2
+ // --------------------------------------------------------------------------------
3
+ // @param [string] $source: JSON complete source
4
+ // @param [number] $pointer: current pointer
5
+ // --------------------------------------------------------------------------------
6
+ // @throw "Unexpected token `t`."
7
+ // --------------------------------------------------------------------------------
8
+ // @return [list|false] (new pointer, true)
9
+
10
+ @function _json-decode--true($source, $pointer) {
11
+ $length: str-length($source);
12
+ @if $length - $pointer < 2
13
+ or str-slice($source, $pointer, $pointer) != 'r'
14
+ or str-slice($source, $pointer + 1, $pointer + 1) != 'u'
15
+ or str-slice($source, $pointer + 2, $pointer + 2) != 'e' {
16
+ @return _throw("Unexpected token: `t`.", $pointer);
17
+ }
18
+ @return ($pointer + 3, true);
19
+ }
20
+
21
+ // Parses a JSON encoded `false`
22
+ // --------------------------------------------------------------------------------
23
+ // @param $source: JSON complete source
24
+ // @param $pointer: current pointer
25
+ // --------------------------------------------------------------------------------
26
+ // @throw "Unexpected token `f`."
27
+ // --------------------------------------------------------------------------------
28
+ // @return [list|false] (new pointer, false)
29
+
30
+ @function _json-decode--false($source, $pointer) {
31
+ $length: str-length($source);
32
+ @if $length - $pointer < 3
33
+ or str-slice($source, $pointer, $pointer) != 'a'
34
+ or str-slice($source, $pointer + 1, $pointer + 1) != 'l'
35
+ or str-slice($source, $pointer + 2, $pointer + 2) != 's'
36
+ or str-slice($source, $pointer + 3, $pointer + 3) != 'e' {
37
+ @return _throw("Unexpected token: `f`.", $pointer);
38
+ }
39
+ @return ($pointer + 4, false);
40
+ }
@@ -0,0 +1,54 @@
1
+ // Parses a JSON encoded array
2
+ // --------------------------------------------------------------------------------
3
+ // @param [string] $source: JSON complete source
4
+ // @param [number] $pointer: current pointer
5
+ // --------------------------------------------------------------------------------
6
+ // @throw "Unexpected comma in array literal."
7
+ // @throw "Missing comma in array literal."
8
+ // @throw "Unterminated array literal."
9
+ // --------------------------------------------------------------------------------
10
+ // @return [list|false] (new pointer, parsed list)
11
+
12
+ @function _json-decode--list($source, $pointer) {
13
+ $length: str-length($source);
14
+ $list: ();
15
+ $needs-comma: false;
16
+
17
+ @if $pointer <= $length and str-slice($source, $pointer, $pointer) == "]" {
18
+ @return ($pointer + 1, $list);
19
+ }
20
+
21
+ @while $pointer <= $length {
22
+ $token: str-slice($source, $pointer, $pointer);
23
+
24
+ @if $token == "]" {
25
+ @if not $needs-comma and length($list) != 0 {
26
+ @return _throw("Unexpected comma in array literal.", $pointer);
27
+ }
28
+
29
+ // Do it the Sass way and destruct a single item array to an element.
30
+ @return ($pointer + 1, if(length($list) == 1, nth($list, 1), $list));
31
+ }
32
+ @else if $token == " " {
33
+ $pointer: $pointer + 1;
34
+ }
35
+ @else if $token == "," {
36
+ @if not $needs-comma {
37
+ @return _throw("Unexpected comma in array literal.", $pointer);
38
+ }
39
+ $needs-comma: false;
40
+ $pointer: $pointer + 1;
41
+ }
42
+ @else {
43
+ @if $needs-comma {
44
+ @return _throw("Missing comma in array literal.", $pointer);
45
+ }
46
+ $read: _json-decode--value($source, $pointer);
47
+ $pointer: nth($read, 1);
48
+ $list: append($list, nth($read, 2));
49
+ $needs-comma: true;
50
+ }
51
+ }
52
+
53
+ @return _throw("Unterminated array literal.", $pointer);
54
+ }
@@ -0,0 +1,78 @@
1
+ // Parses a JSON encoded object
2
+ // --------------------------------------------------------------------------------
3
+ // @param [string] $source: JSON complete source
4
+ // @param [number] $pointer: current pointer
5
+ // --------------------------------------------------------------------------------
6
+ // @throw "Unexpected comma in object literal."
7
+ // @throw "Unexpected token $token in object literal."
8
+ // @throw "Missing comma in object literal."
9
+ // @throw "Unterminated object literal."
10
+ // @throw "Consuming token `:` failed."
11
+ // --------------------------------------------------------------------------------
12
+ // @return [list|false] (new pointer, map)
13
+
14
+ @function _json-decode--map($source, $pointer) {
15
+ $length: str-length($source);
16
+ $map: ();
17
+ $needs-comma: false;
18
+
19
+ // Deal with empty map
20
+ @if $pointer <= $length and str-slice($source, $pointer, $pointer) == "}" {
21
+ @return ($pointer + 1, $map);
22
+ }
23
+
24
+ @while $pointer <= $length {
25
+ $token: str-slice($source, $pointer, $pointer);
26
+ $pointer: $pointer + 1;
27
+
28
+ @if $token == "}" {
29
+ @if not $needs-comma and length($map) != 0 {
30
+ @return _throw("Unexpected comma in object literal.", $pointer);
31
+ }
32
+ @return ($pointer, $map);
33
+ }
34
+
35
+ @else if $token == " " {
36
+ // @continue;
37
+ }
38
+
39
+ @else if $token == "," {
40
+ @if not $needs-comma {
41
+ @return _throw("Unexpected comma in object literal.", $pointer);
42
+ }
43
+ $needs-comma: false;
44
+ }
45
+
46
+ @else if $token == '"' {
47
+ @if $needs-comma {
48
+ @return _throw("Missing comma in object literal.", $pointer);
49
+ }
50
+
51
+ // Read key
52
+ $read-key: _json-decode--string($source, $pointer);
53
+ $pointer: nth($read-key, 1);
54
+ $key: nth($read-key, 2);
55
+
56
+ // Remove colon
57
+ $pointer: _consume($source, $pointer, ":");
58
+ @if length($pointer) > 1 { // If consume has failed
59
+ @return _throw("Consuming token `:` failed.", 0);
60
+ }
61
+
62
+ // Read value
63
+ $read-value: _json-decode--value($source, $pointer);
64
+ $pointer: nth($read-value, 1);
65
+ $value: nth($read-value, 2);
66
+
67
+ // Add pair to map
68
+ $map: map-merge($map, ($key: $value));
69
+ $needs-comma: true;
70
+ }
71
+
72
+ @else {
73
+ @return _throw("Unexpected token `" + $token + "` in object literal.", $pointer);
74
+ }
75
+ }
76
+
77
+ @return _throw("Unterminated object literal.", $pointer);
78
+ }
@@ -0,0 +1,19 @@
1
+ // Parses a JSON encoded `null`
2
+ // --------------------------------------------------------------------------------
3
+ // @param [string] $source: JSON complete source
4
+ // @param [number] $pointer: current pointer
5
+ // --------------------------------------------------------------------------------
6
+ // @throw "Unexpected token `n`."
7
+ // --------------------------------------------------------------------------------
8
+ // @return [list|false] (new pointer, null)
9
+
10
+ @function _json-decode--null($source, $pointer) {
11
+ $length: str-length($source);
12
+ @if $length - $pointer < 2
13
+ or str-slice($source, $pointer, $pointer) != 'u'
14
+ or str-slice($source, $pointer + 1, $pointer + 1) != 'l'
15
+ or str-slice($source, $pointer + 2, $pointer + 2) != 'l' {
16
+ @return _throw("Unexpected token: `n`.", $pointer);
17
+ }
18
+ @return ($pointer + 3, null);
19
+ }
@@ -0,0 +1,63 @@
1
+ // Parses a JSON encoded number
2
+ // --------------------------------------------------------------------------------
3
+ // @param [string] $source: JSON complete source
4
+ // @param [number] $pointer: current pointer
5
+ // --------------------------------------------------------------------------------
6
+ // @throw "Unexpected token $token."
7
+ // @throw "Unexpected end of stream."
8
+ // --------------------------------------------------------------------------------
9
+ // @return [list|false] (new pointer, parsed number)
10
+
11
+ @function _json-decode--number($source, $pointer) {
12
+ $pointer: $pointer - 1; // Move back pointer to begininng of number
13
+ $allowed: '-' '0' '1' '2' '3' '4' '5' '6' '7' '8' '9'; // Allowed characted to start with
14
+ $first: str-slice($source, $pointer, $pointer); // First character of the number
15
+ $minus: $first == '-'; // Is it negative?
16
+
17
+ // Early check for errors
18
+ @if not index($allowed, $first) {
19
+ @return _throw("Unexpected token `" + $first + "`.", $pointer);
20
+ }
21
+
22
+ // Find the integer part
23
+ $find-integer: _find-integer($source, $pointer);
24
+ $pointer: nth($find-integer, 1);
25
+ $result: nth($find-integer, 2);
26
+ @if not $result { // Error occured
27
+ @return $find-integer;
28
+ }
29
+
30
+ // Find digits
31
+ @if str-slice($source, $pointer, $pointer) == '.' {
32
+ $find-digits: _find-digits($source, $pointer);
33
+ $pointer: nth($find-digits, 1);
34
+ $digits: nth($find-digits, 2);
35
+
36
+ @if $digits == null { // Empty digits, throw error
37
+ @return _throw("Unexpected end of stream.", $pointer);
38
+ }
39
+ @else if $digits == false { // Error occured, return it
40
+ @return $find-digits;
41
+ }
42
+
43
+ $result: $result + $digits;
44
+ }
45
+
46
+ // Find exponent
47
+ @if to-lower-case(str-slice($source, $pointer, $pointer)) == 'e' {
48
+ $find-exponent: _find-exponent($source, $pointer);
49
+ $pointer: nth($find-exponent, 1);
50
+ $exponent: nth($find-exponent, 2);
51
+
52
+ @if $exponent == null { // Empty exponent, throw error
53
+ @return _throw("Unexpected end of stream.", $pointer);
54
+ }
55
+ @else if $exponent == false { // Error occured, return it
56
+ @return $find-exponent;
57
+ }
58
+
59
+ $result: $result * _pow(10, $exponent);
60
+ }
61
+
62
+ @return ($pointer, if($minus, $result * -1, $result));
63
+ }
@@ -0,0 +1,41 @@
1
+ // Parses a JSON encoded string
2
+ // --------------------------------------------------------------------------------
3
+ // @param [string] $source: JSON complete source
4
+ // @param [number] $pointer: current pointer
5
+ // --------------------------------------------------------------------------------
6
+ // @throw "Unterminated string."
7
+ // --------------------------------------------------------------------------------
8
+ // @return [list|false] (new pointer, parsed string / color / length)
9
+
10
+ @function _json-decode--string($source, $pointer) {
11
+ // Check for the end of the string
12
+ $temp: str-slice($source, $pointer);
13
+ $end: _find-ending-quote($temp);
14
+ $string: "";
15
+
16
+ // If no end is found
17
+ @if not $end or $end == 0 {
18
+ @return _throw("Unterminated string.", $pointer);
19
+ }
20
+
21
+ // If string is not empty
22
+ @else if $end > 1 {
23
+ $string: str-slice($temp, 1, $end - 1);
24
+
25
+ $cr: "
26
+ ";
27
+ $string: _strip-token($string, "\r", $cr);
28
+ $string: _strip-token($string, "\n", $cr);
29
+ $string: _strip-token($string, '\\\"', '"');
30
+
31
+ // Test whether the string could be a CSS length
32
+ $string: _length($string);
33
+
34
+ // Test whether the string could be a CSS color
35
+ @if type-of($string) == string {
36
+ $string: _color($string);
37
+ }
38
+ }
39
+
40
+ @return ($pointer + $end, $string);
41
+ }
@@ -0,0 +1,17 @@
1
+ // Delay the encoding of ta literal to JSON
2
+ // to a type-specific method
3
+ // --------------------------------------------------------------------------------
4
+ // @param $value: value to be stringified
5
+ // --------------------------------------------------------------------------------
6
+ // @throw "Unknown type for $value ({x})."
7
+ // --------------------------------------------------------------------------------
8
+ // @return [string|false] JSON encoded string
9
+
10
+ @function json-encode($value) {
11
+ $type: type-of($value);
12
+ @if function_exists('_json-encode--#{$type}') {
13
+ @return call('_json-encode--#{$type}', $value);
14
+ }
15
+ @warn "Unknown type for #{$value} (#{$type}).";
16
+ @return false;
17
+ }
@@ -0,0 +1,17 @@
1
+ // Helpers
2
+ @import "helpers/quote";
3
+
4
+ // Type specific encoding functions
5
+ @import "types/bool";
6
+ @import "types/color";
7
+ @import "types/list";
8
+ @import "types/map";
9
+ @import "types/number";
10
+ @import "types/string";
11
+ @import "types/null";
12
+
13
+ // Public API
14
+ @import "api/json";
15
+
16
+ // Mixin to pass the string to the DOM
17
+ @import "mixins/json";
@@ -0,0 +1,9 @@
1
+ // Proof quote a value
2
+ // --------------------------------------------------------------------------------
3
+ // @param $value: value to be quoted
4
+ // --------------------------------------------------------------------------------
5
+ // @return [string] quoted value
6
+
7
+ @function _proof-quote($value) {
8
+ @return '"' + $value + '"';
9
+ }
@@ -0,0 +1,34 @@
1
+ // JSON.stringify a value and pass it as a font-family of head element
2
+ // --------------------------------------------------------------------------------
3
+ // @param $value: value to be stringified
4
+ // @parem $flag: output driver
5
+
6
+ @mixin json-encode($value, $flag: all) {
7
+ $flag: if(not index(all regular media comment, $flag), all, $flag);
8
+ $json: json-encode($value);
9
+
10
+ @if $flag == comment or $flag == all {
11
+ /*! json-encode: #{$json} */
12
+ }
13
+
14
+ @if $flag == regular or $flag == all {
15
+ // All browsers except IE8-
16
+ body::before {
17
+ display: none !important;
18
+ content: json-encode($value);
19
+ }
20
+
21
+ // All browsers except Opera (Presto based)
22
+ head {
23
+ font-family: json-encode($value);
24
+ }
25
+ }
26
+
27
+ @if $flag == media or $flag == all {
28
+ @media -json-encode {
29
+ json {
30
+ json: $json;
31
+ }
32
+ }
33
+ }
34
+ }
@@ -0,0 +1,9 @@
1
+ // Encode a bool to JSON
2
+ // --------------------------------------------------------------------------------
3
+ // @param $bool: bool to be encoded
4
+ // --------------------------------------------------------------------------------
5
+ // @return [bool] boolean
6
+
7
+ @function _json-encode--bool($boolean) {
8
+ @return $boolean;
9
+ }
@@ -0,0 +1,9 @@
1
+ // Encode a color to JSON
2
+ // --------------------------------------------------------------------------------
3
+ // @param $color: color to be encoded
4
+ // --------------------------------------------------------------------------------
5
+ // @return [string] encoded color
6
+
7
+ @function _json-encode--color($color) {
8
+ @return _proof-quote($color);
9
+ }
@@ -0,0 +1,13 @@
1
+ // Encode a list to JSON
2
+ // --------------------------------------------------------------------------------
3
+ // @param $list: list to be encoded
4
+ // --------------------------------------------------------------------------------
5
+ // @return [string] encoded list
6
+
7
+ @function _json-encode--list($list) {
8
+ $str: "";
9
+ @each $item in $list {
10
+ $str: $str + ', ' + json-encode($item);
11
+ }
12
+ @return '[' + str-slice($str, 3) + ']';
13
+ }
@@ -0,0 +1,13 @@
1
+ // Encode a map to JSON
2
+ // --------------------------------------------------------------------------------
3
+ // @param $map: map to be encoded
4
+ // --------------------------------------------------------------------------------
5
+ // @return [string] encoded map
6
+
7
+ @function _json-encode--map($map) {
8
+ $str: "";
9
+ @each $key, $value in $map {
10
+ $str: $str + ', ' + _proof-quote($key) + ': ' + json-encode($value);
11
+ }
12
+ @return '{' + str-slice($str, 3) + '}';
13
+ }
@@ -0,0 +1,9 @@
1
+ // Encode `null` to JSON
2
+ // --------------------------------------------------------------------------------
3
+ // @param $null: `null`
4
+ // --------------------------------------------------------------------------------
5
+ // @return [string] `null`
6
+
7
+ @function _json-encode--null($null) {
8
+ @return "null";
9
+ }
@@ -0,0 +1,9 @@
1
+ // Encode a number to JSON
2
+ // --------------------------------------------------------------------------------
3
+ // @param $number: number to be encoded
4
+ // --------------------------------------------------------------------------------
5
+ // @return [string] encoded number
6
+
7
+ @function _json-encode--number($number) {
8
+ @return if(unitless($number), $number, _proof-quote($number));
9
+ }
@@ -0,0 +1,9 @@
1
+ // Encode a string to JSON
2
+ // --------------------------------------------------------------------------------
3
+ // @param $string: string to be encoded
4
+ // --------------------------------------------------------------------------------
5
+ // @return [string] encoded string
6
+
7
+ @function _json-encode--string($string) {
8
+ @return _proof-quote($string);
9
+ }
metadata ADDED
@@ -0,0 +1,119 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: SassyJSON
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.6
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Hugo Giraudel
9
+ - Fabrice Weinberg
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2014-01-19 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: sass
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 3.3.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: 3.3.0
31
+ - !ruby/object:Gem::Dependency
32
+ name: compass
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '1.0'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '1.0'
47
+ description: Sass API for JSON
48
+ email:
49
+ - hugo.giraudel@gmail.com
50
+ - fabrice@weinberg.me
51
+ executables: []
52
+ extensions: []
53
+ extra_rdoc_files: []
54
+ files:
55
+ - README.md
56
+ - CHANGELOG.md
57
+ - lib/SassyJSON.rb
58
+ - src/decode/api/_json.scss
59
+ - src/decode/decode.scss
60
+ - src/decode/helpers/all/_throw.scss
61
+ - src/decode/helpers/all/_value.scss
62
+ - src/decode/helpers/color/_color.scss
63
+ - src/decode/helpers/color/_get-color-value.scss
64
+ - src/decode/helpers/color/_hex-to-dec.scss
65
+ - src/decode/helpers/color/_hex.scss
66
+ - src/decode/helpers/color/_hsl.scss
67
+ - src/decode/helpers/color/_rgb.scss
68
+ - src/decode/helpers/map/_consume.scss
69
+ - src/decode/helpers/number/_find-digits.scss
70
+ - src/decode/helpers/number/_find-exponent.scss
71
+ - src/decode/helpers/number/_find-integer.scss
72
+ - src/decode/helpers/number/_pow.scss
73
+ - src/decode/helpers/string/_find-ending-quote.scss
74
+ - src/decode/helpers/string/_length.scss
75
+ - src/decode/helpers/string/_strip-token.scss
76
+ - src/decode/types/_bool.scss
77
+ - src/decode/types/_list.scss
78
+ - src/decode/types/_map.scss
79
+ - src/decode/types/_null.scss
80
+ - src/decode/types/_number.scss
81
+ - src/decode/types/_string.scss
82
+ - src/encode/api/_json.scss
83
+ - src/encode/encode.scss
84
+ - src/encode/helpers/_quote.scss
85
+ - src/encode/mixins/_json.scss
86
+ - src/encode/types/_bool.scss
87
+ - src/encode/types/_color.scss
88
+ - src/encode/types/_list.scss
89
+ - src/encode/types/_map.scss
90
+ - src/encode/types/_null.scss
91
+ - src/encode/types/_number.scss
92
+ - src/encode/types/_string.scss
93
+ - src/SassyJSON.scss
94
+ homepage: https://github.com/HugoGiraudel/SassyJSON/
95
+ licenses: []
96
+ post_install_message:
97
+ rdoc_options: []
98
+ require_paths:
99
+ - lib
100
+ required_ruby_version: !ruby/object:Gem::Requirement
101
+ none: false
102
+ requirements:
103
+ - - ! '>='
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ required_rubygems_version: !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ! '>='
110
+ - !ruby/object:Gem::Version
111
+ version: 1.3.6
112
+ requirements: []
113
+ rubyforge_project: SassyJSON
114
+ rubygems_version: 1.8.24
115
+ signing_key:
116
+ specification_version: 3
117
+ summary: SassyJSON is a Sass-powered API for JSON. It provides you the classic json-encode
118
+ and json-decode directly from your Sass files.
119
+ test_files: []