JSON encode and decode functions for node-sass
MIT License
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).
Feel free to push your code if you agree with publishing under the MIT license.