11module . exports = ( function ( ) {
2+ var syntax ;
3+ var value ;
4+
25 function processStylesheet ( node ) {
36 var spaces ;
47 var whitespaceNode ;
58 var i ;
69
710 for ( i = node . length ; i -- ; ) {
8- whitespaceNode = node [ i ] ;
11+ whitespaceNode = node . get ( i ) ;
912
10- if ( whitespaceNode [ 0 ] !== 's' ) continue ;
13+ if ( ! whitespaceNode . is ( 's' ) ) continue ;
1114
12- spaces = whitespaceNode [ 1 ] . replace ( / \n [ \t ] + / gm, '\n' ) ;
15+ spaces = whitespaceNode . content . replace ( / \n [ \t ] + / gm, '\n' ) ;
1316
1417 if ( spaces === '' ) {
15- node . splice ( i , 1 ) ;
18+ node . content . splice ( i , 1 ) ;
1619 } else {
17- whitespaceNode [ 1 ] = spaces ;
20+ whitespaceNode . content = spaces ;
21+ }
22+ }
23+
24+ function processBlock ( x , level ) {
25+ level = level || 0 ;
26+
27+ for ( var i = 0 ; i < x . content . length ; i ++ ) {
28+ var n = x . get ( i ) ;
29+ if ( ! n ) continue ;
30+
31+
32+ if ( syntax === 'sass' && n . is ( 'block' ) ) {
33+ processSassBlock ( n , level , value ) ;
34+ }
35+
36+ // Continue only with space nodes inside {...}:
37+ if ( syntax !== 'sass' && level !== 0 && n . is ( 's' ) ) {
38+ processSpaceNode ( n , level , value ) ;
39+ }
40+
41+ if ( n . is ( 'block' ) || n . is ( 'atrulers' ) ) level ++ ;
42+
43+ processBlock ( n , level ) ;
1844 }
1945 }
46+
47+ processBlock ( node ) ;
2048 }
2149
2250 function processSassBlock ( node , level , value ) {
@@ -25,28 +53,28 @@ module.exports = (function() {
2553 var i ;
2654
2755 for ( i = node . length ; i -- ; ) {
28- whitespaceNode = node [ i ] ;
56+ whitespaceNode = node . get ( i ) ;
2957
30- if ( whitespaceNode [ 0 ] !== 's' ) continue ;
58+ if ( ! whitespaceNode . is ( 's' ) ) continue ;
3159
32- if ( whitespaceNode [ 1 ] === '\n' ) continue ;
60+ if ( whitespaceNode . content === '\n' ) continue ;
3361
34- spaces = whitespaceNode [ 1 ] . replace ( / [ \t ] / gm, '' ) ;
62+ spaces = whitespaceNode . content . replace ( / [ \t ] / gm, '' ) ;
3563 spaces += new Array ( level + 2 ) . join ( value ) ;
36- whitespaceNode [ 1 ] = spaces ;
64+ whitespaceNode . content = spaces ;
3765 }
3866 }
3967
4068 function processSpaceNode ( node , level , value ) {
4169 var spaces ;
4270
4371 // Remove all whitespaces and tabs, leave only new lines:
44- spaces = node [ 0 ] . replace ( / [ \t ] / gm, '' ) ;
72+ spaces = node . content . replace ( / [ \t ] / gm, '' ) ;
4573
4674 if ( ! spaces ) return ;
4775
4876 spaces += new Array ( level + 1 ) . join ( value ) ;
49- node [ 0 ] = spaces ;
77+ node . content = spaces ;
5078 }
5179
5280 return {
@@ -64,26 +92,16 @@ module.exports = (function() {
6492 /**
6593 * Processes tree node.
6694 *
67- * @param {String } nodeType
6895 * @param {node } node
69- * @param {Number } level
7096 */
71- process : function process ( nodeType , node , level ) {
72- var syntax = this . getSyntax ( ) ;
73- var value = this . getValue ( 'block-indent' ) ;
97+ process : function process ( node ) {
98+ if ( ! node . is ( 'stylesheet' ) ) return ;
7499
75- if ( nodeType === 'stylesheet' ) {
76- return processStylesheet ( node ) ;
77- }
100+ syntax = this . getSyntax ( ) ;
101+ value = this . getValue ( 'block-indent' ) ;
78102
79- if ( syntax === 'sass' && nodeType === 'block' ) {
80- return processSassBlock ( node , level , value ) ;
81- }
103+ processStylesheet ( node ) ;
82104
83- // Continue only with space nodes inside {...}:
84- if ( syntax !== 'sass' && level !== 0 && nodeType === 's' ) {
85- processSpaceNode ( node , level , value ) ;
86- }
87105 } ,
88106
89107 /**
0 commit comments