sassc 1.11.1 → 1.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +2 -2
- data/README.md +3 -2
- data/ext/libsass/Makefile.conf +2 -1
- data/ext/libsass/appveyor.yml +10 -5
- data/ext/libsass/docs/dev-ast-memory.md +223 -0
- data/ext/libsass/include/sass/base.h +2 -0
- data/ext/libsass/script/bootstrap +7 -4
- data/ext/libsass/script/ci-build-libsass +3 -3
- data/ext/libsass/script/ci-install-compiler +2 -0
- data/ext/libsass/script/ci-report-coverage +2 -1
- data/ext/libsass/script/test-leaks.pl +103 -0
- data/ext/libsass/src/ast.cpp +621 -495
- data/ext/libsass/src/ast.hpp +801 -367
- data/ext/libsass/src/ast_def_macros.hpp +5 -5
- data/ext/libsass/src/ast_fwd_decl.hpp +312 -14
- data/ext/libsass/src/bind.cpp +54 -51
- data/ext/libsass/src/bind.hpp +3 -7
- data/ext/libsass/src/check_nesting.cpp +117 -120
- data/ext/libsass/src/check_nesting.hpp +38 -34
- data/ext/libsass/src/color_maps.cpp +3 -3
- data/ext/libsass/src/color_maps.hpp +3 -3
- data/ext/libsass/src/context.cpp +33 -34
- data/ext/libsass/src/context.hpp +12 -14
- data/ext/libsass/src/cssize.cpp +200 -228
- data/ext/libsass/src/cssize.hpp +49 -49
- data/ext/libsass/src/debugger.hpp +260 -241
- data/ext/libsass/src/emitter.cpp +6 -6
- data/ext/libsass/src/emitter.hpp +7 -7
- data/ext/libsass/src/environment.cpp +2 -2
- data/ext/libsass/src/environment.hpp +0 -2
- data/ext/libsass/src/error_handling.cpp +5 -5
- data/ext/libsass/src/error_handling.hpp +12 -12
- data/ext/libsass/src/eval.cpp +412 -401
- data/ext/libsass/src/eval.hpp +61 -62
- data/ext/libsass/src/expand.cpp +223 -204
- data/ext/libsass/src/expand.hpp +42 -42
- data/ext/libsass/src/extend.cpp +198 -201
- data/ext/libsass/src/extend.hpp +12 -14
- data/ext/libsass/src/file.hpp +4 -5
- data/ext/libsass/src/functions.cpp +413 -418
- data/ext/libsass/src/functions.hpp +7 -10
- data/ext/libsass/src/inspect.cpp +115 -109
- data/ext/libsass/src/inspect.hpp +69 -69
- data/ext/libsass/src/listize.cpp +31 -33
- data/ext/libsass/src/listize.hpp +8 -10
- data/ext/libsass/src/memory/SharedPtr.cpp +116 -0
- data/ext/libsass/src/memory/SharedPtr.hpp +202 -0
- data/ext/libsass/src/node.cpp +45 -43
- data/ext/libsass/src/node.hpp +15 -15
- data/ext/libsass/src/operation.hpp +136 -136
- data/ext/libsass/src/output.cpp +48 -49
- data/ext/libsass/src/output.hpp +14 -14
- data/ext/libsass/src/parser.cpp +530 -554
- data/ext/libsass/src/parser.hpp +91 -96
- data/ext/libsass/src/prelexer.cpp +13 -10
- data/ext/libsass/src/remove_placeholders.cpp +25 -21
- data/ext/libsass/src/remove_placeholders.hpp +7 -7
- data/ext/libsass/src/sass2scss.cpp +2 -1
- data/ext/libsass/src/sass_context.cpp +125 -107
- data/ext/libsass/src/sass_context.hpp +1 -1
- data/ext/libsass/src/sass_util.hpp +5 -5
- data/ext/libsass/src/sass_values.cpp +27 -27
- data/ext/libsass/src/source_map.cpp +2 -2
- data/ext/libsass/src/source_map.hpp +2 -2
- data/ext/libsass/src/subset_map.cpp +57 -0
- data/ext/libsass/src/subset_map.hpp +8 -76
- data/ext/libsass/src/to_c.cpp +13 -13
- data/ext/libsass/src/to_c.hpp +14 -14
- data/ext/libsass/src/to_value.cpp +20 -20
- data/ext/libsass/src/to_value.hpp +20 -21
- data/ext/libsass/src/util.cpp +55 -88
- data/ext/libsass/src/util.hpp +9 -13
- data/ext/libsass/src/values.cpp +27 -26
- data/ext/libsass/src/values.hpp +2 -2
- data/ext/libsass/test/test_subset_map.cpp +69 -69
- data/ext/libsass/win/libsass.targets +3 -2
- data/ext/libsass/win/libsass.vcxproj.filters +9 -6
- data/lib/sassc/version.rb +1 -1
- data/sassc.gemspec +0 -1
- data/test/native_test.rb +1 -1
- metadata +7 -5
- data/ext/libsass/src/ast_factory.hpp +0 -92
- data/ext/libsass/src/memory_manager.cpp +0 -77
- data/ext/libsass/src/memory_manager.hpp +0 -48
@@ -4,23 +4,20 @@
|
|
4
4
|
#include "listize.hpp"
|
5
5
|
#include "position.hpp"
|
6
6
|
#include "environment.hpp"
|
7
|
+
#include "ast_fwd_decl.hpp"
|
7
8
|
#include "sass/functions.h"
|
8
9
|
|
9
|
-
#define BUILT_IN(name)
|
10
|
-
name(Env& env, Env& d_env, Context& ctx, Signature sig, ParserState pstate, Backtrace* backtrace, std::vector<
|
10
|
+
#define BUILT_IN(name) Expression_Ptr \
|
11
|
+
name(Env& env, Env& d_env, Context& ctx, Signature sig, ParserState pstate, Backtrace* backtrace, std::vector<Selector_List_Obj> selector_stack)
|
11
12
|
|
12
13
|
namespace Sass {
|
13
|
-
class Context;
|
14
14
|
struct Backtrace;
|
15
|
-
|
16
|
-
class Expression;
|
17
|
-
class Definition;
|
18
|
-
typedef Environment<AST_Node*> Env;
|
15
|
+
typedef Environment<AST_Node_Obj> Env;
|
19
16
|
typedef const char* Signature;
|
20
|
-
typedef
|
17
|
+
typedef Expression_Ptr (*Native_Function)(Env&, Env&, Context&, Signature, ParserState, Backtrace*, std::vector<Selector_List_Obj>);
|
21
18
|
|
22
|
-
|
23
|
-
|
19
|
+
Definition_Ptr make_native_function(Signature, Native_Function, Context& ctx);
|
20
|
+
Definition_Ptr make_c_function(Sass_Function_Entry c_func, Context& ctx);
|
24
21
|
|
25
22
|
std::string function_name(Signature);
|
26
23
|
|
data/ext/libsass/src/inspect.cpp
CHANGED
@@ -21,7 +21,7 @@ namespace Sass {
|
|
21
21
|
Inspect::~Inspect() { }
|
22
22
|
|
23
23
|
// statements
|
24
|
-
void Inspect::operator()(
|
24
|
+
void Inspect::operator()(Block_Ptr block)
|
25
25
|
{
|
26
26
|
if (!block->is_root()) {
|
27
27
|
add_open_mapping(block);
|
@@ -39,19 +39,23 @@ namespace Sass {
|
|
39
39
|
|
40
40
|
}
|
41
41
|
|
42
|
-
void Inspect::operator()(
|
42
|
+
void Inspect::operator()(Ruleset_Ptr ruleset)
|
43
43
|
{
|
44
|
-
ruleset->selector()
|
45
|
-
|
44
|
+
if (ruleset->selector()) {
|
45
|
+
ruleset->selector()->perform(this);
|
46
|
+
}
|
47
|
+
if (ruleset->block()) {
|
48
|
+
ruleset->block()->perform(this);
|
49
|
+
}
|
46
50
|
}
|
47
51
|
|
48
|
-
void Inspect::operator()(
|
52
|
+
void Inspect::operator()(Keyframe_Rule_Ptr rule)
|
49
53
|
{
|
50
|
-
if (rule->
|
54
|
+
if (rule->name()) rule->name()->perform(this);
|
51
55
|
if (rule->block()) rule->block()->perform(this);
|
52
56
|
}
|
53
57
|
|
54
|
-
void Inspect::operator()(
|
58
|
+
void Inspect::operator()(Bubble_Ptr bubble)
|
55
59
|
{
|
56
60
|
append_indentation();
|
57
61
|
append_token("::BUBBLE", bubble);
|
@@ -60,7 +64,7 @@ namespace Sass {
|
|
60
64
|
append_scope_closer();
|
61
65
|
}
|
62
66
|
|
63
|
-
void Inspect::operator()(
|
67
|
+
void Inspect::operator()(Media_Block_Ptr media_block)
|
64
68
|
{
|
65
69
|
append_indentation();
|
66
70
|
append_token("@media", media_block);
|
@@ -71,7 +75,7 @@ namespace Sass {
|
|
71
75
|
media_block->block()->perform(this);
|
72
76
|
}
|
73
77
|
|
74
|
-
void Inspect::operator()(
|
78
|
+
void Inspect::operator()(Supports_Block_Ptr feature_block)
|
75
79
|
{
|
76
80
|
append_indentation();
|
77
81
|
append_token("@supports", feature_block);
|
@@ -80,7 +84,7 @@ namespace Sass {
|
|
80
84
|
feature_block->block()->perform(this);
|
81
85
|
}
|
82
86
|
|
83
|
-
void Inspect::operator()(
|
87
|
+
void Inspect::operator()(At_Root_Block_Ptr at_root_block)
|
84
88
|
{
|
85
89
|
append_indentation();
|
86
90
|
append_token("@at-root ", at_root_block);
|
@@ -89,7 +93,7 @@ namespace Sass {
|
|
89
93
|
at_root_block->block()->perform(this);
|
90
94
|
}
|
91
95
|
|
92
|
-
void Inspect::operator()(
|
96
|
+
void Inspect::operator()(Directive_Ptr at_rule)
|
93
97
|
{
|
94
98
|
append_indentation();
|
95
99
|
append_token(at_rule->keyword(), at_rule);
|
@@ -112,7 +116,7 @@ namespace Sass {
|
|
112
116
|
}
|
113
117
|
}
|
114
118
|
|
115
|
-
void Inspect::operator()(
|
119
|
+
void Inspect::operator()(Declaration_Ptr dec)
|
116
120
|
{
|
117
121
|
if (dec->value()->concrete_type() == Expression::NULL_VAL) return;
|
118
122
|
bool was_decl = in_declaration;
|
@@ -120,13 +124,14 @@ namespace Sass {
|
|
120
124
|
if (output_style() == NESTED)
|
121
125
|
indentation += dec->tabs();
|
122
126
|
append_indentation();
|
123
|
-
dec->property()
|
127
|
+
if (dec->property())
|
128
|
+
dec->property()->perform(this);
|
124
129
|
append_colon_separator();
|
125
130
|
|
126
131
|
if (dec->value()->concrete_type() == Expression::SELECTOR) {
|
127
|
-
|
128
|
-
|
129
|
-
|
132
|
+
Listize listize;
|
133
|
+
Expression_Obj ls = dec->value()->perform(&listize);
|
134
|
+
ls->perform(this);
|
130
135
|
} else {
|
131
136
|
dec->value()->perform(this);
|
132
137
|
}
|
@@ -141,7 +146,7 @@ namespace Sass {
|
|
141
146
|
in_declaration = was_decl;
|
142
147
|
}
|
143
148
|
|
144
|
-
void Inspect::operator()(
|
149
|
+
void Inspect::operator()(Assignment_Ptr assn)
|
145
150
|
{
|
146
151
|
append_token(assn->variable(), assn);
|
147
152
|
append_colon_separator();
|
@@ -153,7 +158,7 @@ namespace Sass {
|
|
153
158
|
append_delimiter();
|
154
159
|
}
|
155
160
|
|
156
|
-
void Inspect::operator()(
|
161
|
+
void Inspect::operator()(Import_Ptr import)
|
157
162
|
{
|
158
163
|
if (!import->urls().empty()) {
|
159
164
|
append_token("@import", import);
|
@@ -161,9 +166,9 @@ namespace Sass {
|
|
161
166
|
|
162
167
|
import->urls().front()->perform(this);
|
163
168
|
if (import->urls().size() == 1) {
|
164
|
-
if (import->
|
169
|
+
if (&import->import_queries()) {
|
165
170
|
append_mandatory_space();
|
166
|
-
import->
|
171
|
+
import->import_queries()->perform(this);
|
167
172
|
}
|
168
173
|
}
|
169
174
|
append_delimiter();
|
@@ -174,9 +179,9 @@ namespace Sass {
|
|
174
179
|
|
175
180
|
import->urls()[i]->perform(this);
|
176
181
|
if (import->urls().size() - 1 == i) {
|
177
|
-
if (import->
|
182
|
+
if (&import->import_queries()) {
|
178
183
|
append_mandatory_space();
|
179
|
-
import->
|
184
|
+
import->import_queries()->perform(this);
|
180
185
|
}
|
181
186
|
}
|
182
187
|
append_delimiter();
|
@@ -184,7 +189,7 @@ namespace Sass {
|
|
184
189
|
}
|
185
190
|
}
|
186
191
|
|
187
|
-
void Inspect::operator()(
|
192
|
+
void Inspect::operator()(Import_Stub_Ptr import)
|
188
193
|
{
|
189
194
|
append_indentation();
|
190
195
|
append_token("@import", import);
|
@@ -193,7 +198,7 @@ namespace Sass {
|
|
193
198
|
append_delimiter();
|
194
199
|
}
|
195
200
|
|
196
|
-
void Inspect::operator()(
|
201
|
+
void Inspect::operator()(Warning_Ptr warning)
|
197
202
|
{
|
198
203
|
append_indentation();
|
199
204
|
append_token("@warn", warning);
|
@@ -202,7 +207,7 @@ namespace Sass {
|
|
202
207
|
append_delimiter();
|
203
208
|
}
|
204
209
|
|
205
|
-
void Inspect::operator()(
|
210
|
+
void Inspect::operator()(Error_Ptr error)
|
206
211
|
{
|
207
212
|
append_indentation();
|
208
213
|
append_token("@error", error);
|
@@ -211,7 +216,7 @@ namespace Sass {
|
|
211
216
|
append_delimiter();
|
212
217
|
}
|
213
218
|
|
214
|
-
void Inspect::operator()(
|
219
|
+
void Inspect::operator()(Debug_Ptr debug)
|
215
220
|
{
|
216
221
|
append_indentation();
|
217
222
|
append_token("@debug", debug);
|
@@ -220,14 +225,14 @@ namespace Sass {
|
|
220
225
|
append_delimiter();
|
221
226
|
}
|
222
227
|
|
223
|
-
void Inspect::operator()(
|
228
|
+
void Inspect::operator()(Comment_Ptr comment)
|
224
229
|
{
|
225
230
|
in_comment = true;
|
226
231
|
comment->text()->perform(this);
|
227
232
|
in_comment = false;
|
228
233
|
}
|
229
234
|
|
230
|
-
void Inspect::operator()(
|
235
|
+
void Inspect::operator()(If_Ptr cond)
|
231
236
|
{
|
232
237
|
append_indentation();
|
233
238
|
append_token("@if", cond);
|
@@ -242,7 +247,7 @@ namespace Sass {
|
|
242
247
|
}
|
243
248
|
}
|
244
249
|
|
245
|
-
void Inspect::operator()(
|
250
|
+
void Inspect::operator()(For_Ptr loop)
|
246
251
|
{
|
247
252
|
append_indentation();
|
248
253
|
append_token("@for", loop);
|
@@ -255,7 +260,7 @@ namespace Sass {
|
|
255
260
|
loop->block()->perform(this);
|
256
261
|
}
|
257
262
|
|
258
|
-
void Inspect::operator()(
|
263
|
+
void Inspect::operator()(Each_Ptr loop)
|
259
264
|
{
|
260
265
|
append_indentation();
|
261
266
|
append_token("@each", loop);
|
@@ -270,7 +275,7 @@ namespace Sass {
|
|
270
275
|
loop->block()->perform(this);
|
271
276
|
}
|
272
277
|
|
273
|
-
void Inspect::operator()(
|
278
|
+
void Inspect::operator()(While_Ptr loop)
|
274
279
|
{
|
275
280
|
append_indentation();
|
276
281
|
append_token("@while", loop);
|
@@ -279,7 +284,7 @@ namespace Sass {
|
|
279
284
|
loop->block()->perform(this);
|
280
285
|
}
|
281
286
|
|
282
|
-
void Inspect::operator()(
|
287
|
+
void Inspect::operator()(Return_Ptr ret)
|
283
288
|
{
|
284
289
|
append_indentation();
|
285
290
|
append_token("@return", ret);
|
@@ -288,7 +293,7 @@ namespace Sass {
|
|
288
293
|
append_delimiter();
|
289
294
|
}
|
290
295
|
|
291
|
-
void Inspect::operator()(
|
296
|
+
void Inspect::operator()(Extension_Ptr extend)
|
292
297
|
{
|
293
298
|
append_indentation();
|
294
299
|
append_token("@extend", extend);
|
@@ -297,7 +302,7 @@ namespace Sass {
|
|
297
302
|
append_delimiter();
|
298
303
|
}
|
299
304
|
|
300
|
-
void Inspect::operator()(
|
305
|
+
void Inspect::operator()(Definition_Ptr def)
|
301
306
|
{
|
302
307
|
append_indentation();
|
303
308
|
if (def->type() == Definition::MIXIN) {
|
@@ -312,7 +317,7 @@ namespace Sass {
|
|
312
317
|
def->block()->perform(this);
|
313
318
|
}
|
314
319
|
|
315
|
-
void Inspect::operator()(
|
320
|
+
void Inspect::operator()(Mixin_Call_Ptr call)
|
316
321
|
{
|
317
322
|
append_indentation();
|
318
323
|
append_token("@include", call);
|
@@ -328,14 +333,14 @@ namespace Sass {
|
|
328
333
|
if (!call->block()) append_delimiter();
|
329
334
|
}
|
330
335
|
|
331
|
-
void Inspect::operator()(
|
336
|
+
void Inspect::operator()(Content_Ptr content)
|
332
337
|
{
|
333
338
|
append_indentation();
|
334
339
|
append_token("@content", content);
|
335
340
|
append_delimiter();
|
336
341
|
}
|
337
342
|
|
338
|
-
void Inspect::operator()(
|
343
|
+
void Inspect::operator()(Map_Ptr map)
|
339
344
|
{
|
340
345
|
if (output_style() == TO_SASS && map->empty()) {
|
341
346
|
append_string("()");
|
@@ -355,7 +360,7 @@ namespace Sass {
|
|
355
360
|
append_string(")");
|
356
361
|
}
|
357
362
|
|
358
|
-
void Inspect::operator()(
|
363
|
+
void Inspect::operator()(List_Ptr list)
|
359
364
|
{
|
360
365
|
if (output_style() == TO_SASS && list->empty()) {
|
361
366
|
append_string("()");
|
@@ -373,9 +378,8 @@ namespace Sass {
|
|
373
378
|
if (output_style() == TO_SASS &&
|
374
379
|
list->length() == 1 &&
|
375
380
|
!list->from_selector() &&
|
376
|
-
!
|
377
|
-
!
|
378
|
-
!dynamic_cast<CommaSequence_Selector*>((*list)[0])) {
|
381
|
+
!SASS_MEMORY_CAST(List, list->at(0)) &&
|
382
|
+
!SASS_MEMORY_CAST(Selector_List, list->at(0))) {
|
379
383
|
append_string("(");
|
380
384
|
}
|
381
385
|
else if (!in_declaration && (list->separator() == SASS_HASH ||
|
@@ -391,11 +395,11 @@ namespace Sass {
|
|
391
395
|
for (size_t i = 0, L = list->size(); i < L; ++i) {
|
392
396
|
if (list->separator() == SASS_HASH)
|
393
397
|
{ sep[0] = i % 2 ? ':' : ','; }
|
394
|
-
|
398
|
+
Expression_Obj list_item = list->at(i);
|
395
399
|
if (output_style() != TO_SASS) {
|
396
400
|
if (list_item->is_invisible()) {
|
397
401
|
// this fixes an issue with "" in a list
|
398
|
-
if (!
|
402
|
+
if (!SASS_MEMORY_CAST(String_Constant, list_item)) {
|
399
403
|
continue;
|
400
404
|
}
|
401
405
|
}
|
@@ -415,9 +419,8 @@ namespace Sass {
|
|
415
419
|
if (output_style() == TO_SASS &&
|
416
420
|
list->length() == 1 &&
|
417
421
|
!list->from_selector() &&
|
418
|
-
!
|
419
|
-
!
|
420
|
-
!dynamic_cast<CommaSequence_Selector*>((*list)[0])) {
|
422
|
+
!SASS_MEMORY_CAST(List, list->at(0)) &&
|
423
|
+
!SASS_MEMORY_CAST(Selector_List, list->at(0))) {
|
421
424
|
append_string(",)");
|
422
425
|
}
|
423
426
|
else if (!in_declaration && (list->separator() == SASS_HASH ||
|
@@ -429,7 +432,7 @@ namespace Sass {
|
|
429
432
|
|
430
433
|
}
|
431
434
|
|
432
|
-
void Inspect::operator()(
|
435
|
+
void Inspect::operator()(Binary_Expression_Ptr expr)
|
433
436
|
{
|
434
437
|
expr->left()->perform(this);
|
435
438
|
if ( in_media_block ||
|
@@ -466,36 +469,36 @@ namespace Sass {
|
|
466
469
|
expr->right()->perform(this);
|
467
470
|
}
|
468
471
|
|
469
|
-
void Inspect::operator()(
|
472
|
+
void Inspect::operator()(Unary_Expression_Ptr expr)
|
470
473
|
{
|
471
474
|
if (expr->type() == Unary_Expression::PLUS) append_string("+");
|
472
475
|
else append_string("-");
|
473
476
|
expr->operand()->perform(this);
|
474
477
|
}
|
475
478
|
|
476
|
-
void Inspect::operator()(
|
479
|
+
void Inspect::operator()(Function_Call_Ptr call)
|
477
480
|
{
|
478
481
|
append_token(call->name(), call);
|
479
482
|
call->arguments()->perform(this);
|
480
483
|
}
|
481
484
|
|
482
|
-
void Inspect::operator()(
|
485
|
+
void Inspect::operator()(Function_Call_Schema_Ptr call)
|
483
486
|
{
|
484
487
|
call->name()->perform(this);
|
485
488
|
call->arguments()->perform(this);
|
486
489
|
}
|
487
490
|
|
488
|
-
void Inspect::operator()(
|
491
|
+
void Inspect::operator()(Variable_Ptr var)
|
489
492
|
{
|
490
493
|
append_token(var->name(), var);
|
491
494
|
}
|
492
495
|
|
493
|
-
void Inspect::operator()(
|
496
|
+
void Inspect::operator()(Textual_Ptr txt)
|
494
497
|
{
|
495
498
|
append_token(txt->value(), txt);
|
496
499
|
}
|
497
500
|
|
498
|
-
void Inspect::operator()(
|
501
|
+
void Inspect::operator()(Number_Ptr n)
|
499
502
|
{
|
500
503
|
|
501
504
|
std::string res;
|
@@ -588,7 +591,7 @@ namespace Sass {
|
|
588
591
|
else return c;
|
589
592
|
}
|
590
593
|
|
591
|
-
void Inspect::operator()(
|
594
|
+
void Inspect::operator()(Color_Ptr c)
|
592
595
|
{
|
593
596
|
// output the final token
|
594
597
|
std::stringstream ss;
|
@@ -607,7 +610,7 @@ namespace Sass {
|
|
607
610
|
|
608
611
|
// get color from given name (if one was given at all)
|
609
612
|
if (name != "" && name_to_color(name)) {
|
610
|
-
|
613
|
+
Color_Ptr_Const n = name_to_color(name);
|
611
614
|
r = Sass::round(cap_channel<0xff>(n->r()), opt.precision);
|
612
615
|
g = Sass::round(cap_channel<0xff>(n->g()), opt.precision);
|
613
616
|
b = Sass::round(cap_channel<0xff>(n->b()), opt.precision);
|
@@ -674,13 +677,13 @@ namespace Sass {
|
|
674
677
|
|
675
678
|
}
|
676
679
|
|
677
|
-
void Inspect::operator()(
|
680
|
+
void Inspect::operator()(Boolean_Ptr b)
|
678
681
|
{
|
679
682
|
// output the final token
|
680
683
|
append_token(b->value() ? "true" : "false", b);
|
681
684
|
}
|
682
685
|
|
683
|
-
void Inspect::operator()(
|
686
|
+
void Inspect::operator()(String_Schema_Ptr ss)
|
684
687
|
{
|
685
688
|
// Evaluation should turn these into String_Constants,
|
686
689
|
// so this method is only for inspection purposes.
|
@@ -691,12 +694,12 @@ namespace Sass {
|
|
691
694
|
}
|
692
695
|
}
|
693
696
|
|
694
|
-
void Inspect::operator()(
|
697
|
+
void Inspect::operator()(String_Constant_Ptr s)
|
695
698
|
{
|
696
699
|
append_token(s->value(), s);
|
697
700
|
}
|
698
701
|
|
699
|
-
void Inspect::operator()(
|
702
|
+
void Inspect::operator()(String_Quoted_Ptr s)
|
700
703
|
{
|
701
704
|
if (const char q = s->quote_mark()) {
|
702
705
|
append_token(quote(s->value(), q), s);
|
@@ -705,17 +708,17 @@ namespace Sass {
|
|
705
708
|
}
|
706
709
|
}
|
707
710
|
|
708
|
-
void Inspect::operator()(
|
711
|
+
void Inspect::operator()(Custom_Error_Ptr e)
|
709
712
|
{
|
710
713
|
append_token(e->message(), e);
|
711
714
|
}
|
712
715
|
|
713
|
-
void Inspect::operator()(
|
716
|
+
void Inspect::operator()(Custom_Warning_Ptr w)
|
714
717
|
{
|
715
718
|
append_token(w->message(), w);
|
716
719
|
}
|
717
720
|
|
718
|
-
void Inspect::operator()(
|
721
|
+
void Inspect::operator()(Supports_Operator_Ptr so)
|
719
722
|
{
|
720
723
|
|
721
724
|
if (so->needs_parens(so->left())) append_string("(");
|
@@ -737,16 +740,16 @@ namespace Sass {
|
|
737
740
|
if (so->needs_parens(so->right())) append_string(")");
|
738
741
|
}
|
739
742
|
|
740
|
-
void Inspect::operator()(
|
743
|
+
void Inspect::operator()(Supports_Negation_Ptr sn)
|
741
744
|
{
|
742
745
|
append_token("not", sn);
|
743
746
|
append_mandatory_space();
|
744
|
-
if (sn->needs_parens(sn->condition())) append_string("(");
|
747
|
+
if (sn->needs_parens(&sn->condition())) append_string("(");
|
745
748
|
sn->condition()->perform(this);
|
746
|
-
if (sn->needs_parens(sn->condition())) append_string(")");
|
749
|
+
if (sn->needs_parens(&sn->condition())) append_string(")");
|
747
750
|
}
|
748
751
|
|
749
|
-
void Inspect::operator()(
|
752
|
+
void Inspect::operator()(Supports_Declaration_Ptr sd)
|
750
753
|
{
|
751
754
|
append_string("(");
|
752
755
|
sd->feature()->perform(this);
|
@@ -755,15 +758,15 @@ namespace Sass {
|
|
755
758
|
append_string(")");
|
756
759
|
}
|
757
760
|
|
758
|
-
void Inspect::operator()(
|
761
|
+
void Inspect::operator()(Supports_Interpolation_Ptr sd)
|
759
762
|
{
|
760
763
|
sd->value()->perform(this);
|
761
764
|
}
|
762
765
|
|
763
|
-
void Inspect::operator()(
|
766
|
+
void Inspect::operator()(Media_Query_Ptr mq)
|
764
767
|
{
|
765
768
|
size_t i = 0;
|
766
|
-
if (mq->media_type()) {
|
769
|
+
if (&mq->media_type()) {
|
767
770
|
if (mq->is_negated()) append_string("not ");
|
768
771
|
else if (mq->is_restricted()) append_string("only ");
|
769
772
|
mq->media_type()->perform(this);
|
@@ -777,7 +780,7 @@ namespace Sass {
|
|
777
780
|
}
|
778
781
|
}
|
779
782
|
|
780
|
-
void Inspect::operator()(
|
783
|
+
void Inspect::operator()(Media_Query_Expression_Ptr mqe)
|
781
784
|
{
|
782
785
|
if (mqe->is_interpolated()) {
|
783
786
|
mqe->feature()->perform(this);
|
@@ -793,7 +796,7 @@ namespace Sass {
|
|
793
796
|
}
|
794
797
|
}
|
795
798
|
|
796
|
-
void Inspect::operator()(
|
799
|
+
void Inspect::operator()(At_Root_Query_Ptr ae)
|
797
800
|
{
|
798
801
|
append_string("(");
|
799
802
|
ae->feature()->perform(this);
|
@@ -804,14 +807,14 @@ namespace Sass {
|
|
804
807
|
append_string(")");
|
805
808
|
}
|
806
809
|
|
807
|
-
void Inspect::operator()(
|
810
|
+
void Inspect::operator()(Null_Ptr n)
|
808
811
|
{
|
809
812
|
// output the final token
|
810
813
|
append_token("null", n);
|
811
814
|
}
|
812
815
|
|
813
816
|
// parameters and arguments
|
814
|
-
void Inspect::operator()(
|
817
|
+
void Inspect::operator()(Parameter_Ptr p)
|
815
818
|
{
|
816
819
|
append_token(p->name(), p);
|
817
820
|
if (p->default_value()) {
|
@@ -823,7 +826,7 @@ namespace Sass {
|
|
823
826
|
}
|
824
827
|
}
|
825
828
|
|
826
|
-
void Inspect::operator()(
|
829
|
+
void Inspect::operator()(Parameters_Ptr p)
|
827
830
|
{
|
828
831
|
append_string("(");
|
829
832
|
if (!p->empty()) {
|
@@ -836,26 +839,29 @@ namespace Sass {
|
|
836
839
|
append_string(")");
|
837
840
|
}
|
838
841
|
|
839
|
-
void Inspect::operator()(
|
842
|
+
void Inspect::operator()(Argument_Ptr a)
|
840
843
|
{
|
841
844
|
if (!a->name().empty()) {
|
842
845
|
append_token(a->name(), a);
|
843
846
|
append_colon_separator();
|
844
847
|
}
|
848
|
+
if (!a->value()) return;
|
845
849
|
// Special case: argument nulls can be ignored
|
846
850
|
if (a->value()->concrete_type() == Expression::NULL_VAL) {
|
847
851
|
return;
|
848
852
|
}
|
849
853
|
if (a->value()->concrete_type() == Expression::STRING) {
|
850
|
-
|
851
|
-
s->perform(this);
|
852
|
-
} else
|
854
|
+
String_Constant_Ptr s = SASS_MEMORY_CAST(String_Constant, a->value());
|
855
|
+
if (s) s->perform(this);
|
856
|
+
} else {
|
857
|
+
a->value()->perform(this);
|
858
|
+
}
|
853
859
|
if (a->is_rest_argument()) {
|
854
860
|
append_string("...");
|
855
861
|
}
|
856
862
|
}
|
857
863
|
|
858
|
-
void Inspect::operator()(
|
864
|
+
void Inspect::operator()(Arguments_Ptr a)
|
859
865
|
{
|
860
866
|
append_string("(");
|
861
867
|
if (!a->empty()) {
|
@@ -869,17 +875,17 @@ namespace Sass {
|
|
869
875
|
append_string(")");
|
870
876
|
}
|
871
877
|
|
872
|
-
void Inspect::operator()(
|
878
|
+
void Inspect::operator()(Selector_Schema_Ptr s)
|
873
879
|
{
|
874
880
|
s->contents()->perform(this);
|
875
881
|
}
|
876
882
|
|
877
|
-
void Inspect::operator()(
|
883
|
+
void Inspect::operator()(Parent_Selector_Ptr p)
|
878
884
|
{
|
879
885
|
if (p->is_real_parent_ref()) append_string("&");
|
880
886
|
}
|
881
887
|
|
882
|
-
void Inspect::operator()(
|
888
|
+
void Inspect::operator()(Placeholder_Selector_Ptr s)
|
883
889
|
{
|
884
890
|
append_token(s->name(), s);
|
885
891
|
if (s->has_line_break()) append_optional_linefeed();
|
@@ -887,33 +893,33 @@ namespace Sass {
|
|
887
893
|
|
888
894
|
}
|
889
895
|
|
890
|
-
void Inspect::operator()(
|
896
|
+
void Inspect::operator()(Element_Selector_Ptr s)
|
891
897
|
{
|
892
898
|
append_token(s->ns_name(), s);
|
893
899
|
}
|
894
900
|
|
895
|
-
void Inspect::operator()(
|
901
|
+
void Inspect::operator()(Class_Selector_Ptr s)
|
896
902
|
{
|
897
903
|
append_token(s->ns_name(), s);
|
898
904
|
if (s->has_line_break()) append_optional_linefeed();
|
899
905
|
if (s->has_line_break()) append_indentation();
|
900
906
|
}
|
901
907
|
|
902
|
-
void Inspect::operator()(
|
908
|
+
void Inspect::operator()(Id_Selector_Ptr s)
|
903
909
|
{
|
904
910
|
append_token(s->ns_name(), s);
|
905
911
|
if (s->has_line_break()) append_optional_linefeed();
|
906
912
|
if (s->has_line_break()) append_indentation();
|
907
913
|
}
|
908
914
|
|
909
|
-
void Inspect::operator()(
|
915
|
+
void Inspect::operator()(Attribute_Selector_Ptr s)
|
910
916
|
{
|
911
917
|
append_string("[");
|
912
918
|
add_open_mapping(s);
|
913
919
|
append_token(s->ns_name(), s);
|
914
920
|
if (!s->matcher().empty()) {
|
915
921
|
append_string(s->matcher());
|
916
|
-
if (s->value()) {
|
922
|
+
if (&s->value() && *s->value()) {
|
917
923
|
s->value()->perform(this);
|
918
924
|
}
|
919
925
|
}
|
@@ -921,7 +927,7 @@ namespace Sass {
|
|
921
927
|
append_string("]");
|
922
928
|
}
|
923
929
|
|
924
|
-
void Inspect::operator()(
|
930
|
+
void Inspect::operator()(Pseudo_Selector_Ptr s)
|
925
931
|
{
|
926
932
|
append_token(s->ns_name(), s);
|
927
933
|
if (s->expression()) {
|
@@ -931,7 +937,7 @@ namespace Sass {
|
|
931
937
|
}
|
932
938
|
}
|
933
939
|
|
934
|
-
void Inspect::operator()(
|
940
|
+
void Inspect::operator()(Wrapped_Selector_Ptr s)
|
935
941
|
{
|
936
942
|
bool was = in_wrapped;
|
937
943
|
in_wrapped = true;
|
@@ -945,7 +951,7 @@ namespace Sass {
|
|
945
951
|
in_wrapped = was;
|
946
952
|
}
|
947
953
|
|
948
|
-
void Inspect::operator()(
|
954
|
+
void Inspect::operator()(Compound_Selector_Ptr s)
|
949
955
|
{
|
950
956
|
for (size_t i = 0, L = s->length(); i < L; ++i) {
|
951
957
|
(*s)[i]->perform(this);
|
@@ -957,13 +963,13 @@ namespace Sass {
|
|
957
963
|
}
|
958
964
|
}
|
959
965
|
|
960
|
-
void Inspect::operator()(
|
966
|
+
void Inspect::operator()(Complex_Selector_Ptr c)
|
961
967
|
{
|
962
|
-
|
963
|
-
|
964
|
-
|
968
|
+
Compound_Selector_Obj head = c->head();
|
969
|
+
Complex_Selector_Obj tail = c->tail();
|
970
|
+
Complex_Selector::Combinator comb = c->combinator();
|
965
971
|
|
966
|
-
if (comb ==
|
972
|
+
if (comb == Complex_Selector::ANCESTOR_OF && (!head || head->empty())) {
|
967
973
|
if (tail) tail->perform(this);
|
968
974
|
return;
|
969
975
|
}
|
@@ -978,30 +984,30 @@ namespace Sass {
|
|
978
984
|
if (head && head->length() != 0) head->perform(this);
|
979
985
|
bool is_empty = !head || head->length() == 0 || head->is_empty_reference();
|
980
986
|
bool is_tail = head && !head->is_empty_reference() && tail;
|
981
|
-
if (output_style() == COMPRESSED && comb !=
|
987
|
+
if (output_style() == COMPRESSED && comb != Complex_Selector::ANCESTOR_OF) scheduled_space = 0;
|
982
988
|
|
983
989
|
switch (comb) {
|
984
|
-
case
|
990
|
+
case Complex_Selector::ANCESTOR_OF:
|
985
991
|
if (is_tail) append_mandatory_space();
|
986
992
|
break;
|
987
|
-
case
|
993
|
+
case Complex_Selector::PARENT_OF:
|
988
994
|
append_optional_space();
|
989
995
|
append_string(">");
|
990
996
|
append_optional_space();
|
991
997
|
break;
|
992
|
-
case
|
998
|
+
case Complex_Selector::ADJACENT_TO:
|
993
999
|
append_optional_space();
|
994
1000
|
append_string("+");
|
995
1001
|
append_optional_space();
|
996
1002
|
break;
|
997
|
-
case
|
1003
|
+
case Complex_Selector::REFERENCE:
|
998
1004
|
append_mandatory_space();
|
999
1005
|
append_string("/");
|
1000
1006
|
c->reference()->perform(this);
|
1001
1007
|
append_string("/");
|
1002
1008
|
append_mandatory_space();
|
1003
1009
|
break;
|
1004
|
-
case
|
1010
|
+
case Complex_Selector::PRECEDES:
|
1005
1011
|
if (is_empty) append_optional_space();
|
1006
1012
|
else append_mandatory_space();
|
1007
1013
|
append_string("~");
|
@@ -1009,7 +1015,7 @@ namespace Sass {
|
|
1009
1015
|
else append_optional_space();
|
1010
1016
|
break;
|
1011
1017
|
}
|
1012
|
-
if (tail && comb !=
|
1018
|
+
if (tail && comb != Complex_Selector::ANCESTOR_OF) {
|
1013
1019
|
if (c->has_line_break()) append_optional_linefeed();
|
1014
1020
|
}
|
1015
1021
|
if (tail) tail->perform(this);
|
@@ -1020,7 +1026,7 @@ namespace Sass {
|
|
1020
1026
|
}
|
1021
1027
|
}
|
1022
1028
|
|
1023
|
-
void Inspect::operator()(
|
1029
|
+
void Inspect::operator()(Selector_List_Ptr g)
|
1024
1030
|
{
|
1025
1031
|
|
1026
1032
|
if (g->empty()) {
|
@@ -1034,8 +1040,8 @@ namespace Sass {
|
|
1034
1040
|
bool was_comma_array = in_comma_array;
|
1035
1041
|
// probably ruby sass eqivalent of element_needs_parens
|
1036
1042
|
if (output_style() == TO_SASS && g->length() == 1 &&
|
1037
|
-
(!
|
1038
|
-
!
|
1043
|
+
(!SASS_MEMORY_CAST(List, (*g)[0]) &&
|
1044
|
+
!SASS_MEMORY_CAST(Selector_List, (*g)[0]))) {
|
1039
1045
|
append_string("(");
|
1040
1046
|
}
|
1041
1047
|
else if (!in_declaration && in_comma_array) {
|
@@ -1047,7 +1053,7 @@ namespace Sass {
|
|
1047
1053
|
for (size_t i = 0, L = g->length(); i < L; ++i) {
|
1048
1054
|
if (!in_wrapped && i == 0) append_indentation();
|
1049
1055
|
if ((*g)[i] == 0) continue;
|
1050
|
-
schedule_mapping((
|
1056
|
+
schedule_mapping(&g->at(i)->last());
|
1051
1057
|
// add_open_mapping((*g)[i]->last());
|
1052
1058
|
(*g)[i]->perform(this);
|
1053
1059
|
// add_close_mapping((*g)[i]->last());
|
@@ -1060,8 +1066,8 @@ namespace Sass {
|
|
1060
1066
|
in_comma_array = was_comma_array;
|
1061
1067
|
// probably ruby sass eqivalent of element_needs_parens
|
1062
1068
|
if (output_style() == TO_SASS && g->length() == 1 &&
|
1063
|
-
(!
|
1064
|
-
!
|
1069
|
+
(!SASS_MEMORY_CAST(List, (*g)[0]) &&
|
1070
|
+
!SASS_MEMORY_CAST(Selector_List, (*g)[0]))) {
|
1065
1071
|
append_string(",)");
|
1066
1072
|
}
|
1067
1073
|
else if (!in_declaration && in_comma_array) {
|
@@ -1070,7 +1076,7 @@ namespace Sass {
|
|
1070
1076
|
|
1071
1077
|
}
|
1072
1078
|
|
1073
|
-
void Inspect::fallback_impl(
|
1079
|
+
void Inspect::fallback_impl(AST_Node_Ptr n)
|
1074
1080
|
{
|
1075
1081
|
}
|
1076
1082
|
|