JSON encode and decode functions for node-sass.
npm install node-sass-functions-json --save
const sass = require('node-sass');
const jsonFunctions = require('node-sass-functions-json');
sass.render({
file: './index.scss',
functions: Object.assign({}, jsonFunctions)
}, function (error, result) {
// ...
});
Module exports object with prepared functions json-encode
and json-decode
.
If you need functions as separate entities, they are available as static properties encode
and decode
.
Input:
$list: 1, 2, "3", (4,5,6), (foo: "bar baz");
$map: (
foo: 1,
bar: (2, 3),
baz: "3 3 3",
bad: (
foo: 11,
bar: 22,
baz: (
5, 4, 6, null, 1, 1.23456789px
),
bag: "foo bar"
),
qux: rgba(255,255,255,0.5),
corgle: red
);
body {
content: json-encode($list);
content: json-encode($map);
content: json-encode($list, $quotes: false);
content: json-encode($map, $quotes: false);
}
Output:
body {
content: '[1,2,"3",[4,5,6],{"foo":"bar baz"}]';
content: '{"foo":1,"bar":[2,3],"baz":"3 3 3","bad":{"foo":11,"bar":22,"baz":[5,4,6,null,1,"1.23457px"],"bag":"foo bar"},"qux":"rgba(255,255,255,0.5)","corgle":"#f00"}';
content: [1,2,"3",[4,5,6],{"foo":"bar baz"}];
content: {"foo":1,"bar":[2,3],"baz":"3 3 3","bad":{"foo":11,"bar":22,"baz":[5,4,6,null,1,"1.23457px"],"bag":"foo bar"},"qux":"rgba(255,255,255,0.5)","corgle":"#f00"};
}
Input:
$array: '[1,2,"3",[4,5,6],{"foo":"bar baz"}]';
$object: '{"foo":1,"bar":[2,3],"baz":"3 3 3","bad":{"foo":11,"bar":22,"baz":[5,4,6,null,1,"1.23456789px"],"bag":"foo bar"},"qux":"rgba(255,255,255,0.5)","corgle":"#f00"}';
@debug json-decode($array);
@debug json-decode($object);
Output:
DEBUG: 1, 2, 3, 4, 5, 6, (foo: bar baz)
DEBUG: (foo: 1, bar: 2, 3, baz: 3 3 3, bad: (foo: 11, bar: 22, baz: 5, 4, 6, null, 1, 1.23456789px, bag: foo bar),
qux: rgba(255, 255, 255, 0.5), corgle: red)
Returns: sass.types.String
Encodes (JSON.stringify
) data
and returns Sass string.
By default, string is quoted with single quotes so that it can be easily used in standard CSS values.
-
Sass lists are transformed to arrays.
-
Sass maps are transformed to objects.
-
Sass colors are transformed to
rgba()
syntax if they have alpha value, otherwise they are transformed to hex value (and it’s shorther version if possible). -
Sass strings are transformed to strings
-
Sass numbers are transformed to numbers.
-
Sass null values and anything unresolved is transformed to null values.
Type: sass.types.*
Data to encode (stringify).
Type: Boolean|sass.types.Boolean
Default: true
Should output string be quoted with single quotes.
Returns: sass.types.*
Decodes (JSON.parse
) string
and returns one of available Sass types.
-
Arrays are transformed to Sass lists.
-
Objects are transformed to Sass maps.
-
Anything properly parsed with parse-color is transformed to Sass color.
-
Strings are transformed to Sass numbers with units if they can be properly parsed with parse-css-dimension, otherwise they are transformed to Sass strings.
-
Numbers are transformed to Sass numbers.
-
Null values and anything unresolved is transformed to Sass null values.
Type: sass.types.String|sass.types.Number|sass.types.Boolean|sass.types.Null
String to decode (parse).
- node-sass-json-functions - Thanks for inspiration.
Feel free to push your code if you agree with publishing under the MIT license.