JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2471
  • Score
    100M100P100Q116079F
  • License MIT

JSON encode and decode functions for node-sass.

Package Exports

  • node-sass-json-functions

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (node-sass-json-functions) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

node-sass-json-functions

Build Status

JSON encode and decode functions for node-sass.

Install

npm install node-sass-json-functions --save

Usage

var sass = require('node-sass');
var jsonFns = require('node-sass-json-functions');

sass.render({
    file: './index.scss',
    functions: Object.assign({}, jsonFns)
}, function ( err, res ) {
    // ...
});

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.

Encode

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
        ),
        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],"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],"bag":"foo bar"},"qux":"rgba(255,255,255,0.5)","corgle":"#f00"};
}

Decode

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],"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, bag: foo bar), qux: rgba(255, 255, 255, 0.5), corgle: red)

API

json-encode(data, [quotes])

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

data

Type: sass.types.*
Required

Data to encode (stringify).

quotes

Type: Boolean|sass.types.Boolean
Default: true

Should output string be quoted with single quotes.

json-decode(data)

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 strings
  • Numbers are transformed to Sass numbers
  • Null values and anything unresolved is transformed to Sass null values

data

Type: sass.types.String|sass.types.Number|sass.types.Boolean|sass.types.Null

String to decode (parse).

License

MIT © Ivan Nikolić