Skip to content

Commit b434edd

Browse files
committed
Added sourceIndex to string node
1 parent df9a14c commit b434edd

File tree

2 files changed

+15
-15
lines changed

2 files changed

+15
-15
lines changed

lib/parse.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ module.exports = function (input) {
5050
} else if (code === singleQuote || code === doubleQuote) {
5151
next = pos;
5252
quote = code === singleQuote ? '\'' : '"';
53-
token = { type: 'string', quote: quote };
53+
token = { type: 'string', sourceIndex: pos, quote: quote };
5454
do {
5555
escape = false;
5656
next = value.indexOf(quote, next + 1);

test/parse.js

+14-14
Original file line numberDiff line numberDiff line change
@@ -123,70 +123,70 @@ var tests = [{
123123
message: 'should process empty quoted strings (")',
124124
fixture: '""',
125125
expected: [
126-
{ type: 'string', value: '', quote: '"' }
126+
{ type: 'string', sourceIndex: 0, value: '', quote: '"' }
127127
]
128128
}, {
129129
message: 'should process empty quoted strings (\')',
130130
fixture: '\'\'',
131131
expected: [
132-
{ type: 'string', value: '', quote: '\'' }
132+
{ type: 'string', sourceIndex: 0, value: '', quote: '\'' }
133133
]
134134
}, {
135135
message: 'should process escaped quotes (\')',
136136
fixture: '\'word\\\'word\'',
137137
expected: [
138-
{ type: 'string', value: 'word\\\'word', quote: '\'' }
138+
{ type: 'string', sourceIndex: 0, value: 'word\\\'word', quote: '\'' }
139139
]
140140
}, {
141141
message: 'should process escaped quotes (\')',
142142
fixture: '"word\\"word"',
143143
expected: [
144-
{ type: 'string', value: 'word\\"word', quote: '"' }
144+
{ type: 'string', sourceIndex: 0, value: 'word\\"word', quote: '"' }
145145
]
146146
}, {
147147
message: 'should process single quotes inside double quotes (\')',
148148
fixture: '"word\'word"',
149149
expected: [
150-
{ type: 'string', value: 'word\'word', quote: '"' }
150+
{ type: 'string', sourceIndex: 0, value: 'word\'word', quote: '"' }
151151
]
152152
}, {
153153
message: 'should process double quotes inside single quotes (\')',
154154
fixture: '\'word"word\'',
155155
expected: [
156-
{ type: 'string', value: 'word"word', quote: '\'' }
156+
{ type: 'string', sourceIndex: 0, value: 'word"word', quote: '\'' }
157157
]
158158
}, {
159159
message: 'should process unclosed quotes',
160160
fixture: '"word',
161161
expected: [
162-
{ type: 'string', value: 'word', quote: '"', unclosed: true }
162+
{ type: 'string', sourceIndex: 0, value: 'word', quote: '"', unclosed: true }
163163
]
164164
}, {
165165
message: 'should process unclosed quotes with ended backslash',
166166
fixture: '"word\\',
167167
expected: [
168-
{ type: 'string', value: 'word\\', quote: '"', unclosed: true }
168+
{ type: 'string', sourceIndex: 0, value: 'word\\', quote: '"', unclosed: true }
169169
]
170170
}, {
171171
message: 'should process quoted strings',
172172
fixture: '"string"',
173173
expected: [
174-
{ type: 'string', value: 'string', quote: '"' }
174+
{ type: 'string', sourceIndex: 0, value: 'string', quote: '"' }
175175
]
176176
}, {
177177
message: 'should process quoted strings and words',
178178
fixture: 'word1"string"word2',
179179
expected: [
180180
{ type: 'word', value: 'word1' },
181-
{ type: 'string', value: 'string', quote: '"' },
181+
{ type: 'string', sourceIndex: 5, value: 'string', quote: '"' },
182182
{ type: 'word', value: 'word2' }
183183
]
184184
}, {
185185
message: 'should process quoted strings and spaces',
186186
fixture: ' "string" ',
187187
expected: [
188188
{ type: 'space', sourceIndex: 0, value: ' ' },
189-
{ type: 'string', value: 'string', quote: '"' },
189+
{ type: 'string', sourceIndex: 1, value: 'string', quote: '"' },
190190
{ type: 'space', sourceIndex: 9, value: ' ' }
191191
]
192192
}, {
@@ -209,11 +209,11 @@ var tests = [{
209209
{ type: 'div', value: '/' , before: ' \t ', after: '' },
210210
{ type: 'word', value: '3' },
211211
{ type: 'space', sourceIndex: 21, value: ' ' },
212-
{ type: 'string', value: 'Open Sans', quote: '\'' },
212+
{ type: 'string', sourceIndex: 22, value: 'Open Sans', quote: '\'' },
213213
{ type: 'div', value: ',', before: '', after: ' ' },
214214
{ type: 'word', value: 'Arial' },
215215
{ type: 'div', value: ',', before: '', after: ' ' },
216-
{ type: 'string', value: 'Helvetica Neue', quote: '"' },
216+
{ type: 'string', sourceIndex: 42, value: 'Helvetica Neue', quote: '"' },
217217
{ type: 'div', value: ',', before: '', after: ' ' },
218218
{ type: 'word', value: 'sans-serif' },
219219
]
@@ -251,7 +251,7 @@ var tests = [{
251251
fixture: 'url( "/gfx/img/bg.jpg" hello )',
252252
expected: [
253253
{ type: 'function', value: 'url', before: ' ', after: ' ', nodes: [
254-
{ type: 'string', quote: '"', value: '/gfx/img/bg.jpg' },
254+
{ type: 'string', sourceIndex: 5, quote: '"', value: '/gfx/img/bg.jpg' },
255255
{ type: 'space', sourceIndex: 22, value: ' ' },
256256
{ type: 'word', value: 'hello' }
257257
] }

0 commit comments

Comments
 (0)