sassc 2.3.0 → 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 +1 -0
- data/CHANGELOG.md +5 -0
- data/ext/libsass/VERSION +1 -1
- data/ext/libsass/include/sass/context.h +3 -0
- data/ext/libsass/src/MurmurHash2.hpp +91 -0
- data/ext/libsass/src/ast.cpp +117 -117
- data/ext/libsass/src/ast.hpp +160 -162
- data/ext/libsass/src/ast_def_macros.hpp +10 -10
- data/ext/libsass/src/ast_fwd_decl.cpp +2 -2
- data/ext/libsass/src/ast_fwd_decl.hpp +61 -52
- data/ext/libsass/src/ast_helpers.hpp +5 -5
- data/ext/libsass/src/ast_sel_cmp.cpp +18 -18
- data/ext/libsass/src/ast_sel_super.cpp +52 -52
- data/ext/libsass/src/ast_sel_unify.cpp +16 -16
- data/ext/libsass/src/ast_sel_weave.cpp +62 -62
- data/ext/libsass/src/ast_selectors.cpp +87 -77
- data/ext/libsass/src/ast_selectors.hpp +72 -62
- data/ext/libsass/src/ast_supports.cpp +35 -35
- data/ext/libsass/src/ast_supports.hpp +29 -29
- data/ext/libsass/src/ast_values.cpp +58 -58
- data/ext/libsass/src/ast_values.hpp +75 -75
- 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 +17 -17
- 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/check_nesting.cpp +36 -36
- data/ext/libsass/src/check_nesting.hpp +2 -2
- data/ext/libsass/src/color_maps.cpp +5 -5
- data/ext/libsass/src/color_maps.hpp +1 -1
- data/ext/libsass/src/context.cpp +63 -60
- data/ext/libsass/src/context.hpp +33 -33
- data/ext/libsass/src/cssize.cpp +30 -29
- data/ext/libsass/src/cssize.hpp +13 -13
- data/ext/libsass/src/dart_helpers.hpp +5 -5
- data/ext/libsass/src/debugger.hpp +127 -128
- data/ext/libsass/src/emitter.cpp +12 -12
- data/ext/libsass/src/emitter.hpp +10 -10
- data/ext/libsass/src/environment.cpp +27 -27
- data/ext/libsass/src/environment.hpp +24 -24
- data/ext/libsass/src/error_handling.cpp +42 -42
- data/ext/libsass/src/error_handling.hpp +38 -50
- data/ext/libsass/src/eval.cpp +138 -132
- data/ext/libsass/src/eval.hpp +17 -17
- data/ext/libsass/src/eval_selectors.cpp +3 -3
- data/ext/libsass/src/expand.cpp +70 -64
- data/ext/libsass/src/expand.hpp +12 -12
- data/ext/libsass/src/extender.cpp +55 -53
- data/ext/libsass/src/extender.hpp +14 -14
- data/ext/libsass/src/file.cpp +66 -58
- data/ext/libsass/src/file.hpp +23 -25
- data/ext/libsass/src/fn_colors.cpp +9 -9
- data/ext/libsass/src/fn_lists.cpp +18 -18
- data/ext/libsass/src/fn_maps.cpp +3 -3
- data/ext/libsass/src/fn_miscs.cpp +15 -15
- data/ext/libsass/src/fn_numbers.cpp +7 -7
- data/ext/libsass/src/fn_selectors.cpp +8 -8
- data/ext/libsass/src/fn_strings.cpp +34 -22
- data/ext/libsass/src/fn_utils.cpp +29 -26
- data/ext/libsass/src/fn_utils.hpp +10 -10
- data/ext/libsass/src/inspect.cpp +35 -34
- data/ext/libsass/src/inspect.hpp +21 -21
- data/ext/libsass/src/lexer.cpp +3 -1
- data/ext/libsass/src/listize.cpp +2 -2
- data/ext/libsass/src/mapping.hpp +1 -0
- data/ext/libsass/src/memory.hpp +12 -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} +18 -6
- data/ext/libsass/src/operation.hpp +44 -44
- data/ext/libsass/src/operators.cpp +18 -18
- data/ext/libsass/src/operators.hpp +11 -11
- data/ext/libsass/src/ordered_map.hpp +18 -18
- data/ext/libsass/src/output.cpp +16 -16
- data/ext/libsass/src/output.hpp +5 -5
- data/ext/libsass/src/parser.cpp +327 -345
- data/ext/libsass/src/parser.hpp +77 -87
- data/ext/libsass/src/parser_selectors.cpp +6 -6
- data/ext/libsass/src/permutate.hpp +39 -15
- 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/remove_placeholders.cpp +4 -4
- data/ext/libsass/src/remove_placeholders.hpp +3 -3
- data/ext/libsass/src/sass.cpp +16 -15
- data/ext/libsass/src/sass.hpp +9 -5
- data/ext/libsass/src/sass_context.cpp +52 -34
- data/ext/libsass/src/sass_values.cpp +8 -10
- 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/units.cpp +19 -19
- 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 +38 -38
- data/ext/libsass/src/util.hpp +18 -18
- data/ext/libsass/src/util_string.cpp +13 -13
- data/ext/libsass/src/util_string.hpp +9 -8
- data/ext/libsass/src/values.cpp +12 -12
- data/lib/sassc/native.rb +3 -5
- data/lib/sassc/version.rb +1 -1
- data/test/native_test.rb +4 -4
- metadata +14 -5
- data/lib/sassc/native/lib_c.rb +0 -21
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
namespace Sass {
|
7
7
|
|
8
|
-
void str_rtrim(
|
8
|
+
void str_rtrim(sass::string& str, const sass::string& delimiters = " \f\n\r\t\v")
|
9
9
|
{
|
10
10
|
str.erase( str.find_last_not_of( delimiters ) + 1 );
|
11
11
|
}
|
@@ -13,7 +13,7 @@ namespace Sass {
|
|
13
13
|
/////////////////////////////////////////////////////////////////////////
|
14
14
|
/////////////////////////////////////////////////////////////////////////
|
15
15
|
|
16
|
-
PreValue::PreValue(
|
16
|
+
PreValue::PreValue(SourceSpan pstate, bool d, bool e, bool i, Type ct)
|
17
17
|
: Expression(pstate, d, e, i, ct)
|
18
18
|
{ }
|
19
19
|
PreValue::PreValue(const PreValue* ptr)
|
@@ -23,7 +23,7 @@ namespace Sass {
|
|
23
23
|
/////////////////////////////////////////////////////////////////////////
|
24
24
|
/////////////////////////////////////////////////////////////////////////
|
25
25
|
|
26
|
-
Value::Value(
|
26
|
+
Value::Value(SourceSpan pstate, bool d, bool e, bool i, Type ct)
|
27
27
|
: PreValue(pstate, d, e, i, ct)
|
28
28
|
{ }
|
29
29
|
Value::Value(const Value* ptr)
|
@@ -33,9 +33,9 @@ namespace Sass {
|
|
33
33
|
/////////////////////////////////////////////////////////////////////////
|
34
34
|
/////////////////////////////////////////////////////////////////////////
|
35
35
|
|
36
|
-
List::List(
|
36
|
+
List::List(SourceSpan pstate, size_t size, enum Sass_Separator sep, bool argl, bool bracket)
|
37
37
|
: Value(pstate),
|
38
|
-
Vectorized<
|
38
|
+
Vectorized<ExpressionObj>(size),
|
39
39
|
separator_(sep),
|
40
40
|
is_arglist_(argl),
|
41
41
|
is_bracketed_(bracket),
|
@@ -44,7 +44,7 @@ namespace Sass {
|
|
44
44
|
|
45
45
|
List::List(const List* ptr)
|
46
46
|
: Value(ptr),
|
47
|
-
Vectorized<
|
47
|
+
Vectorized<ExpressionObj>(*ptr),
|
48
48
|
separator_(ptr->separator_),
|
49
49
|
is_arglist_(ptr->is_arglist_),
|
50
50
|
is_bracketed_(ptr->is_bracketed_),
|
@@ -54,7 +54,7 @@ namespace Sass {
|
|
54
54
|
size_t List::hash() const
|
55
55
|
{
|
56
56
|
if (hash_ == 0) {
|
57
|
-
hash_ = std::hash<
|
57
|
+
hash_ = std::hash<sass::string>()(sep_string());
|
58
58
|
hash_combine(hash_, std::hash<bool>()(is_bracketed()));
|
59
59
|
for (size_t i = 0, L = length(); i < L; ++i)
|
60
60
|
hash_combine(hash_, (elements()[i])->hash());
|
@@ -109,7 +109,7 @@ namespace Sass {
|
|
109
109
|
// arglist expects a list of arguments
|
110
110
|
// so we need to break before keywords
|
111
111
|
for (size_t i = 0, L = length(); i < L; ++i) {
|
112
|
-
|
112
|
+
ExpressionObj obj = this->at(i);
|
113
113
|
if (Argument* arg = Cast<Argument>(obj)) {
|
114
114
|
if (!arg->name().empty()) return i;
|
115
115
|
}
|
@@ -118,8 +118,8 @@ namespace Sass {
|
|
118
118
|
}
|
119
119
|
|
120
120
|
|
121
|
-
|
122
|
-
|
121
|
+
ExpressionObj List::value_at_index(size_t i) {
|
122
|
+
ExpressionObj obj = this->at(i);
|
123
123
|
if (is_arglist_) {
|
124
124
|
if (Argument* arg = Cast<Argument>(obj)) {
|
125
125
|
return arg->value();
|
@@ -134,7 +134,7 @@ namespace Sass {
|
|
134
134
|
/////////////////////////////////////////////////////////////////////////
|
135
135
|
/////////////////////////////////////////////////////////////////////////
|
136
136
|
|
137
|
-
Map::Map(
|
137
|
+
Map::Map(SourceSpan pstate, size_t size)
|
138
138
|
: Value(pstate),
|
139
139
|
Hashed(size)
|
140
140
|
{ concrete_type(MAP); }
|
@@ -185,7 +185,7 @@ namespace Sass {
|
|
185
185
|
return false;
|
186
186
|
}
|
187
187
|
|
188
|
-
List_Obj Map::to_list(
|
188
|
+
List_Obj Map::to_list(SourceSpan& pstate) {
|
189
189
|
List_Obj ret = SASS_MEMORY_NEW(List, pstate, length(), SASS_COMMA);
|
190
190
|
|
191
191
|
for (auto key : keys()) {
|
@@ -213,8 +213,8 @@ namespace Sass {
|
|
213
213
|
/////////////////////////////////////////////////////////////////////////
|
214
214
|
/////////////////////////////////////////////////////////////////////////
|
215
215
|
|
216
|
-
Binary_Expression::Binary_Expression(
|
217
|
-
Operand op,
|
216
|
+
Binary_Expression::Binary_Expression(SourceSpan pstate,
|
217
|
+
Operand op, ExpressionObj lhs, ExpressionObj rhs)
|
218
218
|
: PreValue(pstate), op_(op), left_(lhs), right_(rhs), hash_(0)
|
219
219
|
{ }
|
220
220
|
|
@@ -235,12 +235,12 @@ namespace Sass {
|
|
235
235
|
return is_interpolant() || (right() && right()->is_right_interpolant());
|
236
236
|
}
|
237
237
|
|
238
|
-
const
|
238
|
+
const sass::string Binary_Expression::type_name()
|
239
239
|
{
|
240
240
|
return sass_op_to_name(optype());
|
241
241
|
}
|
242
242
|
|
243
|
-
const
|
243
|
+
const sass::string Binary_Expression::separator()
|
244
244
|
{
|
245
245
|
return sass_op_separator(optype());
|
246
246
|
}
|
@@ -292,7 +292,7 @@ namespace Sass {
|
|
292
292
|
/////////////////////////////////////////////////////////////////////////
|
293
293
|
/////////////////////////////////////////////////////////////////////////
|
294
294
|
|
295
|
-
Function::Function(
|
295
|
+
Function::Function(SourceSpan pstate, Definition_Obj def, bool css)
|
296
296
|
: Value(pstate), definition_(def), is_css_(css)
|
297
297
|
{ concrete_type(FUNCTION_VAL); }
|
298
298
|
|
@@ -326,7 +326,7 @@ namespace Sass {
|
|
326
326
|
return false;
|
327
327
|
}
|
328
328
|
|
329
|
-
|
329
|
+
sass::string Function::name() {
|
330
330
|
if (definition_) {
|
331
331
|
return definition_->name();
|
332
332
|
}
|
@@ -336,23 +336,23 @@ namespace Sass {
|
|
336
336
|
/////////////////////////////////////////////////////////////////////////
|
337
337
|
/////////////////////////////////////////////////////////////////////////
|
338
338
|
|
339
|
-
Function_Call::Function_Call(
|
339
|
+
Function_Call::Function_Call(SourceSpan pstate, String_Obj n, Arguments_Obj args, void* cookie)
|
340
340
|
: PreValue(pstate), sname_(n), arguments_(args), func_(), via_call_(false), cookie_(cookie), hash_(0)
|
341
341
|
{ concrete_type(FUNCTION); }
|
342
|
-
Function_Call::Function_Call(
|
342
|
+
Function_Call::Function_Call(SourceSpan pstate, String_Obj n, Arguments_Obj args, Function_Obj func)
|
343
343
|
: PreValue(pstate), sname_(n), arguments_(args), func_(func), via_call_(false), cookie_(0), hash_(0)
|
344
344
|
{ concrete_type(FUNCTION); }
|
345
|
-
Function_Call::Function_Call(
|
345
|
+
Function_Call::Function_Call(SourceSpan pstate, String_Obj n, Arguments_Obj args)
|
346
346
|
: PreValue(pstate), sname_(n), arguments_(args), via_call_(false), cookie_(0), hash_(0)
|
347
347
|
{ concrete_type(FUNCTION); }
|
348
348
|
|
349
|
-
Function_Call::Function_Call(
|
349
|
+
Function_Call::Function_Call(SourceSpan pstate, sass::string n, Arguments_Obj args, void* cookie)
|
350
350
|
: PreValue(pstate), sname_(SASS_MEMORY_NEW(String_Constant, pstate, n)), arguments_(args), func_(), via_call_(false), cookie_(cookie), hash_(0)
|
351
351
|
{ concrete_type(FUNCTION); }
|
352
|
-
Function_Call::Function_Call(
|
352
|
+
Function_Call::Function_Call(SourceSpan pstate, sass::string n, Arguments_Obj args, Function_Obj func)
|
353
353
|
: PreValue(pstate), sname_(SASS_MEMORY_NEW(String_Constant, pstate, n)), arguments_(args), func_(func), via_call_(false), cookie_(0), hash_(0)
|
354
354
|
{ concrete_type(FUNCTION); }
|
355
|
-
Function_Call::Function_Call(
|
355
|
+
Function_Call::Function_Call(SourceSpan pstate, sass::string n, Arguments_Obj args)
|
356
356
|
: PreValue(pstate), sname_(SASS_MEMORY_NEW(String_Constant, pstate, n)), arguments_(args), via_call_(false), cookie_(0), hash_(0)
|
357
357
|
{ concrete_type(FUNCTION); }
|
358
358
|
|
@@ -381,14 +381,14 @@ namespace Sass {
|
|
381
381
|
size_t Function_Call::hash() const
|
382
382
|
{
|
383
383
|
if (hash_ == 0) {
|
384
|
-
hash_ = std::hash<
|
384
|
+
hash_ = std::hash<sass::string>()(name());
|
385
385
|
for (auto argument : arguments()->elements())
|
386
386
|
hash_combine(hash_, argument->hash());
|
387
387
|
}
|
388
388
|
return hash_;
|
389
389
|
}
|
390
390
|
|
391
|
-
|
391
|
+
sass::string Function_Call::name() const
|
392
392
|
{
|
393
393
|
return sname();
|
394
394
|
}
|
@@ -401,7 +401,7 @@ namespace Sass {
|
|
401
401
|
/////////////////////////////////////////////////////////////////////////
|
402
402
|
/////////////////////////////////////////////////////////////////////////
|
403
403
|
|
404
|
-
Variable::Variable(
|
404
|
+
Variable::Variable(SourceSpan pstate, sass::string n)
|
405
405
|
: PreValue(pstate), name_(n)
|
406
406
|
{ concrete_type(VARIABLE); }
|
407
407
|
|
@@ -419,13 +419,13 @@ namespace Sass {
|
|
419
419
|
|
420
420
|
size_t Variable::hash() const
|
421
421
|
{
|
422
|
-
return std::hash<
|
422
|
+
return std::hash<sass::string>()(name());
|
423
423
|
}
|
424
424
|
|
425
425
|
/////////////////////////////////////////////////////////////////////////
|
426
426
|
/////////////////////////////////////////////////////////////////////////
|
427
427
|
|
428
|
-
Number::Number(
|
428
|
+
Number::Number(SourceSpan pstate, double val, sass::string u, bool zero)
|
429
429
|
: Value(pstate),
|
430
430
|
Units(),
|
431
431
|
value_(val),
|
@@ -438,12 +438,12 @@ namespace Sass {
|
|
438
438
|
bool nominator = true;
|
439
439
|
while (true) {
|
440
440
|
r = u.find_first_of("*/", l);
|
441
|
-
|
441
|
+
sass::string unit(u.substr(l, r == sass::string::npos ? r : r - l));
|
442
442
|
if (!unit.empty()) {
|
443
443
|
if (nominator) numerators.push_back(unit);
|
444
444
|
else denominators.push_back(unit);
|
445
445
|
}
|
446
|
-
if (r ==
|
446
|
+
if (r == sass::string::npos) break;
|
447
447
|
// ToDo: should error for multiple slashes
|
448
448
|
// if (!nominator && u[r] == '/') error(...)
|
449
449
|
if (u[r] == '/')
|
@@ -482,9 +482,9 @@ namespace Sass {
|
|
482
482
|
if (hash_ == 0) {
|
483
483
|
hash_ = std::hash<double>()(value_);
|
484
484
|
for (const auto numerator : numerators)
|
485
|
-
hash_combine(hash_, std::hash<
|
485
|
+
hash_combine(hash_, std::hash<sass::string>()(numerator));
|
486
486
|
for (const auto denominator : denominators)
|
487
|
-
hash_combine(hash_, std::hash<
|
487
|
+
hash_combine(hash_, std::hash<sass::string>()(denominator));
|
488
488
|
}
|
489
489
|
return hash_;
|
490
490
|
}
|
@@ -549,7 +549,7 @@ namespace Sass {
|
|
549
549
|
/////////////////////////////////////////////////////////////////////////
|
550
550
|
/////////////////////////////////////////////////////////////////////////
|
551
551
|
|
552
|
-
Color::Color(
|
552
|
+
Color::Color(SourceSpan pstate, double a, const sass::string disp)
|
553
553
|
: Value(pstate),
|
554
554
|
disp_(disp), a_(a),
|
555
555
|
hash_(0)
|
@@ -595,7 +595,7 @@ namespace Sass {
|
|
595
595
|
/////////////////////////////////////////////////////////////////////////
|
596
596
|
/////////////////////////////////////////////////////////////////////////
|
597
597
|
|
598
|
-
Color_RGBA::Color_RGBA(
|
598
|
+
Color_RGBA::Color_RGBA(SourceSpan pstate, double r, double g, double b, double a, const sass::string disp)
|
599
599
|
: Color(pstate, a, disp),
|
600
600
|
r_(r), g_(g), b_(b)
|
601
601
|
{ concrete_type(COLOR); }
|
@@ -638,7 +638,7 @@ namespace Sass {
|
|
638
638
|
size_t Color_RGBA::hash() const
|
639
639
|
{
|
640
640
|
if (hash_ == 0) {
|
641
|
-
hash_ = std::hash<
|
641
|
+
hash_ = std::hash<sass::string>()("RGBA");
|
642
642
|
hash_combine(hash_, std::hash<double>()(a_));
|
643
643
|
hash_combine(hash_, std::hash<double>()(r_));
|
644
644
|
hash_combine(hash_, std::hash<double>()(g_));
|
@@ -693,7 +693,7 @@ namespace Sass {
|
|
693
693
|
/////////////////////////////////////////////////////////////////////////
|
694
694
|
/////////////////////////////////////////////////////////////////////////
|
695
695
|
|
696
|
-
Color_HSLA::Color_HSLA(
|
696
|
+
Color_HSLA::Color_HSLA(SourceSpan pstate, double h, double s, double l, double a, const sass::string disp)
|
697
697
|
: Color(pstate, a, disp),
|
698
698
|
h_(absmod(h, 360.0)),
|
699
699
|
s_(clip(s, 0.0, 100.0)),
|
@@ -740,7 +740,7 @@ namespace Sass {
|
|
740
740
|
size_t Color_HSLA::hash() const
|
741
741
|
{
|
742
742
|
if (hash_ == 0) {
|
743
|
-
hash_ = std::hash<
|
743
|
+
hash_ = std::hash<sass::string>()("HSLA");
|
744
744
|
hash_combine(hash_, std::hash<double>()(a_));
|
745
745
|
hash_combine(hash_, std::hash<double>()(h_));
|
746
746
|
hash_combine(hash_, std::hash<double>()(s_));
|
@@ -789,7 +789,7 @@ namespace Sass {
|
|
789
789
|
/////////////////////////////////////////////////////////////////////////
|
790
790
|
/////////////////////////////////////////////////////////////////////////
|
791
791
|
|
792
|
-
Custom_Error::Custom_Error(
|
792
|
+
Custom_Error::Custom_Error(SourceSpan pstate, sass::string msg)
|
793
793
|
: Value(pstate), message_(msg)
|
794
794
|
{ concrete_type(C_ERROR); }
|
795
795
|
|
@@ -817,7 +817,7 @@ namespace Sass {
|
|
817
817
|
/////////////////////////////////////////////////////////////////////////
|
818
818
|
/////////////////////////////////////////////////////////////////////////
|
819
819
|
|
820
|
-
Custom_Warning::Custom_Warning(
|
820
|
+
Custom_Warning::Custom_Warning(SourceSpan pstate, sass::string msg)
|
821
821
|
: Value(pstate), message_(msg)
|
822
822
|
{ concrete_type(C_WARNING); }
|
823
823
|
|
@@ -845,7 +845,7 @@ namespace Sass {
|
|
845
845
|
/////////////////////////////////////////////////////////////////////////
|
846
846
|
/////////////////////////////////////////////////////////////////////////
|
847
847
|
|
848
|
-
Boolean::Boolean(
|
848
|
+
Boolean::Boolean(SourceSpan pstate, bool val)
|
849
849
|
: Value(pstate), value_(val),
|
850
850
|
hash_(0)
|
851
851
|
{ concrete_type(BOOLEAN); }
|
@@ -883,7 +883,7 @@ namespace Sass {
|
|
883
883
|
/////////////////////////////////////////////////////////////////////////
|
884
884
|
/////////////////////////////////////////////////////////////////////////
|
885
885
|
|
886
|
-
String::String(
|
886
|
+
String::String(SourceSpan pstate, bool delayed)
|
887
887
|
: Value(pstate, delayed)
|
888
888
|
{ concrete_type(STRING); }
|
889
889
|
String::String(const String* ptr)
|
@@ -893,13 +893,13 @@ namespace Sass {
|
|
893
893
|
/////////////////////////////////////////////////////////////////////////
|
894
894
|
/////////////////////////////////////////////////////////////////////////
|
895
895
|
|
896
|
-
String_Schema::String_Schema(
|
897
|
-
: String(pstate), Vectorized<
|
896
|
+
String_Schema::String_Schema(SourceSpan pstate, size_t size, bool css)
|
897
|
+
: String(pstate), Vectorized<PreValueObj>(size), css_(css), hash_(0)
|
898
898
|
{ concrete_type(STRING); }
|
899
899
|
|
900
900
|
String_Schema::String_Schema(const String_Schema* ptr)
|
901
901
|
: String(ptr),
|
902
|
-
Vectorized<
|
902
|
+
Vectorized<PreValueObj>(*ptr),
|
903
903
|
css_(ptr->css_),
|
904
904
|
hash_(ptr->hash_)
|
905
905
|
{ concrete_type(STRING); }
|
@@ -976,17 +976,17 @@ namespace Sass {
|
|
976
976
|
/////////////////////////////////////////////////////////////////////////
|
977
977
|
/////////////////////////////////////////////////////////////////////////
|
978
978
|
|
979
|
-
String_Constant::String_Constant(
|
979
|
+
String_Constant::String_Constant(SourceSpan pstate, sass::string val, bool css)
|
980
980
|
: String(pstate), quote_mark_(0), value_(read_css_string(val, css)), hash_(0)
|
981
981
|
{ }
|
982
|
-
String_Constant::String_Constant(
|
983
|
-
: String(pstate), quote_mark_(0), value_(read_css_string(
|
982
|
+
String_Constant::String_Constant(SourceSpan pstate, const char* beg, bool css)
|
983
|
+
: String(pstate), quote_mark_(0), value_(read_css_string(sass::string(beg), css)), hash_(0)
|
984
984
|
{ }
|
985
|
-
String_Constant::String_Constant(
|
986
|
-
: String(pstate), quote_mark_(0), value_(read_css_string(
|
985
|
+
String_Constant::String_Constant(SourceSpan pstate, const char* beg, const char* end, bool css)
|
986
|
+
: String(pstate), quote_mark_(0), value_(read_css_string(sass::string(beg, end-beg), css)), hash_(0)
|
987
987
|
{ }
|
988
|
-
String_Constant::String_Constant(
|
989
|
-
: String(pstate), quote_mark_(0), value_(read_css_string(
|
988
|
+
String_Constant::String_Constant(SourceSpan pstate, const Token& tok, bool css)
|
989
|
+
: String(pstate), quote_mark_(0), value_(read_css_string(sass::string(tok.begin, tok.end), css)), hash_(0)
|
990
990
|
{ }
|
991
991
|
|
992
992
|
String_Constant::String_Constant(const String_Constant* ptr)
|
@@ -1023,7 +1023,7 @@ namespace Sass {
|
|
1023
1023
|
return false;
|
1024
1024
|
}
|
1025
1025
|
|
1026
|
-
|
1026
|
+
sass::string String_Constant::inspect() const
|
1027
1027
|
{
|
1028
1028
|
return quote(value_, '*');
|
1029
1029
|
}
|
@@ -1036,7 +1036,7 @@ namespace Sass {
|
|
1036
1036
|
size_t String_Constant::hash() const
|
1037
1037
|
{
|
1038
1038
|
if (hash_ == 0) {
|
1039
|
-
hash_ = std::hash<
|
1039
|
+
hash_ = std::hash<sass::string>()(value_);
|
1040
1040
|
}
|
1041
1041
|
return hash_;
|
1042
1042
|
}
|
@@ -1044,7 +1044,7 @@ namespace Sass {
|
|
1044
1044
|
/////////////////////////////////////////////////////////////////////////
|
1045
1045
|
/////////////////////////////////////////////////////////////////////////
|
1046
1046
|
|
1047
|
-
String_Quoted::String_Quoted(
|
1047
|
+
String_Quoted::String_Quoted(SourceSpan pstate, sass::string val, char q,
|
1048
1048
|
bool keep_utf8_escapes, bool skip_unquoting,
|
1049
1049
|
bool strict_unquoting, bool css)
|
1050
1050
|
: String_Constant(pstate, val, css)
|
@@ -1082,7 +1082,7 @@ namespace Sass {
|
|
1082
1082
|
return false;
|
1083
1083
|
}
|
1084
1084
|
|
1085
|
-
|
1085
|
+
sass::string String_Quoted::inspect() const
|
1086
1086
|
{
|
1087
1087
|
return quote(value_, '*');
|
1088
1088
|
}
|
@@ -1090,7 +1090,7 @@ namespace Sass {
|
|
1090
1090
|
/////////////////////////////////////////////////////////////////////////
|
1091
1091
|
/////////////////////////////////////////////////////////////////////////
|
1092
1092
|
|
1093
|
-
Null::Null(
|
1093
|
+
Null::Null(SourceSpan pstate)
|
1094
1094
|
: Value(pstate)
|
1095
1095
|
{ concrete_type(NULL_VAL); }
|
1096
1096
|
|
@@ -1119,7 +1119,7 @@ namespace Sass {
|
|
1119
1119
|
/////////////////////////////////////////////////////////////////////////
|
1120
1120
|
/////////////////////////////////////////////////////////////////////////
|
1121
1121
|
|
1122
|
-
Parent_Reference::Parent_Reference(
|
1122
|
+
Parent_Reference::Parent_Reference(SourceSpan pstate)
|
1123
1123
|
: Value(pstate)
|
1124
1124
|
{ concrete_type(PARENT); }
|
1125
1125
|
|
@@ -13,7 +13,7 @@ namespace Sass {
|
|
13
13
|
//////////////////////////////////////////////////////////////////////
|
14
14
|
class PreValue : public Expression {
|
15
15
|
public:
|
16
|
-
PreValue(
|
16
|
+
PreValue(SourceSpan pstate, bool d = false, bool e = false, bool i = false, Type ct = NONE);
|
17
17
|
ATTACH_VIRTUAL_AST_OPERATIONS(PreValue);
|
18
18
|
virtual ~PreValue() { }
|
19
19
|
};
|
@@ -23,7 +23,7 @@ namespace Sass {
|
|
23
23
|
//////////////////////////////////////////////////////////////////////
|
24
24
|
class Value : public PreValue {
|
25
25
|
public:
|
26
|
-
Value(
|
26
|
+
Value(SourceSpan pstate, bool d = false, bool e = false, bool i = false, Type ct = NONE);
|
27
27
|
|
28
28
|
// Some obects are not meant to be compared
|
29
29
|
// ToDo: maybe fallback to pointer comparison?
|
@@ -47,23 +47,23 @@ namespace Sass {
|
|
47
47
|
// Lists of values, both comma- and space-separated (distinguished by a
|
48
48
|
// type-tag.) Also used to represent variable-length argument lists.
|
49
49
|
///////////////////////////////////////////////////////////////////////
|
50
|
-
class List : public Value, public Vectorized<
|
51
|
-
void adjust_after_pushing(
|
50
|
+
class List : public Value, public Vectorized<ExpressionObj> {
|
51
|
+
void adjust_after_pushing(ExpressionObj e) override { is_expanded(false); }
|
52
52
|
private:
|
53
53
|
ADD_PROPERTY(enum Sass_Separator, separator)
|
54
54
|
ADD_PROPERTY(bool, is_arglist)
|
55
55
|
ADD_PROPERTY(bool, is_bracketed)
|
56
56
|
ADD_PROPERTY(bool, from_selector)
|
57
57
|
public:
|
58
|
-
List(
|
59
|
-
|
60
|
-
static
|
58
|
+
List(SourceSpan pstate, size_t size = 0, enum Sass_Separator sep = SASS_SPACE, bool argl = false, bool bracket = false);
|
59
|
+
sass::string type() const override { return is_arglist_ ? "arglist" : "list"; }
|
60
|
+
static sass::string type_name() { return "list"; }
|
61
61
|
const char* sep_string(bool compressed = false) const {
|
62
62
|
return separator() == SASS_SPACE ?
|
63
63
|
" " : (compressed ? "," : ", ");
|
64
64
|
}
|
65
65
|
bool is_invisible() const override { return empty() && !is_bracketed(); }
|
66
|
-
|
66
|
+
ExpressionObj value_at_index(size_t i);
|
67
67
|
|
68
68
|
virtual size_t hash() const override;
|
69
69
|
virtual size_t size() const;
|
@@ -79,14 +79,14 @@ namespace Sass {
|
|
79
79
|
///////////////////////////////////////////////////////////////////////
|
80
80
|
// Key value paris.
|
81
81
|
///////////////////////////////////////////////////////////////////////
|
82
|
-
class Map : public Value, public Hashed<
|
83
|
-
void adjust_after_pushing(std::pair<
|
82
|
+
class Map : public Value, public Hashed<ExpressionObj, ExpressionObj, Map_Obj> {
|
83
|
+
void adjust_after_pushing(std::pair<ExpressionObj, ExpressionObj> p) override { is_expanded(false); }
|
84
84
|
public:
|
85
|
-
Map(
|
86
|
-
|
87
|
-
static
|
85
|
+
Map(SourceSpan pstate, size_t size = 0);
|
86
|
+
sass::string type() const override { return "map"; }
|
87
|
+
static sass::string type_name() { return "map"; }
|
88
88
|
bool is_invisible() const override { return empty(); }
|
89
|
-
List_Obj to_list(
|
89
|
+
List_Obj to_list(SourceSpan& pstate);
|
90
90
|
|
91
91
|
virtual size_t hash() const override;
|
92
92
|
|
@@ -106,15 +106,15 @@ namespace Sass {
|
|
106
106
|
class Binary_Expression : public PreValue {
|
107
107
|
private:
|
108
108
|
HASH_PROPERTY(Operand, op)
|
109
|
-
HASH_PROPERTY(
|
110
|
-
HASH_PROPERTY(
|
109
|
+
HASH_PROPERTY(ExpressionObj, left)
|
110
|
+
HASH_PROPERTY(ExpressionObj, right)
|
111
111
|
mutable size_t hash_;
|
112
112
|
public:
|
113
|
-
Binary_Expression(
|
114
|
-
Operand op,
|
113
|
+
Binary_Expression(SourceSpan pstate,
|
114
|
+
Operand op, ExpressionObj lhs, ExpressionObj rhs);
|
115
115
|
|
116
|
-
const
|
117
|
-
const
|
116
|
+
const sass::string type_name();
|
117
|
+
const sass::string separator();
|
118
118
|
bool is_left_interpolant(void) const override;
|
119
119
|
bool is_right_interpolant(void) const override;
|
120
120
|
bool has_interpolant() const override;
|
@@ -138,13 +138,13 @@ namespace Sass {
|
|
138
138
|
ADD_PROPERTY(Definition_Obj, definition)
|
139
139
|
ADD_PROPERTY(bool, is_css)
|
140
140
|
public:
|
141
|
-
Function(
|
141
|
+
Function(SourceSpan pstate, Definition_Obj def, bool css);
|
142
142
|
|
143
|
-
|
144
|
-
static
|
143
|
+
sass::string type() const override { return "function"; }
|
144
|
+
static sass::string type_name() { return "function"; }
|
145
145
|
bool is_invisible() const override { return true; }
|
146
146
|
|
147
|
-
|
147
|
+
sass::string name();
|
148
148
|
|
149
149
|
bool operator< (const Expression& rhs) const override;
|
150
150
|
bool operator== (const Expression& rhs) const override;
|
@@ -164,15 +164,15 @@ namespace Sass {
|
|
164
164
|
ADD_PROPERTY(void*, cookie)
|
165
165
|
mutable size_t hash_;
|
166
166
|
public:
|
167
|
-
Function_Call(
|
168
|
-
Function_Call(
|
169
|
-
Function_Call(
|
167
|
+
Function_Call(SourceSpan pstate, sass::string n, Arguments_Obj args, void* cookie);
|
168
|
+
Function_Call(SourceSpan pstate, sass::string n, Arguments_Obj args, Function_Obj func);
|
169
|
+
Function_Call(SourceSpan pstate, sass::string n, Arguments_Obj args);
|
170
170
|
|
171
|
-
Function_Call(
|
172
|
-
Function_Call(
|
173
|
-
Function_Call(
|
171
|
+
Function_Call(SourceSpan pstate, String_Obj n, Arguments_Obj args, void* cookie);
|
172
|
+
Function_Call(SourceSpan pstate, String_Obj n, Arguments_Obj args, Function_Obj func);
|
173
|
+
Function_Call(SourceSpan pstate, String_Obj n, Arguments_Obj args);
|
174
174
|
|
175
|
-
|
175
|
+
sass::string name() const;
|
176
176
|
bool is_css();
|
177
177
|
|
178
178
|
bool operator==(const Expression& rhs) const override;
|
@@ -187,9 +187,9 @@ namespace Sass {
|
|
187
187
|
// Variable references.
|
188
188
|
///////////////////////
|
189
189
|
class Variable final : public PreValue {
|
190
|
-
ADD_CONSTREF(
|
190
|
+
ADD_CONSTREF(sass::string, name)
|
191
191
|
public:
|
192
|
-
Variable(
|
192
|
+
Variable(SourceSpan pstate, sass::string n);
|
193
193
|
virtual bool operator==(const Expression& rhs) const override;
|
194
194
|
virtual size_t hash() const override;
|
195
195
|
ATTACH_AST_OPERATIONS(Variable)
|
@@ -204,12 +204,12 @@ namespace Sass {
|
|
204
204
|
ADD_PROPERTY(bool, zero)
|
205
205
|
mutable size_t hash_;
|
206
206
|
public:
|
207
|
-
Number(
|
207
|
+
Number(SourceSpan pstate, double val, sass::string u = "", bool zero = true);
|
208
208
|
|
209
209
|
bool zero() { return zero_; }
|
210
210
|
|
211
|
-
|
212
|
-
static
|
211
|
+
sass::string type() const override { return "number"; }
|
212
|
+
static sass::string type_name() { return "number"; }
|
213
213
|
|
214
214
|
// cancel out unnecessary units
|
215
215
|
// result will be in input units
|
@@ -233,15 +233,15 @@ namespace Sass {
|
|
233
233
|
// Colors.
|
234
234
|
//////////
|
235
235
|
class Color : public Value {
|
236
|
-
ADD_CONSTREF(
|
236
|
+
ADD_CONSTREF(sass::string, disp)
|
237
237
|
HASH_PROPERTY(double, a)
|
238
238
|
protected:
|
239
239
|
mutable size_t hash_;
|
240
240
|
public:
|
241
|
-
Color(
|
241
|
+
Color(SourceSpan pstate, double a = 1, const sass::string disp = "");
|
242
242
|
|
243
|
-
|
244
|
-
static
|
243
|
+
sass::string type() const override { return "color"; }
|
244
|
+
static sass::string type_name() { return "color"; }
|
245
245
|
|
246
246
|
virtual size_t hash() const override = 0;
|
247
247
|
|
@@ -265,10 +265,10 @@ namespace Sass {
|
|
265
265
|
HASH_PROPERTY(double, g)
|
266
266
|
HASH_PROPERTY(double, b)
|
267
267
|
public:
|
268
|
-
Color_RGBA(
|
268
|
+
Color_RGBA(SourceSpan pstate, double r, double g, double b, double a = 1, const sass::string disp = "");
|
269
269
|
|
270
|
-
|
271
|
-
static
|
270
|
+
sass::string type() const override { return "color"; }
|
271
|
+
static sass::string type_name() { return "color"; }
|
272
272
|
|
273
273
|
size_t hash() const override;
|
274
274
|
|
@@ -294,10 +294,10 @@ namespace Sass {
|
|
294
294
|
HASH_PROPERTY(double, s)
|
295
295
|
HASH_PROPERTY(double, l)
|
296
296
|
public:
|
297
|
-
Color_HSLA(
|
297
|
+
Color_HSLA(SourceSpan pstate, double h, double s, double l, double a = 1, const sass::string disp = "");
|
298
298
|
|
299
|
-
|
300
|
-
static
|
299
|
+
sass::string type() const override { return "color"; }
|
300
|
+
static sass::string type_name() { return "color"; }
|
301
301
|
|
302
302
|
size_t hash() const override;
|
303
303
|
|
@@ -318,9 +318,9 @@ namespace Sass {
|
|
318
318
|
// Errors from Sass_Values.
|
319
319
|
//////////////////////////////
|
320
320
|
class Custom_Error final : public Value {
|
321
|
-
ADD_CONSTREF(
|
321
|
+
ADD_CONSTREF(sass::string, message)
|
322
322
|
public:
|
323
|
-
Custom_Error(
|
323
|
+
Custom_Error(SourceSpan pstate, sass::string msg);
|
324
324
|
bool operator< (const Expression& rhs) const override;
|
325
325
|
bool operator== (const Expression& rhs) const override;
|
326
326
|
ATTACH_AST_OPERATIONS(Custom_Error)
|
@@ -331,9 +331,9 @@ namespace Sass {
|
|
331
331
|
// Warnings from Sass_Values.
|
332
332
|
//////////////////////////////
|
333
333
|
class Custom_Warning final : public Value {
|
334
|
-
ADD_CONSTREF(
|
334
|
+
ADD_CONSTREF(sass::string, message)
|
335
335
|
public:
|
336
|
-
Custom_Warning(
|
336
|
+
Custom_Warning(SourceSpan pstate, sass::string msg);
|
337
337
|
bool operator< (const Expression& rhs) const override;
|
338
338
|
bool operator== (const Expression& rhs) const override;
|
339
339
|
ATTACH_AST_OPERATIONS(Custom_Warning)
|
@@ -347,11 +347,11 @@ namespace Sass {
|
|
347
347
|
HASH_PROPERTY(bool, value)
|
348
348
|
mutable size_t hash_;
|
349
349
|
public:
|
350
|
-
Boolean(
|
350
|
+
Boolean(SourceSpan pstate, bool val);
|
351
351
|
operator bool() override { return value_; }
|
352
352
|
|
353
|
-
|
354
|
-
static
|
353
|
+
sass::string type() const override { return "bool"; }
|
354
|
+
static sass::string type_name() { return "bool"; }
|
355
355
|
|
356
356
|
size_t hash() const override;
|
357
357
|
|
@@ -370,8 +370,8 @@ namespace Sass {
|
|
370
370
|
////////////////////////////////////////////////////////////////////////
|
371
371
|
class String : public Value {
|
372
372
|
public:
|
373
|
-
String(
|
374
|
-
static
|
373
|
+
String(SourceSpan pstate, bool delayed = false);
|
374
|
+
static sass::string type_name() { return "string"; }
|
375
375
|
virtual ~String() = 0;
|
376
376
|
virtual void rtrim() = 0;
|
377
377
|
virtual bool operator<(const Expression& rhs) const override {
|
@@ -389,14 +389,14 @@ namespace Sass {
|
|
389
389
|
// Interpolated strings. Meant to be reduced to flat strings during the
|
390
390
|
// evaluation phase.
|
391
391
|
///////////////////////////////////////////////////////////////////////
|
392
|
-
class String_Schema final : public String, public Vectorized<
|
392
|
+
class String_Schema final : public String, public Vectorized<PreValueObj> {
|
393
393
|
ADD_PROPERTY(bool, css)
|
394
394
|
mutable size_t hash_;
|
395
395
|
public:
|
396
|
-
String_Schema(
|
396
|
+
String_Schema(SourceSpan pstate, size_t size = 0, bool css = true);
|
397
397
|
|
398
|
-
|
399
|
-
static
|
398
|
+
sass::string type() const override { return "string"; }
|
399
|
+
static sass::string type_name() { return "string"; }
|
400
400
|
|
401
401
|
bool is_left_interpolant(void) const override;
|
402
402
|
bool is_right_interpolant(void) const override;
|
@@ -417,23 +417,23 @@ namespace Sass {
|
|
417
417
|
////////////////////////////////////////////////////////
|
418
418
|
class String_Constant : public String {
|
419
419
|
ADD_PROPERTY(char, quote_mark)
|
420
|
-
HASH_CONSTREF(
|
420
|
+
HASH_CONSTREF(sass::string, value)
|
421
421
|
protected:
|
422
422
|
mutable size_t hash_;
|
423
423
|
public:
|
424
|
-
String_Constant(
|
425
|
-
String_Constant(
|
426
|
-
String_Constant(
|
427
|
-
String_Constant(
|
428
|
-
|
429
|
-
static
|
424
|
+
String_Constant(SourceSpan pstate, sass::string val, bool css = true);
|
425
|
+
String_Constant(SourceSpan pstate, const char* beg, bool css = true);
|
426
|
+
String_Constant(SourceSpan pstate, const char* beg, const char* end, bool css = true);
|
427
|
+
String_Constant(SourceSpan pstate, const Token& tok, bool css = true);
|
428
|
+
sass::string type() const override { return "string"; }
|
429
|
+
static sass::string type_name() { return "string"; }
|
430
430
|
bool is_invisible() const override;
|
431
431
|
virtual void rtrim() override;
|
432
432
|
size_t hash() const override;
|
433
433
|
bool operator< (const Expression& rhs) const override;
|
434
434
|
bool operator==(const Expression& rhs) const override;
|
435
435
|
// quotes are forced on inspection
|
436
|
-
virtual
|
436
|
+
virtual sass::string inspect() const override;
|
437
437
|
ATTACH_AST_OPERATIONS(String_Constant)
|
438
438
|
ATTACH_CRTP_PERFORM_METHODS()
|
439
439
|
};
|
@@ -443,13 +443,13 @@ namespace Sass {
|
|
443
443
|
////////////////////////////////////////////////////////
|
444
444
|
class String_Quoted final : public String_Constant {
|
445
445
|
public:
|
446
|
-
String_Quoted(
|
446
|
+
String_Quoted(SourceSpan pstate, sass::string val, char q = 0,
|
447
447
|
bool keep_utf8_escapes = false, bool skip_unquoting = false,
|
448
448
|
bool strict_unquoting = true, bool css = true);
|
449
449
|
bool operator< (const Expression& rhs) const override;
|
450
450
|
bool operator==(const Expression& rhs) const override;
|
451
451
|
// quotes are forced on inspection
|
452
|
-
|
452
|
+
sass::string inspect() const override;
|
453
453
|
ATTACH_AST_OPERATIONS(String_Quoted)
|
454
454
|
ATTACH_CRTP_PERFORM_METHODS()
|
455
455
|
};
|
@@ -459,9 +459,9 @@ namespace Sass {
|
|
459
459
|
//////////////////
|
460
460
|
class Null final : public Value {
|
461
461
|
public:
|
462
|
-
Null(
|
463
|
-
|
464
|
-
static
|
462
|
+
Null(SourceSpan pstate);
|
463
|
+
sass::string type() const override { return "null"; }
|
464
|
+
static sass::string type_name() { return "null"; }
|
465
465
|
bool is_invisible() const override { return true; }
|
466
466
|
operator bool() override { return false; }
|
467
467
|
bool is_false() override { return true; }
|
@@ -480,9 +480,9 @@ namespace Sass {
|
|
480
480
|
//////////////////////////////////
|
481
481
|
class Parent_Reference final : public Value {
|
482
482
|
public:
|
483
|
-
Parent_Reference(
|
484
|
-
|
485
|
-
static
|
483
|
+
Parent_Reference(SourceSpan pstate);
|
484
|
+
sass::string type() const override { return "parent"; }
|
485
|
+
static sass::string type_name() { return "parent"; }
|
486
486
|
bool operator< (const Expression& rhs) const override {
|
487
487
|
return false; // they are always equal
|
488
488
|
}
|