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
data/ext/libsass/src/bind.hpp
CHANGED
@@ -3,16 +3,12 @@
|
|
3
3
|
|
4
4
|
#include <string>
|
5
5
|
#include "environment.hpp"
|
6
|
+
#include "ast_fwd_decl.hpp"
|
6
7
|
|
7
8
|
namespace Sass {
|
8
|
-
|
9
|
-
class Parameters;
|
10
|
-
class Arguments;
|
11
|
-
class Context;
|
12
|
-
class Eval;
|
13
|
-
typedef Environment<AST_Node*> Env;
|
9
|
+
typedef Environment<AST_Node_Obj> Env;
|
14
10
|
|
15
|
-
void bind(std::string type, std::string name,
|
11
|
+
void bind(std::string type, std::string name, Parameters_Obj, Arguments_Obj, Context*, Env*, Eval*);
|
16
12
|
}
|
17
13
|
|
18
14
|
#endif
|
@@ -6,35 +6,30 @@
|
|
6
6
|
namespace Sass {
|
7
7
|
|
8
8
|
CheckNesting::CheckNesting()
|
9
|
-
: parents(std::vector<
|
9
|
+
: parents(std::vector<Statement_Ptr>()),
|
10
10
|
parent(0),
|
11
11
|
current_mixin_definition(0)
|
12
12
|
{ }
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
}
|
18
|
-
|
19
|
-
Statement* CheckNesting::visit_children(Statement* parent) {
|
20
|
-
|
21
|
-
Statement* old_parent = this->parent;
|
14
|
+
Statement_Ptr CheckNesting::visit_children(Statement_Ptr parent)
|
15
|
+
{
|
16
|
+
Statement_Ptr old_parent = this->parent;
|
22
17
|
|
23
|
-
if (
|
24
|
-
std::vector<
|
25
|
-
std::vector<
|
18
|
+
if (At_Root_Block_Ptr root = SASS_MEMORY_CAST_PTR(At_Root_Block, parent)) {
|
19
|
+
std::vector<Statement_Ptr> old_parents = this->parents;
|
20
|
+
std::vector<Statement_Ptr> new_parents;
|
26
21
|
|
27
22
|
for (size_t i = 0, L = this->parents.size(); i < L; i++) {
|
28
|
-
|
29
|
-
if (!
|
23
|
+
Statement_Ptr p = this->parents.at(i);
|
24
|
+
if (!root->exclude_node(p)) {
|
30
25
|
new_parents.push_back(p);
|
31
26
|
}
|
32
27
|
}
|
33
28
|
this->parents = new_parents;
|
34
29
|
|
35
30
|
for (size_t i = this->parents.size(); i > 0; i--) {
|
36
|
-
|
37
|
-
|
31
|
+
Statement_Ptr p = 0;
|
32
|
+
Statement_Ptr gp = 0;
|
38
33
|
if (i > 0) p = this->parents.at(i - 1);
|
39
34
|
if (i > 1) gp = this->parents.at(i - 2);
|
40
35
|
|
@@ -44,8 +39,8 @@ namespace Sass {
|
|
44
39
|
}
|
45
40
|
}
|
46
41
|
|
47
|
-
|
48
|
-
|
42
|
+
At_Root_Block_Ptr ar = SASS_MEMORY_CAST_PTR(At_Root_Block, parent);
|
43
|
+
Statement_Ptr ret = this->visit_children(&ar->block());
|
49
44
|
|
50
45
|
this->parent = old_parent;
|
51
46
|
this->parents = old_parents;
|
@@ -53,27 +48,25 @@ namespace Sass {
|
|
53
48
|
return ret;
|
54
49
|
}
|
55
50
|
|
56
|
-
|
57
51
|
if (!this->is_transparent_parent(parent, old_parent)) {
|
58
52
|
this->parent = parent;
|
59
53
|
}
|
60
54
|
|
61
55
|
this->parents.push_back(parent);
|
62
56
|
|
63
|
-
|
57
|
+
Block_Ptr b = SASS_MEMORY_CAST_PTR(Block, parent);
|
64
58
|
|
65
59
|
if (!b) {
|
66
|
-
if (
|
67
|
-
b = bb->block();
|
60
|
+
if (Has_Block_Ptr bb = SASS_MEMORY_CAST(Has_Block, *parent)) {
|
61
|
+
b = &bb->block();
|
68
62
|
}
|
69
63
|
}
|
70
64
|
|
71
65
|
if (b) {
|
72
|
-
for (auto n :
|
66
|
+
for (auto n : b->elements()) {
|
73
67
|
n->perform(this);
|
74
68
|
}
|
75
69
|
}
|
76
|
-
|
77
70
|
this->parent = old_parent;
|
78
71
|
this->parents.pop_back();
|
79
72
|
|
@@ -81,16 +74,20 @@ namespace Sass {
|
|
81
74
|
}
|
82
75
|
|
83
76
|
|
84
|
-
|
77
|
+
Statement_Ptr CheckNesting::operator()(Block_Ptr b)
|
85
78
|
{
|
86
79
|
return this->visit_children(b);
|
87
80
|
}
|
88
81
|
|
89
|
-
|
82
|
+
Statement_Ptr CheckNesting::operator()(Definition_Ptr n)
|
90
83
|
{
|
91
|
-
if (!
|
84
|
+
if (!this->should_visit(n)) return NULL;
|
85
|
+
if (!is_mixin(n)) {
|
86
|
+
visit_children(n);
|
87
|
+
return n;
|
88
|
+
}
|
92
89
|
|
93
|
-
|
90
|
+
Definition_Ptr old_mixin_definition = this->current_mixin_definition;
|
94
91
|
this->current_mixin_definition = n;
|
95
92
|
|
96
93
|
visit_children(n);
|
@@ -100,28 +97,27 @@ namespace Sass {
|
|
100
97
|
return n;
|
101
98
|
}
|
102
99
|
|
103
|
-
|
100
|
+
Statement_Ptr CheckNesting::fallback_impl(Statement_Ptr s)
|
104
101
|
{
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
return s;
|
102
|
+
Block_Ptr b1 = SASS_MEMORY_CAST_PTR(Block, s);
|
103
|
+
Has_Block_Ptr b2 = SASS_MEMORY_CAST_PTR(Has_Block, s);
|
104
|
+
return b1 || b2 ? visit_children(s) : s;
|
109
105
|
}
|
110
106
|
|
111
|
-
bool CheckNesting::should_visit(
|
107
|
+
bool CheckNesting::should_visit(Statement_Ptr node)
|
112
108
|
{
|
113
109
|
if (!this->parent) return true;
|
114
110
|
|
115
|
-
if (
|
111
|
+
if (SASS_MEMORY_CAST_PTR(Content, node))
|
116
112
|
{ this->invalid_content_parent(this->parent); }
|
117
113
|
|
118
114
|
if (is_charset(node))
|
119
115
|
{ this->invalid_charset_parent(this->parent); }
|
120
116
|
|
121
|
-
if (
|
117
|
+
if (SASS_MEMORY_CAST_PTR(Extension, node))
|
122
118
|
{ this->invalid_extend_parent(this->parent); }
|
123
119
|
|
124
|
-
// if (
|
120
|
+
// if (SASS_MEMORY_CAST(Import, node))
|
125
121
|
// { this->invalid_import_parent(this->parent); }
|
126
122
|
|
127
123
|
if (this->is_mixin(node))
|
@@ -133,20 +129,19 @@ namespace Sass {
|
|
133
129
|
if (this->is_function(this->parent))
|
134
130
|
{ this->invalid_function_child(node); }
|
135
131
|
|
136
|
-
if (
|
132
|
+
if (SASS_MEMORY_CAST_PTR(Declaration, node))
|
137
133
|
{ this->invalid_prop_parent(this->parent); }
|
138
134
|
|
139
|
-
if (
|
140
|
-
|
141
|
-
) { this->invalid_prop_child(node); }
|
135
|
+
if (SASS_MEMORY_CAST_PTR(Declaration, this->parent))
|
136
|
+
{ this->invalid_prop_child(node); }
|
142
137
|
|
143
|
-
if (
|
138
|
+
if (SASS_MEMORY_CAST_PTR(Return, node))
|
144
139
|
{ this->invalid_return_parent(this->parent); }
|
145
140
|
|
146
141
|
return true;
|
147
142
|
}
|
148
143
|
|
149
|
-
void CheckNesting::invalid_content_parent(
|
144
|
+
void CheckNesting::invalid_content_parent(Statement_Ptr parent)
|
150
145
|
{
|
151
146
|
if (!this->current_mixin_definition) {
|
152
147
|
throw Exception::InvalidSass(
|
@@ -156,7 +151,7 @@ namespace Sass {
|
|
156
151
|
}
|
157
152
|
}
|
158
153
|
|
159
|
-
void CheckNesting::invalid_charset_parent(
|
154
|
+
void CheckNesting::invalid_charset_parent(Statement_Ptr parent)
|
160
155
|
{
|
161
156
|
if (!(
|
162
157
|
is_root_node(parent)
|
@@ -168,11 +163,11 @@ namespace Sass {
|
|
168
163
|
}
|
169
164
|
}
|
170
165
|
|
171
|
-
void CheckNesting::invalid_extend_parent(
|
166
|
+
void CheckNesting::invalid_extend_parent(Statement_Ptr parent)
|
172
167
|
{
|
173
168
|
if (!(
|
174
|
-
|
175
|
-
|
169
|
+
SASS_MEMORY_CAST_PTR(Ruleset, parent) ||
|
170
|
+
SASS_MEMORY_CAST_PTR(Mixin_Call, parent) ||
|
176
171
|
is_mixin(parent)
|
177
172
|
)) {
|
178
173
|
throw Exception::InvalidSass(
|
@@ -182,16 +177,16 @@ namespace Sass {
|
|
182
177
|
}
|
183
178
|
}
|
184
179
|
|
185
|
-
// void CheckNesting::invalid_import_parent(
|
180
|
+
// void CheckNesting::invalid_import_parent(Statement_Ptr parent)
|
186
181
|
// {
|
187
182
|
// for (auto pp : this->parents) {
|
188
183
|
// if (
|
189
|
-
//
|
190
|
-
//
|
191
|
-
//
|
192
|
-
//
|
193
|
-
//
|
194
|
-
//
|
184
|
+
// SASS_MEMORY_CAST(Each, pp) ||
|
185
|
+
// SASS_MEMORY_CAST(For, pp) ||
|
186
|
+
// SASS_MEMORY_CAST(If, pp) ||
|
187
|
+
// SASS_MEMORY_CAST(While, pp) ||
|
188
|
+
// SASS_MEMORY_CAST(Trace, pp) ||
|
189
|
+
// SASS_MEMORY_CAST(Mixin_Call, pp) ||
|
195
190
|
// is_mixin(pp)
|
196
191
|
// ) {
|
197
192
|
// throw Exception::InvalidSass(
|
@@ -213,16 +208,16 @@ namespace Sass {
|
|
213
208
|
// }
|
214
209
|
// }
|
215
210
|
|
216
|
-
void CheckNesting::invalid_mixin_definition_parent(
|
211
|
+
void CheckNesting::invalid_mixin_definition_parent(Statement_Ptr parent)
|
217
212
|
{
|
218
|
-
for (
|
213
|
+
for (Statement_Ptr pp : this->parents) {
|
219
214
|
if (
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
215
|
+
SASS_MEMORY_CAST_PTR(Each, pp) ||
|
216
|
+
SASS_MEMORY_CAST_PTR(For, pp) ||
|
217
|
+
SASS_MEMORY_CAST_PTR(If, pp) ||
|
218
|
+
SASS_MEMORY_CAST_PTR(While, pp) ||
|
219
|
+
SASS_MEMORY_CAST_PTR(Trace, pp) ||
|
220
|
+
SASS_MEMORY_CAST_PTR(Mixin_Call, pp) ||
|
226
221
|
is_mixin(pp)
|
227
222
|
) {
|
228
223
|
throw Exception::InvalidSass(
|
@@ -233,16 +228,16 @@ namespace Sass {
|
|
233
228
|
}
|
234
229
|
}
|
235
230
|
|
236
|
-
void CheckNesting::invalid_function_parent(
|
231
|
+
void CheckNesting::invalid_function_parent(Statement_Ptr parent)
|
237
232
|
{
|
238
|
-
for (
|
233
|
+
for (Statement_Ptr pp : this->parents) {
|
239
234
|
if (
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
235
|
+
SASS_MEMORY_CAST_PTR(Each, pp) ||
|
236
|
+
SASS_MEMORY_CAST_PTR(For, pp) ||
|
237
|
+
SASS_MEMORY_CAST_PTR(If, pp) ||
|
238
|
+
SASS_MEMORY_CAST_PTR(While, pp) ||
|
239
|
+
SASS_MEMORY_CAST_PTR(Trace, pp) ||
|
240
|
+
SASS_MEMORY_CAST_PTR(Mixin_Call, pp) ||
|
246
241
|
is_mixin(pp)
|
247
242
|
) {
|
248
243
|
throw Exception::InvalidSass(
|
@@ -253,20 +248,22 @@ namespace Sass {
|
|
253
248
|
}
|
254
249
|
}
|
255
250
|
|
256
|
-
void CheckNesting::invalid_function_child(
|
251
|
+
void CheckNesting::invalid_function_child(Statement_Ptr child)
|
257
252
|
{
|
258
253
|
if (!(
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
254
|
+
SASS_MEMORY_CAST_PTR(Each, child) ||
|
255
|
+
SASS_MEMORY_CAST_PTR(For, child) ||
|
256
|
+
SASS_MEMORY_CAST_PTR(If, child) ||
|
257
|
+
SASS_MEMORY_CAST_PTR(While, child) ||
|
258
|
+
SASS_MEMORY_CAST_PTR(Trace, child) ||
|
259
|
+
SASS_MEMORY_CAST_PTR(Comment, child) ||
|
260
|
+
SASS_MEMORY_CAST_PTR(Debug, child) ||
|
261
|
+
SASS_MEMORY_CAST_PTR(Return, child) ||
|
262
|
+
SASS_MEMORY_CAST_PTR(Variable, child) ||
|
263
|
+
// Ruby Sass doesn't distinguish variables and assignments
|
264
|
+
SASS_MEMORY_CAST_PTR(Assignment, child) ||
|
265
|
+
SASS_MEMORY_CAST_PTR(Warning, child) ||
|
266
|
+
SASS_MEMORY_CAST_PTR(Error, child)
|
270
267
|
)) {
|
271
268
|
throw Exception::InvalidSass(
|
272
269
|
child->pstate(),
|
@@ -275,17 +272,17 @@ namespace Sass {
|
|
275
272
|
}
|
276
273
|
}
|
277
274
|
|
278
|
-
void CheckNesting::invalid_prop_child(
|
275
|
+
void CheckNesting::invalid_prop_child(Statement_Ptr child)
|
279
276
|
{
|
280
277
|
if (!(
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
278
|
+
SASS_MEMORY_CAST_PTR(Each, child) ||
|
279
|
+
SASS_MEMORY_CAST_PTR(For, child) ||
|
280
|
+
SASS_MEMORY_CAST_PTR(If, child) ||
|
281
|
+
SASS_MEMORY_CAST_PTR(While, child) ||
|
282
|
+
SASS_MEMORY_CAST_PTR(Trace, child) ||
|
283
|
+
SASS_MEMORY_CAST_PTR(Comment, child) ||
|
284
|
+
SASS_MEMORY_CAST_PTR(Declaration, child) ||
|
285
|
+
SASS_MEMORY_CAST_PTR(Mixin_Call, child)
|
289
286
|
)) {
|
290
287
|
throw Exception::InvalidSass(
|
291
288
|
child->pstate(),
|
@@ -294,15 +291,15 @@ namespace Sass {
|
|
294
291
|
}
|
295
292
|
}
|
296
293
|
|
297
|
-
void CheckNesting::invalid_prop_parent(
|
294
|
+
void CheckNesting::invalid_prop_parent(Statement_Ptr parent)
|
298
295
|
{
|
299
296
|
if (!(
|
300
297
|
is_mixin(parent) ||
|
301
298
|
is_directive_node(parent) ||
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
299
|
+
SASS_MEMORY_CAST_PTR(Ruleset, parent) ||
|
300
|
+
SASS_MEMORY_CAST_PTR(Keyframe_Rule, parent) ||
|
301
|
+
SASS_MEMORY_CAST_PTR(Declaration, parent) ||
|
302
|
+
SASS_MEMORY_CAST_PTR(Mixin_Call, parent)
|
306
303
|
)) {
|
307
304
|
throw Exception::InvalidSass(
|
308
305
|
parent->pstate(),
|
@@ -311,7 +308,7 @@ namespace Sass {
|
|
311
308
|
}
|
312
309
|
}
|
313
310
|
|
314
|
-
void CheckNesting::invalid_return_parent(
|
311
|
+
void CheckNesting::invalid_return_parent(Statement_Ptr parent)
|
315
312
|
{
|
316
313
|
if (!this->is_function(parent)) {
|
317
314
|
throw Exception::InvalidSass(
|
@@ -321,7 +318,7 @@ namespace Sass {
|
|
321
318
|
}
|
322
319
|
}
|
323
320
|
|
324
|
-
bool CheckNesting::is_transparent_parent(
|
321
|
+
bool CheckNesting::is_transparent_parent(Statement_Ptr parent, Statement_Ptr grandparent)
|
325
322
|
{
|
326
323
|
bool parent_bubbles = parent && parent->bubbles();
|
327
324
|
|
@@ -329,51 +326,51 @@ namespace Sass {
|
|
329
326
|
!is_root_node(grandparent) &&
|
330
327
|
!is_at_root_node(grandparent);
|
331
328
|
|
332
|
-
return
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
329
|
+
return SASS_MEMORY_CAST_PTR(Import, parent) ||
|
330
|
+
SASS_MEMORY_CAST_PTR(Each, parent) ||
|
331
|
+
SASS_MEMORY_CAST_PTR(For, parent) ||
|
332
|
+
SASS_MEMORY_CAST_PTR(If, parent) ||
|
333
|
+
SASS_MEMORY_CAST_PTR(While, parent) ||
|
334
|
+
SASS_MEMORY_CAST_PTR(Trace, parent) ||
|
338
335
|
valid_bubble_node;
|
339
336
|
}
|
340
337
|
|
341
|
-
bool CheckNesting::is_charset(
|
338
|
+
bool CheckNesting::is_charset(Statement_Ptr n)
|
342
339
|
{
|
343
|
-
|
340
|
+
Directive_Ptr d = SASS_MEMORY_CAST_PTR(Directive, n);
|
344
341
|
return d && d->keyword() == "charset";
|
345
342
|
}
|
346
343
|
|
347
|
-
bool CheckNesting::is_mixin(
|
344
|
+
bool CheckNesting::is_mixin(Statement_Ptr n)
|
348
345
|
{
|
349
|
-
|
346
|
+
Definition_Ptr def = SASS_MEMORY_CAST_PTR(Definition, n);
|
350
347
|
return def && def->type() == Definition::MIXIN;
|
351
348
|
}
|
352
349
|
|
353
|
-
bool CheckNesting::is_function(
|
350
|
+
bool CheckNesting::is_function(Statement_Ptr n)
|
354
351
|
{
|
355
|
-
|
352
|
+
Definition_Ptr def = SASS_MEMORY_CAST_PTR(Definition, n);
|
356
353
|
return def && def->type() == Definition::FUNCTION;
|
357
354
|
}
|
358
355
|
|
359
|
-
bool CheckNesting::is_root_node(
|
356
|
+
bool CheckNesting::is_root_node(Statement_Ptr n)
|
360
357
|
{
|
361
|
-
if (
|
358
|
+
if (SASS_MEMORY_CAST_PTR(Ruleset, n)) return false;
|
362
359
|
|
363
|
-
|
360
|
+
Block_Ptr b = SASS_MEMORY_CAST_PTR(Block, n);
|
364
361
|
return b && b->is_root();
|
365
362
|
}
|
366
363
|
|
367
|
-
bool CheckNesting::is_at_root_node(
|
364
|
+
bool CheckNesting::is_at_root_node(Statement_Ptr n)
|
368
365
|
{
|
369
|
-
return
|
366
|
+
return SASS_MEMORY_CAST_PTR(At_Root_Block, n) != NULL;
|
370
367
|
}
|
371
368
|
|
372
|
-
bool CheckNesting::is_directive_node(
|
369
|
+
bool CheckNesting::is_directive_node(Statement_Ptr n)
|
373
370
|
{
|
374
|
-
return
|
375
|
-
|
376
|
-
|
377
|
-
|
371
|
+
return SASS_MEMORY_CAST_PTR(Directive, n) ||
|
372
|
+
SASS_MEMORY_CAST_PTR(Import, n) ||
|
373
|
+
SASS_MEMORY_CAST_PTR(Media_Block, n) ||
|
374
|
+
SASS_MEMORY_CAST_PTR(Supports_Block, n);
|
378
375
|
}
|
379
376
|
}
|