Skip to content

Commit 68bf8df

Browse files
committed
Added sourceIndex to div node
1 parent e8a4aa0 commit 68bf8df

File tree

2 files changed

+25
-24
lines changed

2 files changed

+25
-24
lines changed

lib/parse.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,13 @@ module.exports = function (input) {
7575
// Dividers
7676
} else if (code === slash || code === comma || code === colon) {
7777
token = value[pos];
78-
pos += 1;
79-
code = value.charCodeAt(pos);
8078

81-
tokens.push({ type: 'div', value: token, before: before, after: '' });
79+
tokens.push({ type: 'div', sourceIndex: pos - before.length, value: token, before: before, after: '' });
8280
before = '';
8381

82+
pos += 1;
83+
code = value.charCodeAt(pos);
84+
8485
// Open parentheses
8586
} else if (openParentheses === code) {
8687
// Whitespaces after open parentheses

test/parse.js

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -84,40 +84,40 @@ var tests = [{
8484
message: 'should process divider (/)',
8585
fixture: '/',
8686
expected: [
87-
{ type: 'div', value: '/', before: '', after: '' }
87+
{ type: 'div', sourceIndex: 0, value: '/', before: '', after: '' }
8888
]
8989
}, {
9090
message: 'should process divider (:)',
9191
fixture: ':',
9292
expected: [
93-
{ type: 'div', value: ':', before: '', after: '' }
93+
{ type: 'div', sourceIndex: 0, value: ':', before: '', after: '' }
9494
]
9595
}, {
9696
message: 'should process divider (,)',
9797
fixture: ',',
9898
expected: [
99-
{ type: 'div', value: ',', before: '', after: '' }
99+
{ type: 'div', sourceIndex: 0, value: ',', before: '', after: '' }
100100
]
101101
}, {
102102
message: 'should process complex divider',
103103
fixture: ' , ',
104104
expected: [
105-
{ type: 'div', value: ',', before: ' ', after: ' ' }
105+
{ type: 'div', sourceIndex: 0, value: ',', before: ' ', after: ' ' }
106106
]
107107
}, {
108108
message: 'should process divider in function',
109109
fixture: '( , )',
110110
expected: [
111111
{ type: 'function', sourceIndex: 0, value: '', before: ' ', after: ' ', nodes: [
112-
{ type: 'div', value: ',', before: '', after: '' }
112+
{ type: 'div', sourceIndex: 2, value: ',', before: '', after: '' }
113113
] }
114114
]
115115
}, {
116116
message: 'should process two spaced divider',
117117
fixture: ' , : ',
118118
expected: [
119-
{ type: 'div', value: ',', before: ' ', after: ' ' },
120-
{ type: 'div', value: ':', before: '', after: ' ' }
119+
{ type: 'div', sourceIndex: 0, value: ',', before: ' ', after: ' ' },
120+
{ type: 'div', sourceIndex: 3, value: ':', before: '', after: ' ' }
121121
]
122122
}, {
123123
message: 'should process empty quoted strings (")',
@@ -206,15 +206,15 @@ var tests = [{
206206
{ type: 'word', sourceIndex: 5, value: 'italic' },
207207
{ type: 'space', sourceIndex: 11, value: ' ' },
208208
{ type: 'word', sourceIndex: 12, value: '12px' },
209-
{ type: 'div', value: '/' , before: ' \t ', after: '' },
209+
{ type: 'div', sourceIndex: 16, value: '/' , before: ' \t ', after: '' },
210210
{ type: 'word', sourceIndex: 20, value: '3' },
211211
{ type: 'space', sourceIndex: 21, value: ' ' },
212212
{ type: 'string', sourceIndex: 22, value: 'Open Sans', quote: '\'' },
213-
{ type: 'div', value: ',', before: '', after: ' ' },
213+
{ type: 'div', sourceIndex: 33, value: ',', before: '', after: ' ' },
214214
{ type: 'word', sourceIndex: 35, value: 'Arial' },
215-
{ type: 'div', value: ',', before: '', after: ' ' },
215+
{ type: 'div', sourceIndex: 40, value: ',', before: '', after: ' ' },
216216
{ type: 'string', sourceIndex: 42, value: 'Helvetica Neue', quote: '"' },
217-
{ type: 'div', value: ',', before: '', after: ' ' },
217+
{ type: 'div', sourceIndex: 58, value: ',', before: '', after: ' ' },
218218
{ type: 'word', sourceIndex: 60, value: 'sans-serif' },
219219
]
220220
}, {
@@ -223,9 +223,9 @@ var tests = [{
223223
expected: [
224224
{ type: 'function', sourceIndex: 0, value: 'rgba', before: ' ', after: ' ', nodes: [
225225
{ type: 'word', sourceIndex: 6, value: '29' },
226-
{ type: 'div', value: ',', before: '', after: ' ' },
226+
{ type: 'div', sourceIndex: 8, value: ',', before: '', after: ' ' },
227227
{ type: 'word', sourceIndex: 10, value: '439' },
228-
{ type: 'div', value: ',', before: ' ', after: ' ' },
228+
{ type: 'div', sourceIndex: 13, value: ',', before: ' ', after: ' ' },
229229
{ type: 'word', sourceIndex: 16, value: '29' },
230230
] }
231231
]
@@ -269,7 +269,7 @@ var tests = [{
269269
{ type: 'space', sourceIndex: 14, value: ' ' },
270270
{ type: 'word', sourceIndex: 15, value: '100vw' }
271271
] },
272-
{ type: 'div', value: '/', before: ' ', after: ' ' },
272+
{ type: 'div', sourceIndex: 21, value: '/', before: ' ', after: ' ' },
273273
{ type: 'word', sourceIndex: 24, value: '2' }
274274
] },
275275
{ type: 'space', sourceIndex: 26, value: ' ' },
@@ -284,15 +284,15 @@ var tests = [{
284284
expected: [
285285
{ type: 'function', sourceIndex: 0, value: '', before: '', after: '', nodes: [
286286
{ type: 'word', sourceIndex: 1, value: 'min-width' },
287-
{ type: 'div', value: ':', before: '', after: ' ' },
287+
{ type: 'div', sourceIndex: 10, value: ':', before: '', after: ' ' },
288288
{ type: 'word', sourceIndex: 12, value: '700px' }
289289
] },
290290
{ type: 'space', sourceIndex: 18, value: ' ' },
291291
{ type: 'word', sourceIndex: 19, value: 'and' },
292292
{ type: 'space', sourceIndex: 22, value: ' ' },
293293
{ type: 'function', sourceIndex: 23, value: '', before: '', after: '', nodes: [
294294
{ type: 'word', sourceIndex: 24, value: 'orientation' },
295-
{ type: 'div', value: ':', before: '', after: ' ' },
295+
{ type: 'div', sourceIndex: 35, value: ':', before: '', after: ' ' },
296296
{ type: 'word', sourceIndex: 37, value: '\\$landscape' }
297297
] }
298298
]
@@ -312,19 +312,19 @@ var tests = [{
312312
{ type: 'function', sourceIndex: 4, value: 'fn2', before: '', after: '', nodes: [
313313
{ type: 'word', sourceIndex: 8, value: '255' }
314314
] },
315-
{ type: 'div', value: ',', before: '', after: ' ' },
315+
{ type: 'div', sourceIndex: 12, value: ',', before: '', after: ' ' },
316316
{ type: 'function', sourceIndex: 14, value: 'fn3', before: '', after: '', nodes: [
317317
{ type: 'word', sourceIndex: 18, value: '.2' }
318318
] },
319319
] },
320-
{ type: 'div', value: ',', before: '', after: ' ' },
320+
{ type: 'div', sourceIndex: 22, value: ',', before: '', after: ' ' },
321321
{ type: 'function', sourceIndex: 24, value: 'fn4', before: '', after: '', nodes: [
322322
{ type: 'function', sourceIndex: 28, value: 'fn5', before: '', after: '', nodes: [
323323
{ type: 'word', sourceIndex: 32, value: '255' },
324-
{ type: 'div', value: ',', before: '', after: '' },
324+
{ type: 'div', sourceIndex: 35, value: ',', before: '', after: '' },
325325
{ type: 'word', sourceIndex: 36, value: '.2' }
326326
] },
327-
{ type: 'div', value: ',', before: '', after: ' '},
327+
{ type: 'div', sourceIndex: 39, value: ',', before: '', after: ' '},
328328
{ type: 'word', sourceIndex: 41, value: 'fn6' }
329329
] }
330330
]
@@ -378,7 +378,7 @@ var tests = [{
378378
{ type: 'function', sourceIndex: 0, value: 'url', before: '', after: '', nodes: [
379379
{ type: 'word', sourceIndex: 4, value: 'foo/bar.jpg' }
380380
] },
381-
{ type: 'div', value: ',', before: '', after: ' ' },
381+
{ type: 'div', sourceIndex: 16, value: ',', before: '', after: ' ' },
382382
{ type: 'function', sourceIndex: 18, value: 'url', before: '', after: '', nodes: [
383383
{ type: 'word', sourceIndex: 22, value: 'http://website.com/img.jpg' }
384384
] },

0 commit comments

Comments
 (0)