sassc 2.2.1 → 2.4.0
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 -0
- data/CHANGELOG.md +18 -0
- data/Rakefile +1 -3
- data/ext/extconf.rb +13 -5
- data/ext/libsass/VERSION +1 -1
- data/ext/libsass/include/sass/base.h +2 -1
- data/ext/libsass/include/sass/context.h +4 -0
- data/ext/libsass/src/MurmurHash2.hpp +91 -0
- data/ext/libsass/src/ast.cpp +158 -168
- data/ext/libsass/src/ast.hpp +389 -230
- data/ext/libsass/src/ast_def_macros.hpp +18 -10
- data/ext/libsass/src/ast_fwd_decl.cpp +4 -3
- data/ext/libsass/src/ast_fwd_decl.hpp +98 -165
- data/ext/libsass/src/ast_helpers.hpp +292 -0
- data/ext/libsass/src/ast_sel_cmp.cpp +219 -732
- data/ext/libsass/src/ast_sel_super.cpp +539 -0
- data/ext/libsass/src/ast_sel_unify.cpp +207 -212
- data/ext/libsass/src/ast_sel_weave.cpp +616 -0
- data/ext/libsass/src/ast_selectors.cpp +594 -1026
- data/ext/libsass/src/ast_selectors.hpp +339 -385
- data/ext/libsass/src/ast_supports.cpp +36 -52
- data/ext/libsass/src/ast_supports.hpp +29 -29
- data/ext/libsass/src/ast_values.cpp +271 -84
- data/ext/libsass/src/ast_values.hpp +116 -107
- data/ext/libsass/src/backtrace.cpp +9 -9
- data/ext/libsass/src/backtrace.hpp +5 -5
- data/ext/libsass/src/base64vlq.cpp +2 -2
- data/ext/libsass/src/base64vlq.hpp +1 -1
- data/ext/libsass/src/bind.cpp +18 -18
- data/ext/libsass/src/bind.hpp +1 -1
- data/ext/libsass/src/c2ast.cpp +3 -3
- data/ext/libsass/src/c2ast.hpp +1 -1
- data/ext/libsass/src/cencode.c +4 -6
- data/ext/libsass/src/check_nesting.cpp +40 -41
- data/ext/libsass/src/check_nesting.hpp +6 -2
- data/ext/libsass/src/color_maps.cpp +14 -13
- data/ext/libsass/src/color_maps.hpp +1 -9
- data/ext/libsass/src/constants.cpp +5 -0
- data/ext/libsass/src/constants.hpp +6 -0
- data/ext/libsass/src/context.cpp +92 -119
- data/ext/libsass/src/context.hpp +41 -53
- data/ext/libsass/src/cssize.cpp +66 -149
- data/ext/libsass/src/cssize.hpp +17 -23
- data/ext/libsass/src/dart_helpers.hpp +199 -0
- data/ext/libsass/src/debugger.hpp +451 -295
- data/ext/libsass/src/emitter.cpp +15 -16
- data/ext/libsass/src/emitter.hpp +10 -12
- data/ext/libsass/src/environment.cpp +27 -27
- data/ext/libsass/src/environment.hpp +29 -24
- data/ext/libsass/src/error_handling.cpp +62 -41
- data/ext/libsass/src/error_handling.hpp +61 -51
- data/ext/libsass/src/eval.cpp +167 -281
- data/ext/libsass/src/eval.hpp +27 -29
- data/ext/libsass/src/eval_selectors.cpp +75 -0
- data/ext/libsass/src/expand.cpp +275 -222
- data/ext/libsass/src/expand.hpp +36 -16
- data/ext/libsass/src/extender.cpp +1188 -0
- data/ext/libsass/src/extender.hpp +399 -0
- data/ext/libsass/src/extension.cpp +43 -0
- data/ext/libsass/src/extension.hpp +89 -0
- data/ext/libsass/src/file.cpp +81 -72
- data/ext/libsass/src/file.hpp +28 -37
- data/ext/libsass/src/fn_colors.cpp +20 -18
- data/ext/libsass/src/fn_lists.cpp +30 -29
- data/ext/libsass/src/fn_maps.cpp +3 -3
- data/ext/libsass/src/fn_miscs.cpp +34 -46
- data/ext/libsass/src/fn_numbers.cpp +20 -13
- data/ext/libsass/src/fn_selectors.cpp +98 -128
- data/ext/libsass/src/fn_strings.cpp +47 -33
- data/ext/libsass/src/fn_utils.cpp +31 -29
- data/ext/libsass/src/fn_utils.hpp +17 -11
- data/ext/libsass/src/inspect.cpp +186 -148
- data/ext/libsass/src/inspect.hpp +31 -29
- data/ext/libsass/src/lexer.cpp +20 -82
- data/ext/libsass/src/lexer.hpp +5 -16
- data/ext/libsass/src/listize.cpp +23 -37
- data/ext/libsass/src/listize.hpp +8 -9
- data/ext/libsass/src/mapping.hpp +1 -0
- data/ext/libsass/src/memory/allocator.cpp +48 -0
- data/ext/libsass/src/memory/allocator.hpp +138 -0
- data/ext/libsass/src/memory/config.hpp +20 -0
- data/ext/libsass/src/memory/memory_pool.hpp +186 -0
- data/ext/libsass/src/memory/{SharedPtr.cpp → shared_ptr.cpp} +2 -2
- data/ext/libsass/src/memory/{SharedPtr.hpp → shared_ptr.hpp} +55 -9
- data/ext/libsass/src/memory.hpp +12 -0
- data/ext/libsass/src/operation.hpp +71 -61
- data/ext/libsass/src/operators.cpp +19 -18
- data/ext/libsass/src/operators.hpp +11 -11
- data/ext/libsass/src/ordered_map.hpp +112 -0
- data/ext/libsass/src/output.cpp +45 -64
- data/ext/libsass/src/output.hpp +6 -6
- data/ext/libsass/src/parser.cpp +512 -700
- data/ext/libsass/src/parser.hpp +89 -97
- data/ext/libsass/src/parser_selectors.cpp +189 -0
- data/ext/libsass/src/permutate.hpp +164 -0
- data/ext/libsass/src/plugins.cpp +7 -7
- data/ext/libsass/src/plugins.hpp +8 -8
- data/ext/libsass/src/position.cpp +7 -26
- data/ext/libsass/src/position.hpp +44 -21
- data/ext/libsass/src/prelexer.cpp +6 -6
- data/ext/libsass/src/remove_placeholders.cpp +55 -56
- data/ext/libsass/src/remove_placeholders.hpp +21 -18
- data/ext/libsass/src/sass.cpp +16 -15
- data/ext/libsass/src/sass.hpp +10 -5
- data/ext/libsass/src/sass2scss.cpp +4 -4
- data/ext/libsass/src/sass_context.cpp +91 -122
- data/ext/libsass/src/sass_context.hpp +2 -2
- data/ext/libsass/src/sass_functions.cpp +1 -1
- data/ext/libsass/src/sass_values.cpp +8 -11
- data/ext/libsass/src/settings.hpp +19 -0
- data/ext/libsass/src/source.cpp +69 -0
- data/ext/libsass/src/source.hpp +95 -0
- data/ext/libsass/src/source_data.hpp +32 -0
- data/ext/libsass/src/source_map.cpp +22 -18
- data/ext/libsass/src/source_map.hpp +12 -9
- data/ext/libsass/src/stylesheet.cpp +22 -0
- data/ext/libsass/src/stylesheet.hpp +57 -0
- data/ext/libsass/src/to_value.cpp +2 -2
- data/ext/libsass/src/to_value.hpp +1 -1
- data/ext/libsass/src/units.cpp +24 -22
- data/ext/libsass/src/units.hpp +8 -8
- data/ext/libsass/src/utf8_string.cpp +9 -10
- data/ext/libsass/src/utf8_string.hpp +7 -6
- data/ext/libsass/src/util.cpp +48 -50
- data/ext/libsass/src/util.hpp +20 -21
- data/ext/libsass/src/util_string.cpp +111 -61
- data/ext/libsass/src/util_string.hpp +62 -8
- data/ext/libsass/src/values.cpp +12 -12
- data/lib/sassc/engine.rb +5 -3
- data/lib/sassc/functions_handler.rb +8 -8
- data/lib/sassc/native.rb +4 -6
- data/lib/sassc/script.rb +4 -4
- data/lib/sassc/version.rb +1 -1
- data/test/functions_test.rb +18 -1
- data/test/native_test.rb +4 -4
- metadata +29 -15
- data/ext/libsass/src/extend.cpp +0 -2132
- data/ext/libsass/src/extend.hpp +0 -86
- data/ext/libsass/src/node.cpp +0 -322
- data/ext/libsass/src/node.hpp +0 -118
- data/ext/libsass/src/paths.hpp +0 -71
- data/ext/libsass/src/sass_util.cpp +0 -152
- data/ext/libsass/src/sass_util.hpp +0 -256
- data/ext/libsass/src/subset_map.cpp +0 -58
- data/ext/libsass/src/subset_map.hpp +0 -76
- data/lib/sassc/native/lib_c.rb +0 -21
data/ext/libsass/src/ast.cpp
CHANGED
@@ -1,23 +1,12 @@
|
|
1
|
+
// sass.hpp must go before all system headers to get the
|
2
|
+
// __EXTENSIONS__ fix on Solaris.
|
1
3
|
#include "sass.hpp"
|
4
|
+
|
2
5
|
#include "ast.hpp"
|
3
|
-
#include "context.hpp"
|
4
|
-
#include "node.hpp"
|
5
|
-
#include "eval.hpp"
|
6
|
-
#include "extend.hpp"
|
7
|
-
#include "emitter.hpp"
|
8
|
-
#include "color_maps.hpp"
|
9
|
-
#include "ast_fwd_decl.hpp"
|
10
|
-
#include <set>
|
11
|
-
#include <iomanip>
|
12
|
-
#include <iostream>
|
13
|
-
#include <algorithm>
|
14
|
-
#include <functional>
|
15
|
-
#include <cctype>
|
16
|
-
#include <locale>
|
17
6
|
|
18
7
|
namespace Sass {
|
19
8
|
|
20
|
-
static Null sass_null(
|
9
|
+
static Null sass_null(SourceSpan("null"));
|
21
10
|
|
22
11
|
const char* sass_op_to_name(enum Sass_OP op) {
|
23
12
|
switch (op) {
|
@@ -64,12 +53,12 @@ namespace Sass {
|
|
64
53
|
/////////////////////////////////////////////////////////////////////////
|
65
54
|
/////////////////////////////////////////////////////////////////////////
|
66
55
|
|
67
|
-
void AST_Node::update_pstate(const
|
56
|
+
void AST_Node::update_pstate(const SourceSpan& pstate)
|
68
57
|
{
|
69
|
-
pstate_.offset += pstate - pstate_ + pstate.offset;
|
58
|
+
pstate_.offset += pstate.position - pstate_.position + pstate.offset;
|
70
59
|
}
|
71
60
|
|
72
|
-
|
61
|
+
sass::string AST_Node::to_string(Sass_Inspect_Options opt) const
|
73
62
|
{
|
74
63
|
Sass_Output_Options out(opt);
|
75
64
|
Emitter emitter(out);
|
@@ -80,25 +69,27 @@ namespace Sass {
|
|
80
69
|
return i.get_buffer();
|
81
70
|
}
|
82
71
|
|
83
|
-
|
72
|
+
sass::string AST_Node::to_css(Sass_Inspect_Options opt) const
|
84
73
|
{
|
85
|
-
|
74
|
+
opt.output_style = TO_CSS;
|
75
|
+
Sass_Output_Options out(opt);
|
76
|
+
Emitter emitter(out);
|
77
|
+
Inspect i(emitter);
|
78
|
+
i.in_declaration = true;
|
79
|
+
// ToDo: inspect should be const
|
80
|
+
const_cast<AST_Node*>(this)->perform(&i);
|
81
|
+
return i.get_buffer();
|
86
82
|
}
|
87
83
|
|
88
|
-
|
89
|
-
/////////////////////////////////////////////////////////////////////////
|
90
|
-
|
91
|
-
Expression_Obj Hashed::at(Expression_Obj k) const
|
84
|
+
sass::string AST_Node::to_string() const
|
92
85
|
{
|
93
|
-
|
94
|
-
{ return elements_.at(k); }
|
95
|
-
else { return {}; }
|
86
|
+
return to_string({ NESTED, 5 });
|
96
87
|
}
|
97
88
|
|
98
89
|
/////////////////////////////////////////////////////////////////////////
|
99
90
|
/////////////////////////////////////////////////////////////////////////
|
100
91
|
|
101
|
-
Statement::Statement(
|
92
|
+
Statement::Statement(SourceSpan pstate, Type st, size_t t)
|
102
93
|
: AST_Node(pstate), statement_type_(st), tabs_(t), group_end_(false)
|
103
94
|
{ }
|
104
95
|
Statement::Statement(const Statement* ptr)
|
@@ -126,7 +117,7 @@ namespace Sass {
|
|
126
117
|
/////////////////////////////////////////////////////////////////////////
|
127
118
|
/////////////////////////////////////////////////////////////////////////
|
128
119
|
|
129
|
-
Block::Block(
|
120
|
+
Block::Block(SourceSpan pstate, size_t s, bool r)
|
130
121
|
: Statement(pstate),
|
131
122
|
Vectorized<Statement_Obj>(s),
|
132
123
|
is_root_(r)
|
@@ -137,6 +128,14 @@ namespace Sass {
|
|
137
128
|
is_root_(ptr->is_root_)
|
138
129
|
{ }
|
139
130
|
|
131
|
+
bool Block::isInvisible() const
|
132
|
+
{
|
133
|
+
for (auto& item : elements()) {
|
134
|
+
if (!item->is_invisible()) return false;
|
135
|
+
}
|
136
|
+
return true;
|
137
|
+
}
|
138
|
+
|
140
139
|
bool Block::has_content()
|
141
140
|
{
|
142
141
|
for (size_t i = 0, L = elements().size(); i < L; ++i) {
|
@@ -148,14 +147,14 @@ namespace Sass {
|
|
148
147
|
/////////////////////////////////////////////////////////////////////////
|
149
148
|
/////////////////////////////////////////////////////////////////////////
|
150
149
|
|
151
|
-
|
150
|
+
ParentStatement::ParentStatement(SourceSpan pstate, Block_Obj b)
|
152
151
|
: Statement(pstate), block_(b)
|
153
152
|
{ }
|
154
|
-
|
153
|
+
ParentStatement::ParentStatement(const ParentStatement* ptr)
|
155
154
|
: Statement(ptr), block_(ptr->block_)
|
156
155
|
{ }
|
157
156
|
|
158
|
-
bool
|
157
|
+
bool ParentStatement::has_content()
|
159
158
|
{
|
160
159
|
return (block_ && block_->has_content()) || Statement::has_content();
|
161
160
|
}
|
@@ -163,19 +162,20 @@ namespace Sass {
|
|
163
162
|
/////////////////////////////////////////////////////////////////////////
|
164
163
|
/////////////////////////////////////////////////////////////////////////
|
165
164
|
|
166
|
-
|
167
|
-
:
|
165
|
+
StyleRule::StyleRule(SourceSpan pstate, SelectorListObj s, Block_Obj b)
|
166
|
+
: ParentStatement(pstate, b), selector_(s), schema_(), is_root_(false)
|
168
167
|
{ statement_type(RULESET); }
|
169
|
-
|
170
|
-
:
|
168
|
+
StyleRule::StyleRule(const StyleRule* ptr)
|
169
|
+
: ParentStatement(ptr),
|
171
170
|
selector_(ptr->selector_),
|
171
|
+
schema_(ptr->schema_),
|
172
172
|
is_root_(ptr->is_root_)
|
173
173
|
{ statement_type(RULESET); }
|
174
174
|
|
175
|
-
bool
|
176
|
-
if (
|
177
|
-
for (size_t i = 0, L = sl->length(); i < L;
|
178
|
-
if (!(*sl)[i]->
|
175
|
+
bool StyleRule::is_invisible() const {
|
176
|
+
if (const SelectorList * sl = Cast<SelectorList>(selector())) {
|
177
|
+
for (size_t i = 0, L = sl->length(); i < L; i += 1)
|
178
|
+
if (!(*sl)[i]->isInvisible()) return false;
|
179
179
|
}
|
180
180
|
return true;
|
181
181
|
}
|
@@ -183,7 +183,7 @@ namespace Sass {
|
|
183
183
|
/////////////////////////////////////////////////////////////////////////
|
184
184
|
/////////////////////////////////////////////////////////////////////////
|
185
185
|
|
186
|
-
Bubble::Bubble(
|
186
|
+
Bubble::Bubble(SourceSpan pstate, Statement_Obj n, Statement_Obj g, size_t t)
|
187
187
|
: Statement(pstate, Statement::BUBBLE, t), node_(n), group_end_(g == nullptr)
|
188
188
|
{ }
|
189
189
|
Bubble::Bubble(const Bubble* ptr)
|
@@ -200,11 +200,11 @@ namespace Sass {
|
|
200
200
|
/////////////////////////////////////////////////////////////////////////
|
201
201
|
/////////////////////////////////////////////////////////////////////////
|
202
202
|
|
203
|
-
Trace::Trace(
|
204
|
-
:
|
203
|
+
Trace::Trace(SourceSpan pstate, sass::string n, Block_Obj b, char type)
|
204
|
+
: ParentStatement(pstate, b), type_(type), name_(n)
|
205
205
|
{ }
|
206
206
|
Trace::Trace(const Trace* ptr)
|
207
|
-
:
|
207
|
+
: ParentStatement(ptr),
|
208
208
|
type_(ptr->type_),
|
209
209
|
name_(ptr->name_)
|
210
210
|
{ }
|
@@ -212,48 +212,25 @@ namespace Sass {
|
|
212
212
|
/////////////////////////////////////////////////////////////////////////
|
213
213
|
/////////////////////////////////////////////////////////////////////////
|
214
214
|
|
215
|
-
|
216
|
-
:
|
217
|
-
{ statement_type(MEDIA); }
|
218
|
-
Media_Block::Media_Block(const Media_Block* ptr)
|
219
|
-
: Has_Block(ptr), media_queries_(ptr->media_queries_)
|
220
|
-
{ statement_type(MEDIA); }
|
221
|
-
|
222
|
-
bool Media_Block::is_invisible() const {
|
223
|
-
for (size_t i = 0, L = block()->length(); i < L; ++i) {
|
224
|
-
Statement_Obj stm = block()->at(i);
|
225
|
-
if (!stm->is_invisible()) return false;
|
226
|
-
}
|
227
|
-
return true;
|
228
|
-
}
|
229
|
-
|
230
|
-
bool Media_Block::bubbles()
|
231
|
-
{
|
232
|
-
return true;
|
233
|
-
}
|
234
|
-
|
235
|
-
/////////////////////////////////////////////////////////////////////////
|
236
|
-
/////////////////////////////////////////////////////////////////////////
|
237
|
-
|
238
|
-
Directive::Directive(ParserState pstate, std::string kwd, Selector_List_Obj sel, Block_Obj b, Expression_Obj val)
|
239
|
-
: Has_Block(pstate, b), keyword_(kwd), selector_(sel), value_(val) // set value manually if needed
|
215
|
+
AtRule::AtRule(SourceSpan pstate, sass::string kwd, SelectorListObj sel, Block_Obj b, ExpressionObj val)
|
216
|
+
: ParentStatement(pstate, b), keyword_(kwd), selector_(sel), value_(val) // set value manually if needed
|
240
217
|
{ statement_type(DIRECTIVE); }
|
241
|
-
|
242
|
-
:
|
218
|
+
AtRule::AtRule(const AtRule* ptr)
|
219
|
+
: ParentStatement(ptr),
|
243
220
|
keyword_(ptr->keyword_),
|
244
221
|
selector_(ptr->selector_),
|
245
222
|
value_(ptr->value_) // set value manually if needed
|
246
223
|
{ statement_type(DIRECTIVE); }
|
247
224
|
|
248
|
-
bool
|
225
|
+
bool AtRule::bubbles() { return is_keyframes() || is_media(); }
|
249
226
|
|
250
|
-
bool
|
227
|
+
bool AtRule::is_media() {
|
251
228
|
return keyword_.compare("@-webkit-media") == 0 ||
|
252
229
|
keyword_.compare("@-moz-media") == 0 ||
|
253
230
|
keyword_.compare("@-o-media") == 0 ||
|
254
231
|
keyword_.compare("@media") == 0;
|
255
232
|
}
|
256
|
-
bool
|
233
|
+
bool AtRule::is_keyframes() {
|
257
234
|
return keyword_.compare("@-webkit-keyframes") == 0 ||
|
258
235
|
keyword_.compare("@-moz-keyframes") == 0 ||
|
259
236
|
keyword_.compare("@-o-keyframes") == 0 ||
|
@@ -263,21 +240,21 @@ namespace Sass {
|
|
263
240
|
/////////////////////////////////////////////////////////////////////////
|
264
241
|
/////////////////////////////////////////////////////////////////////////
|
265
242
|
|
266
|
-
Keyframe_Rule::Keyframe_Rule(
|
267
|
-
:
|
243
|
+
Keyframe_Rule::Keyframe_Rule(SourceSpan pstate, Block_Obj b)
|
244
|
+
: ParentStatement(pstate, b), name_()
|
268
245
|
{ statement_type(KEYFRAMERULE); }
|
269
246
|
Keyframe_Rule::Keyframe_Rule(const Keyframe_Rule* ptr)
|
270
|
-
:
|
247
|
+
: ParentStatement(ptr), name_(ptr->name_)
|
271
248
|
{ statement_type(KEYFRAMERULE); }
|
272
249
|
|
273
250
|
/////////////////////////////////////////////////////////////////////////
|
274
251
|
/////////////////////////////////////////////////////////////////////////
|
275
252
|
|
276
|
-
Declaration::Declaration(
|
277
|
-
:
|
253
|
+
Declaration::Declaration(SourceSpan pstate, String_Obj prop, ExpressionObj val, bool i, bool c, Block_Obj b)
|
254
|
+
: ParentStatement(pstate, b), property_(prop), value_(val), is_important_(i), is_custom_property_(c), is_indented_(false)
|
278
255
|
{ statement_type(DECLARATION); }
|
279
256
|
Declaration::Declaration(const Declaration* ptr)
|
280
|
-
:
|
257
|
+
: ParentStatement(ptr),
|
281
258
|
property_(ptr->property_),
|
282
259
|
value_(ptr->value_),
|
283
260
|
is_important_(ptr->is_important_),
|
@@ -294,7 +271,7 @@ namespace Sass {
|
|
294
271
|
/////////////////////////////////////////////////////////////////////////
|
295
272
|
/////////////////////////////////////////////////////////////////////////
|
296
273
|
|
297
|
-
Assignment::Assignment(
|
274
|
+
Assignment::Assignment(SourceSpan pstate, sass::string var, ExpressionObj val, bool is_default, bool is_global)
|
298
275
|
: Statement(pstate), variable_(var), value_(val), is_default_(is_default), is_global_(is_global)
|
299
276
|
{ statement_type(ASSIGNMENT); }
|
300
277
|
Assignment::Assignment(const Assignment* ptr)
|
@@ -308,10 +285,10 @@ namespace Sass {
|
|
308
285
|
/////////////////////////////////////////////////////////////////////////
|
309
286
|
/////////////////////////////////////////////////////////////////////////
|
310
287
|
|
311
|
-
Import::Import(
|
288
|
+
Import::Import(SourceSpan pstate)
|
312
289
|
: Statement(pstate),
|
313
|
-
urls_(
|
314
|
-
incs_(
|
290
|
+
urls_(sass::vector<ExpressionObj>()),
|
291
|
+
incs_(sass::vector<Include>()),
|
315
292
|
import_queries_()
|
316
293
|
{ statement_type(IMPORT); }
|
317
294
|
Import::Import(const Import* ptr)
|
@@ -321,56 +298,56 @@ namespace Sass {
|
|
321
298
|
import_queries_(ptr->import_queries_)
|
322
299
|
{ statement_type(IMPORT); }
|
323
300
|
|
324
|
-
|
325
|
-
|
301
|
+
sass::vector<Include>& Import::incs() { return incs_; }
|
302
|
+
sass::vector<ExpressionObj>& Import::urls() { return urls_; }
|
326
303
|
|
327
304
|
/////////////////////////////////////////////////////////////////////////
|
328
305
|
/////////////////////////////////////////////////////////////////////////
|
329
306
|
|
330
|
-
Import_Stub::Import_Stub(
|
307
|
+
Import_Stub::Import_Stub(SourceSpan pstate, Include res)
|
331
308
|
: Statement(pstate), resource_(res)
|
332
309
|
{ statement_type(IMPORT_STUB); }
|
333
310
|
Import_Stub::Import_Stub(const Import_Stub* ptr)
|
334
311
|
: Statement(ptr), resource_(ptr->resource_)
|
335
312
|
{ statement_type(IMPORT_STUB); }
|
336
313
|
Include Import_Stub::resource() { return resource_; };
|
337
|
-
|
338
|
-
|
314
|
+
sass::string Import_Stub::imp_path() { return resource_.imp_path; };
|
315
|
+
sass::string Import_Stub::abs_path() { return resource_.abs_path; };
|
339
316
|
|
340
317
|
/////////////////////////////////////////////////////////////////////////
|
341
318
|
/////////////////////////////////////////////////////////////////////////
|
342
319
|
|
343
|
-
|
320
|
+
WarningRule::WarningRule(SourceSpan pstate, ExpressionObj msg)
|
344
321
|
: Statement(pstate), message_(msg)
|
345
322
|
{ statement_type(WARNING); }
|
346
|
-
|
323
|
+
WarningRule::WarningRule(const WarningRule* ptr)
|
347
324
|
: Statement(ptr), message_(ptr->message_)
|
348
325
|
{ statement_type(WARNING); }
|
349
326
|
|
350
327
|
/////////////////////////////////////////////////////////////////////////
|
351
328
|
/////////////////////////////////////////////////////////////////////////
|
352
329
|
|
353
|
-
|
330
|
+
ErrorRule::ErrorRule(SourceSpan pstate, ExpressionObj msg)
|
354
331
|
: Statement(pstate), message_(msg)
|
355
332
|
{ statement_type(ERROR); }
|
356
|
-
|
333
|
+
ErrorRule::ErrorRule(const ErrorRule* ptr)
|
357
334
|
: Statement(ptr), message_(ptr->message_)
|
358
335
|
{ statement_type(ERROR); }
|
359
336
|
|
360
337
|
/////////////////////////////////////////////////////////////////////////
|
361
338
|
/////////////////////////////////////////////////////////////////////////
|
362
339
|
|
363
|
-
|
340
|
+
DebugRule::DebugRule(SourceSpan pstate, ExpressionObj val)
|
364
341
|
: Statement(pstate), value_(val)
|
365
342
|
{ statement_type(DEBUGSTMT); }
|
366
|
-
|
343
|
+
DebugRule::DebugRule(const DebugRule* ptr)
|
367
344
|
: Statement(ptr), value_(ptr->value_)
|
368
345
|
{ statement_type(DEBUGSTMT); }
|
369
346
|
|
370
347
|
/////////////////////////////////////////////////////////////////////////
|
371
348
|
/////////////////////////////////////////////////////////////////////////
|
372
349
|
|
373
|
-
Comment::Comment(
|
350
|
+
Comment::Comment(SourceSpan pstate, String_Obj txt, bool is_important)
|
374
351
|
: Statement(pstate), text_(txt), is_important_(is_important)
|
375
352
|
{ statement_type(COMMENT); }
|
376
353
|
Comment::Comment(const Comment* ptr)
|
@@ -387,30 +364,30 @@ namespace Sass {
|
|
387
364
|
/////////////////////////////////////////////////////////////////////////
|
388
365
|
/////////////////////////////////////////////////////////////////////////
|
389
366
|
|
390
|
-
If::If(
|
391
|
-
:
|
367
|
+
If::If(SourceSpan pstate, ExpressionObj pred, Block_Obj con, Block_Obj alt)
|
368
|
+
: ParentStatement(pstate, con), predicate_(pred), alternative_(alt)
|
392
369
|
{ statement_type(IF); }
|
393
370
|
If::If(const If* ptr)
|
394
|
-
:
|
371
|
+
: ParentStatement(ptr),
|
395
372
|
predicate_(ptr->predicate_),
|
396
373
|
alternative_(ptr->alternative_)
|
397
374
|
{ statement_type(IF); }
|
398
375
|
|
399
376
|
bool If::has_content()
|
400
377
|
{
|
401
|
-
return
|
378
|
+
return ParentStatement::has_content() || (alternative_ && alternative_->has_content());
|
402
379
|
}
|
403
380
|
|
404
381
|
/////////////////////////////////////////////////////////////////////////
|
405
382
|
/////////////////////////////////////////////////////////////////////////
|
406
383
|
|
407
|
-
|
408
|
-
|
409
|
-
:
|
384
|
+
ForRule::ForRule(SourceSpan pstate,
|
385
|
+
sass::string var, ExpressionObj lo, ExpressionObj hi, Block_Obj b, bool inc)
|
386
|
+
: ParentStatement(pstate, b),
|
410
387
|
variable_(var), lower_bound_(lo), upper_bound_(hi), is_inclusive_(inc)
|
411
388
|
{ statement_type(FOR); }
|
412
|
-
|
413
|
-
:
|
389
|
+
ForRule::ForRule(const ForRule* ptr)
|
390
|
+
: ParentStatement(ptr),
|
414
391
|
variable_(ptr->variable_),
|
415
392
|
lower_bound_(ptr->lower_bound_),
|
416
393
|
upper_bound_(ptr->upper_bound_),
|
@@ -420,27 +397,27 @@ namespace Sass {
|
|
420
397
|
/////////////////////////////////////////////////////////////////////////
|
421
398
|
/////////////////////////////////////////////////////////////////////////
|
422
399
|
|
423
|
-
|
424
|
-
:
|
400
|
+
EachRule::EachRule(SourceSpan pstate, sass::vector<sass::string> vars, ExpressionObj lst, Block_Obj b)
|
401
|
+
: ParentStatement(pstate, b), variables_(vars), list_(lst)
|
425
402
|
{ statement_type(EACH); }
|
426
|
-
|
427
|
-
:
|
403
|
+
EachRule::EachRule(const EachRule* ptr)
|
404
|
+
: ParentStatement(ptr), variables_(ptr->variables_), list_(ptr->list_)
|
428
405
|
{ statement_type(EACH); }
|
429
406
|
|
430
407
|
/////////////////////////////////////////////////////////////////////////
|
431
408
|
/////////////////////////////////////////////////////////////////////////
|
432
409
|
|
433
|
-
|
434
|
-
:
|
410
|
+
WhileRule::WhileRule(SourceSpan pstate, ExpressionObj pred, Block_Obj b)
|
411
|
+
: ParentStatement(pstate, b), predicate_(pred)
|
435
412
|
{ statement_type(WHILE); }
|
436
|
-
|
437
|
-
:
|
413
|
+
WhileRule::WhileRule(const WhileRule* ptr)
|
414
|
+
: ParentStatement(ptr), predicate_(ptr->predicate_)
|
438
415
|
{ statement_type(WHILE); }
|
439
416
|
|
440
417
|
/////////////////////////////////////////////////////////////////////////
|
441
418
|
/////////////////////////////////////////////////////////////////////////
|
442
419
|
|
443
|
-
Return::Return(
|
420
|
+
Return::Return(SourceSpan pstate, ExpressionObj val)
|
444
421
|
: Statement(pstate), value_(val)
|
445
422
|
{ statement_type(RETURN); }
|
446
423
|
Return::Return(const Return* ptr)
|
@@ -450,18 +427,26 @@ namespace Sass {
|
|
450
427
|
/////////////////////////////////////////////////////////////////////////
|
451
428
|
/////////////////////////////////////////////////////////////////////////
|
452
429
|
|
453
|
-
|
454
|
-
: Statement(pstate), selector_(s)
|
430
|
+
ExtendRule::ExtendRule(SourceSpan pstate, SelectorListObj s)
|
431
|
+
: Statement(pstate), isOptional_(false), selector_(s), schema_()
|
455
432
|
{ statement_type(EXTEND); }
|
456
|
-
|
457
|
-
|
433
|
+
ExtendRule::ExtendRule(SourceSpan pstate, Selector_Schema_Obj s)
|
434
|
+
: Statement(pstate), isOptional_(false), selector_(), schema_(s)
|
435
|
+
{
|
436
|
+
statement_type(EXTEND);
|
437
|
+
}
|
438
|
+
ExtendRule::ExtendRule(const ExtendRule* ptr)
|
439
|
+
: Statement(ptr),
|
440
|
+
isOptional_(ptr->isOptional_),
|
441
|
+
selector_(ptr->selector_),
|
442
|
+
schema_(ptr->schema_)
|
458
443
|
{ statement_type(EXTEND); }
|
459
444
|
|
460
445
|
/////////////////////////////////////////////////////////////////////////
|
461
446
|
/////////////////////////////////////////////////////////////////////////
|
462
447
|
|
463
448
|
Definition::Definition(const Definition* ptr)
|
464
|
-
:
|
449
|
+
: ParentStatement(ptr),
|
465
450
|
name_(ptr->name_),
|
466
451
|
parameters_(ptr->parameters_),
|
467
452
|
environment_(ptr->environment_),
|
@@ -473,12 +458,12 @@ namespace Sass {
|
|
473
458
|
signature_(ptr->signature_)
|
474
459
|
{ }
|
475
460
|
|
476
|
-
Definition::Definition(
|
477
|
-
|
461
|
+
Definition::Definition(SourceSpan pstate,
|
462
|
+
sass::string n,
|
478
463
|
Parameters_Obj params,
|
479
464
|
Block_Obj b,
|
480
465
|
Type t)
|
481
|
-
:
|
466
|
+
: ParentStatement(pstate, b),
|
482
467
|
name_(n),
|
483
468
|
parameters_(params),
|
484
469
|
environment_(0),
|
@@ -490,13 +475,13 @@ namespace Sass {
|
|
490
475
|
signature_(0)
|
491
476
|
{ }
|
492
477
|
|
493
|
-
Definition::Definition(
|
478
|
+
Definition::Definition(SourceSpan pstate,
|
494
479
|
Signature sig,
|
495
|
-
|
480
|
+
sass::string n,
|
496
481
|
Parameters_Obj params,
|
497
482
|
Native_Function func_ptr,
|
498
483
|
bool overload_stub)
|
499
|
-
:
|
484
|
+
: ParentStatement(pstate, {}),
|
500
485
|
name_(n),
|
501
486
|
parameters_(params),
|
502
487
|
environment_(0),
|
@@ -508,12 +493,12 @@ namespace Sass {
|
|
508
493
|
signature_(sig)
|
509
494
|
{ }
|
510
495
|
|
511
|
-
Definition::Definition(
|
496
|
+
Definition::Definition(SourceSpan pstate,
|
512
497
|
Signature sig,
|
513
|
-
|
498
|
+
sass::string n,
|
514
499
|
Parameters_Obj params,
|
515
500
|
Sass_Function_Entry c_func)
|
516
|
-
:
|
501
|
+
: ParentStatement(pstate, {}),
|
517
502
|
name_(n),
|
518
503
|
parameters_(params),
|
519
504
|
environment_(0),
|
@@ -528,11 +513,11 @@ namespace Sass {
|
|
528
513
|
/////////////////////////////////////////////////////////////////////////
|
529
514
|
/////////////////////////////////////////////////////////////////////////
|
530
515
|
|
531
|
-
Mixin_Call::Mixin_Call(
|
532
|
-
:
|
516
|
+
Mixin_Call::Mixin_Call(SourceSpan pstate, sass::string n, Arguments_Obj args, Parameters_Obj b_params, Block_Obj b)
|
517
|
+
: ParentStatement(pstate, b), name_(n), arguments_(args), block_parameters_(b_params)
|
533
518
|
{ }
|
534
519
|
Mixin_Call::Mixin_Call(const Mixin_Call* ptr)
|
535
|
-
:
|
520
|
+
: ParentStatement(ptr),
|
536
521
|
name_(ptr->name_),
|
537
522
|
arguments_(ptr->arguments_),
|
538
523
|
block_parameters_(ptr->block_parameters_)
|
@@ -541,7 +526,7 @@ namespace Sass {
|
|
541
526
|
/////////////////////////////////////////////////////////////////////////
|
542
527
|
/////////////////////////////////////////////////////////////////////////
|
543
528
|
|
544
|
-
Content::Content(
|
529
|
+
Content::Content(SourceSpan pstate, Arguments_Obj args)
|
545
530
|
: Statement(pstate),
|
546
531
|
arguments_(args)
|
547
532
|
{ statement_type(CONTENT); }
|
@@ -553,7 +538,7 @@ namespace Sass {
|
|
553
538
|
/////////////////////////////////////////////////////////////////////////
|
554
539
|
/////////////////////////////////////////////////////////////////////////
|
555
540
|
|
556
|
-
Expression::Expression(
|
541
|
+
Expression::Expression(SourceSpan pstate, bool d, bool e, bool i, Type ct)
|
557
542
|
: AST_Node(pstate),
|
558
543
|
is_delayed_(d),
|
559
544
|
is_expanded_(e),
|
@@ -572,7 +557,7 @@ namespace Sass {
|
|
572
557
|
/////////////////////////////////////////////////////////////////////////
|
573
558
|
/////////////////////////////////////////////////////////////////////////
|
574
559
|
|
575
|
-
Unary_Expression::Unary_Expression(
|
560
|
+
Unary_Expression::Unary_Expression(SourceSpan pstate, Type t, ExpressionObj o)
|
576
561
|
: Expression(pstate), optype_(t), operand_(o), hash_(0)
|
577
562
|
{ }
|
578
563
|
Unary_Expression::Unary_Expression(const Unary_Expression* ptr)
|
@@ -581,7 +566,7 @@ namespace Sass {
|
|
581
566
|
operand_(ptr->operand_),
|
582
567
|
hash_(ptr->hash_)
|
583
568
|
{ }
|
584
|
-
const
|
569
|
+
const sass::string Unary_Expression::type_name() {
|
585
570
|
switch (optype_) {
|
586
571
|
case PLUS: return "plus";
|
587
572
|
case MINUS: return "minus";
|
@@ -617,7 +602,7 @@ namespace Sass {
|
|
617
602
|
/////////////////////////////////////////////////////////////////////////
|
618
603
|
/////////////////////////////////////////////////////////////////////////
|
619
604
|
|
620
|
-
Argument::Argument(
|
605
|
+
Argument::Argument(SourceSpan pstate, ExpressionObj val, sass::string n, bool rest, bool keyword)
|
621
606
|
: Expression(pstate), value_(val), name_(n), is_rest_argument_(rest), is_keyword_argument_(keyword), hash_(0)
|
622
607
|
{
|
623
608
|
if (!name_.empty() && is_rest_argument_) {
|
@@ -661,7 +646,7 @@ namespace Sass {
|
|
661
646
|
size_t Argument::hash() const
|
662
647
|
{
|
663
648
|
if (hash_ == 0) {
|
664
|
-
hash_ = std::hash<
|
649
|
+
hash_ = std::hash<sass::string>()(name());
|
665
650
|
hash_combine(hash_, value()->hash());
|
666
651
|
}
|
667
652
|
return hash_;
|
@@ -670,7 +655,7 @@ namespace Sass {
|
|
670
655
|
/////////////////////////////////////////////////////////////////////////
|
671
656
|
/////////////////////////////////////////////////////////////////////////
|
672
657
|
|
673
|
-
Arguments::Arguments(
|
658
|
+
Arguments::Arguments(SourceSpan pstate)
|
674
659
|
: Expression(pstate),
|
675
660
|
Vectorized<Argument_Obj>(),
|
676
661
|
has_named_arguments_(false),
|
@@ -753,13 +738,13 @@ namespace Sass {
|
|
753
738
|
/////////////////////////////////////////////////////////////////////////
|
754
739
|
/////////////////////////////////////////////////////////////////////////
|
755
740
|
|
756
|
-
Media_Query::Media_Query(
|
757
|
-
: Expression(pstate), Vectorized<
|
741
|
+
Media_Query::Media_Query(SourceSpan pstate, String_Obj t, size_t s, bool n, bool r)
|
742
|
+
: Expression(pstate), Vectorized<Media_Query_ExpressionObj>(s),
|
758
743
|
media_type_(t), is_negated_(n), is_restricted_(r)
|
759
744
|
{ }
|
760
745
|
Media_Query::Media_Query(const Media_Query* ptr)
|
761
746
|
: Expression(ptr),
|
762
|
-
Vectorized<
|
747
|
+
Vectorized<Media_Query_ExpressionObj>(*ptr),
|
763
748
|
media_type_(ptr->media_type_),
|
764
749
|
is_negated_(ptr->is_negated_),
|
765
750
|
is_restricted_(ptr->is_restricted_)
|
@@ -768,8 +753,8 @@ namespace Sass {
|
|
768
753
|
/////////////////////////////////////////////////////////////////////////
|
769
754
|
/////////////////////////////////////////////////////////////////////////
|
770
755
|
|
771
|
-
Media_Query_Expression::Media_Query_Expression(
|
772
|
-
|
756
|
+
Media_Query_Expression::Media_Query_Expression(SourceSpan pstate,
|
757
|
+
ExpressionObj f, ExpressionObj v, bool i)
|
773
758
|
: Expression(pstate), feature_(f), value_(v), is_interpolated_(i)
|
774
759
|
{ }
|
775
760
|
Media_Query_Expression::Media_Query_Expression(const Media_Query_Expression* ptr)
|
@@ -782,7 +767,7 @@ namespace Sass {
|
|
782
767
|
/////////////////////////////////////////////////////////////////////////
|
783
768
|
/////////////////////////////////////////////////////////////////////////
|
784
769
|
|
785
|
-
At_Root_Query::At_Root_Query(
|
770
|
+
At_Root_Query::At_Root_Query(SourceSpan pstate, ExpressionObj f, ExpressionObj v, bool i)
|
786
771
|
: Expression(pstate), feature_(f), value_(v)
|
787
772
|
{ }
|
788
773
|
At_Root_Query::At_Root_Query(const At_Root_Query* ptr)
|
@@ -791,11 +776,11 @@ namespace Sass {
|
|
791
776
|
value_(ptr->value_)
|
792
777
|
{ }
|
793
778
|
|
794
|
-
bool At_Root_Query::exclude(
|
779
|
+
bool At_Root_Query::exclude(sass::string str)
|
795
780
|
{
|
796
781
|
bool with = feature() && unquote(feature()->to_string()).compare("with") == 0;
|
797
782
|
List* l = static_cast<List*>(value().ptr());
|
798
|
-
|
783
|
+
sass::string v;
|
799
784
|
|
800
785
|
if (with)
|
801
786
|
{
|
@@ -822,18 +807,18 @@ namespace Sass {
|
|
822
807
|
/////////////////////////////////////////////////////////////////////////
|
823
808
|
/////////////////////////////////////////////////////////////////////////
|
824
809
|
|
825
|
-
|
826
|
-
:
|
810
|
+
AtRootRule::AtRootRule(SourceSpan pstate, Block_Obj b, At_Root_Query_Obj e)
|
811
|
+
: ParentStatement(pstate, b), expression_(e)
|
827
812
|
{ statement_type(ATROOT); }
|
828
|
-
|
829
|
-
:
|
813
|
+
AtRootRule::AtRootRule(const AtRootRule* ptr)
|
814
|
+
: ParentStatement(ptr), expression_(ptr->expression_)
|
830
815
|
{ statement_type(ATROOT); }
|
831
816
|
|
832
|
-
bool
|
817
|
+
bool AtRootRule::bubbles() {
|
833
818
|
return true;
|
834
819
|
}
|
835
820
|
|
836
|
-
bool
|
821
|
+
bool AtRootRule::exclude_node(Statement_Obj s) {
|
837
822
|
if (expression() == nullptr)
|
838
823
|
{
|
839
824
|
return s->statement_type() == Statement::RULESET;
|
@@ -841,9 +826,9 @@ namespace Sass {
|
|
841
826
|
|
842
827
|
if (s->statement_type() == Statement::DIRECTIVE)
|
843
828
|
{
|
844
|
-
if (
|
829
|
+
if (AtRuleObj dir = Cast<AtRule>(s))
|
845
830
|
{
|
846
|
-
|
831
|
+
sass::string keyword(dir->keyword());
|
847
832
|
if (keyword.length() > 0) keyword.erase(0, 1);
|
848
833
|
return expression()->exclude(keyword);
|
849
834
|
}
|
@@ -860,7 +845,7 @@ namespace Sass {
|
|
860
845
|
{
|
861
846
|
return expression()->exclude("supports");
|
862
847
|
}
|
863
|
-
if (
|
848
|
+
if (AtRuleObj dir = Cast<AtRule>(s))
|
864
849
|
{
|
865
850
|
if (dir->is_keyframes()) return expression()->exclude("keyframes");
|
866
851
|
}
|
@@ -870,7 +855,7 @@ namespace Sass {
|
|
870
855
|
/////////////////////////////////////////////////////////////////////////
|
871
856
|
/////////////////////////////////////////////////////////////////////////
|
872
857
|
|
873
|
-
Parameter::Parameter(
|
858
|
+
Parameter::Parameter(SourceSpan pstate, sass::string n, ExpressionObj def, bool rest)
|
874
859
|
: AST_Node(pstate), name_(n), default_value_(def), is_rest_parameter_(rest)
|
875
860
|
{ }
|
876
861
|
Parameter::Parameter(const Parameter* ptr)
|
@@ -883,7 +868,7 @@ namespace Sass {
|
|
883
868
|
/////////////////////////////////////////////////////////////////////////
|
884
869
|
/////////////////////////////////////////////////////////////////////////
|
885
870
|
|
886
|
-
Parameters::Parameters(
|
871
|
+
Parameters::Parameters(SourceSpan pstate)
|
887
872
|
: AST_Node(pstate),
|
888
873
|
Vectorized<Parameter_Obj>(),
|
889
874
|
has_optional_parameters_(false),
|
@@ -923,23 +908,28 @@ namespace Sass {
|
|
923
908
|
/////////////////////////////////////////////////////////////////////////
|
924
909
|
/////////////////////////////////////////////////////////////////////////
|
925
910
|
|
926
|
-
|
927
|
-
|
911
|
+
// If you forget to add a class here you will get
|
912
|
+
// undefined reference to `vtable for Sass::Class'
|
913
|
+
|
914
|
+
IMPLEMENT_AST_OPERATORS(StyleRule);
|
915
|
+
IMPLEMENT_AST_OPERATORS(MediaRule);
|
916
|
+
IMPLEMENT_AST_OPERATORS(CssMediaRule);
|
917
|
+
IMPLEMENT_AST_OPERATORS(CssMediaQuery);
|
928
918
|
IMPLEMENT_AST_OPERATORS(Import);
|
929
919
|
IMPLEMENT_AST_OPERATORS(Import_Stub);
|
930
|
-
IMPLEMENT_AST_OPERATORS(
|
931
|
-
IMPLEMENT_AST_OPERATORS(
|
932
|
-
IMPLEMENT_AST_OPERATORS(
|
933
|
-
IMPLEMENT_AST_OPERATORS(
|
934
|
-
IMPLEMENT_AST_OPERATORS(
|
920
|
+
IMPLEMENT_AST_OPERATORS(AtRule);
|
921
|
+
IMPLEMENT_AST_OPERATORS(AtRootRule);
|
922
|
+
IMPLEMENT_AST_OPERATORS(WhileRule);
|
923
|
+
IMPLEMENT_AST_OPERATORS(EachRule);
|
924
|
+
IMPLEMENT_AST_OPERATORS(ForRule);
|
935
925
|
IMPLEMENT_AST_OPERATORS(If);
|
936
926
|
IMPLEMENT_AST_OPERATORS(Mixin_Call);
|
937
|
-
IMPLEMENT_AST_OPERATORS(
|
927
|
+
IMPLEMENT_AST_OPERATORS(ExtendRule);
|
938
928
|
IMPLEMENT_AST_OPERATORS(Media_Query);
|
939
929
|
IMPLEMENT_AST_OPERATORS(Media_Query_Expression);
|
940
|
-
IMPLEMENT_AST_OPERATORS(
|
941
|
-
IMPLEMENT_AST_OPERATORS(
|
942
|
-
IMPLEMENT_AST_OPERATORS(
|
930
|
+
IMPLEMENT_AST_OPERATORS(DebugRule);
|
931
|
+
IMPLEMENT_AST_OPERATORS(ErrorRule);
|
932
|
+
IMPLEMENT_AST_OPERATORS(WarningRule);
|
943
933
|
IMPLEMENT_AST_OPERATORS(Assignment);
|
944
934
|
IMPLEMENT_AST_OPERATORS(Return);
|
945
935
|
IMPLEMENT_AST_OPERATORS(At_Root_Query);
|