File: index.js

package info (click to toggle)
node-postcss-value-parser 3.3.0-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 148 kB
  • sloc: makefile: 4; sh: 2
file content (92 lines) | stat: -rw-r--r-- 3,226 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
var test = require('tape');
var parser = require('..');

test('ValueParser', function (tp) {
    tp.test('i/o', function (t) {
        var tests = [
            ' rgba( 34 , 45 , 54, .5 ) ',
            'w1 w2 w6 \n f(4) ( ) () \t "s\'t" \'st\\"2\''
        ];
        t.plan(tests.length);

        tests.forEach(function (item) {
            t.equal(item, parser(item).walk(function () {}).toString(), JSON.stringify(item));
        });
    });

    tp.test('walk', function (t) {
        t.plan(4);
        var result;


        result = [];

        parser('fn( ) fn2( fn3())').walk(function (node) {
            if (node.type === 'function') {
                result.push(node);
            }
        });

        t.deepEqual(result, [
            { type: 'function', sourceIndex: 0, value: 'fn', before: ' ', after: '', nodes: [] },
            { type: 'function', sourceIndex: 6, value: 'fn2', before: ' ', after: '', nodes: [
                { type: 'function', sourceIndex: 11, value: 'fn3', before: '', after: '', nodes: [] }
            ] },
            { type: 'function', sourceIndex: 11, value: 'fn3', before: '', after: '', nodes: [] }
        ], 'should process all functions');


        result = [];

        parser('fn( ) fn2( fn3())').walk(function (node) {
            if (node.type === 'function') {
                result.push(node);
                if (node.value === 'fn2') {
                    return false;
                }
            }
            return true;
        });

        t.deepEqual(result, [
            { type: 'function', sourceIndex: 0, value: 'fn', before: ' ', after: '', nodes: [] },
            { type: 'function', sourceIndex: 6, value: 'fn2', before: ' ', after: '', nodes: [
                { type: 'function', sourceIndex: 11, value: 'fn3', before: '', after: '', nodes: [] }
            ] }
        ], 'shouldn\'t process functions after falsy callback');


        result = [];

        parser('fn( ) fn2( fn3())').walk(function (node) {
            if (node.type === 'function' && node.value === 'fn2') {
                node.type = 'word';
            }
            result.push(node);
        });

        t.deepEqual(result, [
            { type: 'function', sourceIndex: 0, value: 'fn', before: ' ', after: '', nodes: [] },
            { type: 'space', sourceIndex: 5, value: ' ' },
            { type: 'word', sourceIndex: 6, value: 'fn2', before: ' ', after: '', nodes: [
                { type: 'function', sourceIndex: 11, value: 'fn3', before: '', after: '', nodes: [] }
            ] }
        ], 'shouldn\'t process nodes with defined non-function type');


        result = [];

        parser('fn2( fn3())').walk(function (node) {
            if (node.type === 'function') {
                result.push(node);
            }
        }, true);

        t.deepEqual(result, [
            { type: 'function', sourceIndex: 5, value: 'fn3', before: '', after: '', nodes: [] },
            { type: 'function', sourceIndex: 0, value: 'fn2', before: ' ', after: '', nodes: [
                { type: 'function', sourceIndex: 5, value: 'fn3', before: '', after: '', nodes: [] }
            ] }
        ], 'should process all functions with reverse mode');
    });
});