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
@@ -4,35 +4,7 @@
|
|
4
4
|
// sass.hpp must go before all system headers to get the
|
5
5
|
// __EXTENSIONS__ fix on Solaris.
|
6
6
|
#include "sass.hpp"
|
7
|
-
|
8
|
-
#include <set>
|
9
|
-
#include <deque>
|
10
|
-
#include <vector>
|
11
|
-
#include <string>
|
12
|
-
#include <sstream>
|
13
|
-
#include <iostream>
|
14
|
-
#include <typeinfo>
|
15
|
-
#include <algorithm>
|
16
|
-
#include "sass/base.h"
|
17
|
-
#include "ast_fwd_decl.hpp"
|
18
|
-
|
19
|
-
#include "util.hpp"
|
20
|
-
#include "units.hpp"
|
21
|
-
#include "context.hpp"
|
22
|
-
#include "position.hpp"
|
23
|
-
#include "constants.hpp"
|
24
|
-
#include "operation.hpp"
|
25
|
-
#include "position.hpp"
|
26
|
-
#include "inspect.hpp"
|
27
|
-
#include "source_map.hpp"
|
28
|
-
#include "environment.hpp"
|
29
|
-
#include "error_handling.hpp"
|
30
|
-
#include "ast_def_macros.hpp"
|
31
|
-
#include "ast_fwd_decl.hpp"
|
32
|
-
#include "source_map.hpp"
|
33
|
-
#include "fn_utils.hpp"
|
34
|
-
|
35
|
-
#include "sass.h"
|
7
|
+
#include "ast.hpp"
|
36
8
|
|
37
9
|
namespace Sass {
|
38
10
|
|
@@ -41,7 +13,7 @@ namespace Sass {
|
|
41
13
|
//////////////////////////////////////////////////////////////////////
|
42
14
|
class PreValue : public Expression {
|
43
15
|
public:
|
44
|
-
PreValue(
|
16
|
+
PreValue(SourceSpan pstate, bool d = false, bool e = false, bool i = false, Type ct = NONE);
|
45
17
|
ATTACH_VIRTUAL_AST_OPERATIONS(PreValue);
|
46
18
|
virtual ~PreValue() { }
|
47
19
|
};
|
@@ -51,36 +23,53 @@ namespace Sass {
|
|
51
23
|
//////////////////////////////////////////////////////////////////////
|
52
24
|
class Value : public PreValue {
|
53
25
|
public:
|
54
|
-
Value(
|
55
|
-
|
26
|
+
Value(SourceSpan pstate, bool d = false, bool e = false, bool i = false, Type ct = NONE);
|
27
|
+
|
28
|
+
// Some obects are not meant to be compared
|
29
|
+
// ToDo: maybe fallback to pointer comparison?
|
30
|
+
virtual bool operator< (const Expression& rhs) const override = 0;
|
56
31
|
virtual bool operator== (const Expression& rhs) const override = 0;
|
32
|
+
|
33
|
+
// We can give some reasonable implementations by using
|
34
|
+
// inverst operators on the specialized implementations
|
35
|
+
virtual bool operator> (const Expression& rhs) const {
|
36
|
+
return rhs < *this;
|
37
|
+
}
|
38
|
+
virtual bool operator!= (const Expression& rhs) const {
|
39
|
+
return !(*this == rhs);
|
40
|
+
}
|
41
|
+
|
42
|
+
ATTACH_VIRTUAL_AST_OPERATIONS(Value);
|
43
|
+
|
57
44
|
};
|
58
45
|
|
59
46
|
///////////////////////////////////////////////////////////////////////
|
60
47
|
// Lists of values, both comma- and space-separated (distinguished by a
|
61
48
|
// type-tag.) Also used to represent variable-length argument lists.
|
62
49
|
///////////////////////////////////////////////////////////////////////
|
63
|
-
class List : public Value, public Vectorized<
|
64
|
-
void adjust_after_pushing(
|
50
|
+
class List : public Value, public Vectorized<ExpressionObj> {
|
51
|
+
void adjust_after_pushing(ExpressionObj e) override { is_expanded(false); }
|
65
52
|
private:
|
66
53
|
ADD_PROPERTY(enum Sass_Separator, separator)
|
67
54
|
ADD_PROPERTY(bool, is_arglist)
|
68
55
|
ADD_PROPERTY(bool, is_bracketed)
|
69
56
|
ADD_PROPERTY(bool, from_selector)
|
70
57
|
public:
|
71
|
-
List(
|
72
|
-
|
73
|
-
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"; }
|
74
61
|
const char* sep_string(bool compressed = false) const {
|
75
62
|
return separator() == SASS_SPACE ?
|
76
63
|
" " : (compressed ? "," : ", ");
|
77
64
|
}
|
78
65
|
bool is_invisible() const override { return empty() && !is_bracketed(); }
|
79
|
-
|
66
|
+
ExpressionObj value_at_index(size_t i);
|
80
67
|
|
81
68
|
virtual size_t hash() const override;
|
82
69
|
virtual size_t size() const;
|
83
70
|
virtual void set_delayed(bool delayed) override;
|
71
|
+
|
72
|
+
virtual bool operator< (const Expression& rhs) const override;
|
84
73
|
virtual bool operator== (const Expression& rhs) const override;
|
85
74
|
|
86
75
|
ATTACH_AST_OPERATIONS(List)
|
@@ -90,16 +79,18 @@ namespace Sass {
|
|
90
79
|
///////////////////////////////////////////////////////////////////////
|
91
80
|
// Key value paris.
|
92
81
|
///////////////////////////////////////////////////////////////////////
|
93
|
-
class Map : public Value, public Hashed {
|
94
|
-
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); }
|
95
84
|
public:
|
96
|
-
Map(
|
97
|
-
|
98
|
-
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"; }
|
99
88
|
bool is_invisible() const override { return empty(); }
|
100
|
-
List_Obj to_list(
|
89
|
+
List_Obj to_list(SourceSpan& pstate);
|
101
90
|
|
102
91
|
virtual size_t hash() const override;
|
92
|
+
|
93
|
+
virtual bool operator< (const Expression& rhs) const override;
|
103
94
|
virtual bool operator== (const Expression& rhs) const override;
|
104
95
|
|
105
96
|
ATTACH_AST_OPERATIONS(Map)
|
@@ -115,21 +106,22 @@ namespace Sass {
|
|
115
106
|
class Binary_Expression : public PreValue {
|
116
107
|
private:
|
117
108
|
HASH_PROPERTY(Operand, op)
|
118
|
-
HASH_PROPERTY(
|
119
|
-
HASH_PROPERTY(
|
109
|
+
HASH_PROPERTY(ExpressionObj, left)
|
110
|
+
HASH_PROPERTY(ExpressionObj, right)
|
120
111
|
mutable size_t hash_;
|
121
112
|
public:
|
122
|
-
Binary_Expression(
|
123
|
-
Operand op,
|
113
|
+
Binary_Expression(SourceSpan pstate,
|
114
|
+
Operand op, ExpressionObj lhs, ExpressionObj rhs);
|
124
115
|
|
125
|
-
const
|
126
|
-
const
|
116
|
+
const sass::string type_name();
|
117
|
+
const sass::string separator();
|
127
118
|
bool is_left_interpolant(void) const override;
|
128
119
|
bool is_right_interpolant(void) const override;
|
129
120
|
bool has_interpolant() const override;
|
130
121
|
|
131
122
|
virtual void set_delayed(bool delayed) override;
|
132
123
|
|
124
|
+
virtual bool operator< (const Expression& rhs) const override;
|
133
125
|
virtual bool operator==(const Expression& rhs) const override;
|
134
126
|
|
135
127
|
virtual size_t hash() const override;
|
@@ -146,14 +138,15 @@ namespace Sass {
|
|
146
138
|
ADD_PROPERTY(Definition_Obj, definition)
|
147
139
|
ADD_PROPERTY(bool, is_css)
|
148
140
|
public:
|
149
|
-
Function(
|
141
|
+
Function(SourceSpan pstate, Definition_Obj def, bool css);
|
150
142
|
|
151
|
-
|
152
|
-
static
|
143
|
+
sass::string type() const override { return "function"; }
|
144
|
+
static sass::string type_name() { return "function"; }
|
153
145
|
bool is_invisible() const override { return true; }
|
154
146
|
|
155
|
-
|
147
|
+
sass::string name();
|
156
148
|
|
149
|
+
bool operator< (const Expression& rhs) const override;
|
157
150
|
bool operator== (const Expression& rhs) const override;
|
158
151
|
|
159
152
|
ATTACH_AST_OPERATIONS(Function)
|
@@ -171,15 +164,15 @@ namespace Sass {
|
|
171
164
|
ADD_PROPERTY(void*, cookie)
|
172
165
|
mutable size_t hash_;
|
173
166
|
public:
|
174
|
-
Function_Call(
|
175
|
-
Function_Call(
|
176
|
-
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);
|
177
170
|
|
178
|
-
Function_Call(
|
179
|
-
Function_Call(
|
180
|
-
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);
|
181
174
|
|
182
|
-
|
175
|
+
sass::string name() const;
|
183
176
|
bool is_css();
|
184
177
|
|
185
178
|
bool operator==(const Expression& rhs) const override;
|
@@ -194,9 +187,9 @@ namespace Sass {
|
|
194
187
|
// Variable references.
|
195
188
|
///////////////////////
|
196
189
|
class Variable final : public PreValue {
|
197
|
-
ADD_CONSTREF(
|
190
|
+
ADD_CONSTREF(sass::string, name)
|
198
191
|
public:
|
199
|
-
Variable(
|
192
|
+
Variable(SourceSpan pstate, sass::string n);
|
200
193
|
virtual bool operator==(const Expression& rhs) const override;
|
201
194
|
virtual size_t hash() const override;
|
202
195
|
ATTACH_AST_OPERATIONS(Variable)
|
@@ -211,12 +204,12 @@ namespace Sass {
|
|
211
204
|
ADD_PROPERTY(bool, zero)
|
212
205
|
mutable size_t hash_;
|
213
206
|
public:
|
214
|
-
Number(
|
207
|
+
Number(SourceSpan pstate, double val, sass::string u = "", bool zero = true);
|
215
208
|
|
216
209
|
bool zero() { return zero_; }
|
217
210
|
|
218
|
-
|
219
|
-
static
|
211
|
+
sass::string type() const override { return "number"; }
|
212
|
+
static sass::string type_name() { return "number"; }
|
220
213
|
|
221
214
|
// cancel out unnecessary units
|
222
215
|
// result will be in input units
|
@@ -230,6 +223,7 @@ namespace Sass {
|
|
230
223
|
|
231
224
|
bool operator< (const Number& rhs) const;
|
232
225
|
bool operator== (const Number& rhs) const;
|
226
|
+
bool operator< (const Expression& rhs) const override;
|
233
227
|
bool operator== (const Expression& rhs) const override;
|
234
228
|
ATTACH_AST_OPERATIONS(Number)
|
235
229
|
ATTACH_CRTP_PERFORM_METHODS()
|
@@ -239,18 +233,19 @@ namespace Sass {
|
|
239
233
|
// Colors.
|
240
234
|
//////////
|
241
235
|
class Color : public Value {
|
242
|
-
ADD_CONSTREF(
|
236
|
+
ADD_CONSTREF(sass::string, disp)
|
243
237
|
HASH_PROPERTY(double, a)
|
244
238
|
protected:
|
245
239
|
mutable size_t hash_;
|
246
240
|
public:
|
247
|
-
Color(
|
241
|
+
Color(SourceSpan pstate, double a = 1, const sass::string disp = "");
|
248
242
|
|
249
|
-
|
250
|
-
static
|
243
|
+
sass::string type() const override { return "color"; }
|
244
|
+
static sass::string type_name() { return "color"; }
|
251
245
|
|
252
246
|
virtual size_t hash() const override = 0;
|
253
247
|
|
248
|
+
bool operator< (const Expression& rhs) const override;
|
254
249
|
bool operator== (const Expression& rhs) const override;
|
255
250
|
|
256
251
|
virtual Color_RGBA* copyAsRGBA() const = 0;
|
@@ -270,10 +265,10 @@ namespace Sass {
|
|
270
265
|
HASH_PROPERTY(double, g)
|
271
266
|
HASH_PROPERTY(double, b)
|
272
267
|
public:
|
273
|
-
Color_RGBA(
|
268
|
+
Color_RGBA(SourceSpan pstate, double r, double g, double b, double a = 1, const sass::string disp = "");
|
274
269
|
|
275
|
-
|
276
|
-
static
|
270
|
+
sass::string type() const override { return "color"; }
|
271
|
+
static sass::string type_name() { return "color"; }
|
277
272
|
|
278
273
|
size_t hash() const override;
|
279
274
|
|
@@ -283,6 +278,7 @@ namespace Sass {
|
|
283
278
|
Color_HSLA* copyAsHSLA() const override;
|
284
279
|
Color_HSLA* toHSLA() override { return copyAsHSLA(); }
|
285
280
|
|
281
|
+
bool operator< (const Expression& rhs) const override;
|
286
282
|
bool operator== (const Expression& rhs) const override;
|
287
283
|
|
288
284
|
ATTACH_AST_OPERATIONS(Color_RGBA)
|
@@ -298,10 +294,10 @@ namespace Sass {
|
|
298
294
|
HASH_PROPERTY(double, s)
|
299
295
|
HASH_PROPERTY(double, l)
|
300
296
|
public:
|
301
|
-
Color_HSLA(
|
297
|
+
Color_HSLA(SourceSpan pstate, double h, double s, double l, double a = 1, const sass::string disp = "");
|
302
298
|
|
303
|
-
|
304
|
-
static
|
299
|
+
sass::string type() const override { return "color"; }
|
300
|
+
static sass::string type_name() { return "color"; }
|
305
301
|
|
306
302
|
size_t hash() const override;
|
307
303
|
|
@@ -311,6 +307,7 @@ namespace Sass {
|
|
311
307
|
Color_HSLA* copyAsHSLA() const override;
|
312
308
|
Color_HSLA* toHSLA() override { return this; }
|
313
309
|
|
310
|
+
bool operator< (const Expression& rhs) const override;
|
314
311
|
bool operator== (const Expression& rhs) const override;
|
315
312
|
|
316
313
|
ATTACH_AST_OPERATIONS(Color_HSLA)
|
@@ -321,9 +318,10 @@ namespace Sass {
|
|
321
318
|
// Errors from Sass_Values.
|
322
319
|
//////////////////////////////
|
323
320
|
class Custom_Error final : public Value {
|
324
|
-
ADD_CONSTREF(
|
321
|
+
ADD_CONSTREF(sass::string, message)
|
325
322
|
public:
|
326
|
-
Custom_Error(
|
323
|
+
Custom_Error(SourceSpan pstate, sass::string msg);
|
324
|
+
bool operator< (const Expression& rhs) const override;
|
327
325
|
bool operator== (const Expression& rhs) const override;
|
328
326
|
ATTACH_AST_OPERATIONS(Custom_Error)
|
329
327
|
ATTACH_CRTP_PERFORM_METHODS()
|
@@ -333,9 +331,10 @@ namespace Sass {
|
|
333
331
|
// Warnings from Sass_Values.
|
334
332
|
//////////////////////////////
|
335
333
|
class Custom_Warning final : public Value {
|
336
|
-
ADD_CONSTREF(
|
334
|
+
ADD_CONSTREF(sass::string, message)
|
337
335
|
public:
|
338
|
-
Custom_Warning(
|
336
|
+
Custom_Warning(SourceSpan pstate, sass::string msg);
|
337
|
+
bool operator< (const Expression& rhs) const override;
|
339
338
|
bool operator== (const Expression& rhs) const override;
|
340
339
|
ATTACH_AST_OPERATIONS(Custom_Warning)
|
341
340
|
ATTACH_CRTP_PERFORM_METHODS()
|
@@ -348,16 +347,17 @@ namespace Sass {
|
|
348
347
|
HASH_PROPERTY(bool, value)
|
349
348
|
mutable size_t hash_;
|
350
349
|
public:
|
351
|
-
Boolean(
|
350
|
+
Boolean(SourceSpan pstate, bool val);
|
352
351
|
operator bool() override { return value_; }
|
353
352
|
|
354
|
-
|
355
|
-
static
|
353
|
+
sass::string type() const override { return "bool"; }
|
354
|
+
static sass::string type_name() { return "bool"; }
|
356
355
|
|
357
356
|
size_t hash() const override;
|
358
357
|
|
359
358
|
bool is_false() override { return !value_; }
|
360
359
|
|
360
|
+
bool operator< (const Expression& rhs) const override;
|
361
361
|
bool operator== (const Expression& rhs) const override;
|
362
362
|
|
363
363
|
ATTACH_AST_OPERATIONS(Boolean)
|
@@ -370,13 +370,16 @@ 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 {
|
378
378
|
return this->to_string() < rhs.to_string();
|
379
379
|
};
|
380
|
+
virtual bool operator==(const Expression& rhs) const override {
|
381
|
+
return this->to_string() == rhs.to_string();
|
382
|
+
};
|
380
383
|
ATTACH_VIRTUAL_AST_OPERATIONS(String);
|
381
384
|
ATTACH_CRTP_PERFORM_METHODS()
|
382
385
|
};
|
@@ -386,14 +389,14 @@ namespace Sass {
|
|
386
389
|
// Interpolated strings. Meant to be reduced to flat strings during the
|
387
390
|
// evaluation phase.
|
388
391
|
///////////////////////////////////////////////////////////////////////
|
389
|
-
class String_Schema final : public String, public Vectorized<
|
392
|
+
class String_Schema final : public String, public Vectorized<PreValueObj> {
|
390
393
|
ADD_PROPERTY(bool, css)
|
391
394
|
mutable size_t hash_;
|
392
395
|
public:
|
393
|
-
String_Schema(
|
396
|
+
String_Schema(SourceSpan pstate, size_t size = 0, bool css = true);
|
394
397
|
|
395
|
-
|
396
|
-
static
|
398
|
+
sass::string type() const override { return "string"; }
|
399
|
+
static sass::string type_name() { return "string"; }
|
397
400
|
|
398
401
|
bool is_left_interpolant(void) const override;
|
399
402
|
bool is_right_interpolant(void) const override;
|
@@ -403,6 +406,7 @@ namespace Sass {
|
|
403
406
|
size_t hash() const override;
|
404
407
|
virtual void set_delayed(bool delayed) override;
|
405
408
|
|
409
|
+
bool operator< (const Expression& rhs) const override;
|
406
410
|
bool operator==(const Expression& rhs) const override;
|
407
411
|
ATTACH_AST_OPERATIONS(String_Schema)
|
408
412
|
ATTACH_CRTP_PERFORM_METHODS()
|
@@ -413,23 +417,23 @@ namespace Sass {
|
|
413
417
|
////////////////////////////////////////////////////////
|
414
418
|
class String_Constant : public String {
|
415
419
|
ADD_PROPERTY(char, quote_mark)
|
416
|
-
|
417
|
-
HASH_CONSTREF(std::string, value)
|
420
|
+
HASH_CONSTREF(sass::string, value)
|
418
421
|
protected:
|
419
422
|
mutable size_t hash_;
|
420
423
|
public:
|
421
|
-
String_Constant(
|
422
|
-
String_Constant(
|
423
|
-
String_Constant(
|
424
|
-
String_Constant(
|
425
|
-
|
426
|
-
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"; }
|
427
430
|
bool is_invisible() const override;
|
428
431
|
virtual void rtrim() override;
|
429
432
|
size_t hash() const override;
|
433
|
+
bool operator< (const Expression& rhs) const override;
|
430
434
|
bool operator==(const Expression& rhs) const override;
|
431
435
|
// quotes are forced on inspection
|
432
|
-
virtual
|
436
|
+
virtual sass::string inspect() const override;
|
433
437
|
ATTACH_AST_OPERATIONS(String_Constant)
|
434
438
|
ATTACH_CRTP_PERFORM_METHODS()
|
435
439
|
};
|
@@ -439,12 +443,13 @@ namespace Sass {
|
|
439
443
|
////////////////////////////////////////////////////////
|
440
444
|
class String_Quoted final : public String_Constant {
|
441
445
|
public:
|
442
|
-
String_Quoted(
|
446
|
+
String_Quoted(SourceSpan pstate, sass::string val, char q = 0,
|
443
447
|
bool keep_utf8_escapes = false, bool skip_unquoting = false,
|
444
448
|
bool strict_unquoting = true, bool css = true);
|
449
|
+
bool operator< (const Expression& rhs) const override;
|
445
450
|
bool operator==(const Expression& rhs) const override;
|
446
451
|
// quotes are forced on inspection
|
447
|
-
|
452
|
+
sass::string inspect() const override;
|
448
453
|
ATTACH_AST_OPERATIONS(String_Quoted)
|
449
454
|
ATTACH_CRTP_PERFORM_METHODS()
|
450
455
|
};
|
@@ -454,15 +459,16 @@ namespace Sass {
|
|
454
459
|
//////////////////
|
455
460
|
class Null final : public Value {
|
456
461
|
public:
|
457
|
-
Null(
|
458
|
-
|
459
|
-
static
|
462
|
+
Null(SourceSpan pstate);
|
463
|
+
sass::string type() const override { return "null"; }
|
464
|
+
static sass::string type_name() { return "null"; }
|
460
465
|
bool is_invisible() const override { return true; }
|
461
466
|
operator bool() override { return false; }
|
462
467
|
bool is_false() override { return true; }
|
463
468
|
|
464
469
|
size_t hash() const override;
|
465
470
|
|
471
|
+
bool operator< (const Expression& rhs) const override;
|
466
472
|
bool operator== (const Expression& rhs) const override;
|
467
473
|
|
468
474
|
ATTACH_AST_OPERATIONS(Null)
|
@@ -474,11 +480,14 @@ namespace Sass {
|
|
474
480
|
//////////////////////////////////
|
475
481
|
class Parent_Reference final : public Value {
|
476
482
|
public:
|
477
|
-
Parent_Reference(
|
478
|
-
|
479
|
-
static
|
483
|
+
Parent_Reference(SourceSpan pstate);
|
484
|
+
sass::string type() const override { return "parent"; }
|
485
|
+
static sass::string type_name() { return "parent"; }
|
486
|
+
bool operator< (const Expression& rhs) const override {
|
487
|
+
return false; // they are always equal
|
488
|
+
}
|
480
489
|
bool operator==(const Expression& rhs) const override {
|
481
|
-
return true; //
|
490
|
+
return true; // they are always equal
|
482
491
|
};
|
483
492
|
ATTACH_AST_OPERATIONS(Parent_Reference)
|
484
493
|
ATTACH_CRTP_PERFORM_METHODS()
|
@@ -2,20 +2,20 @@
|
|
2
2
|
|
3
3
|
namespace Sass {
|
4
4
|
|
5
|
-
const
|
5
|
+
const sass::string traces_to_string(Backtraces traces, sass::string indent) {
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
sass::ostream ss;
|
8
|
+
sass::string cwd(File::get_cwd());
|
9
9
|
|
10
10
|
bool first = true;
|
11
11
|
size_t i_beg = traces.size() - 1;
|
12
|
-
size_t i_end =
|
12
|
+
size_t i_end = sass::string::npos;
|
13
13
|
for (size_t i = i_beg; i != i_end; i --) {
|
14
14
|
|
15
15
|
const Backtrace& trace = traces[i];
|
16
16
|
|
17
17
|
// make path relative to the current directory
|
18
|
-
|
18
|
+
sass::string rel_path(File::abs2rel(trace.pstate.getPath(), cwd, cwd));
|
19
19
|
|
20
20
|
// skip functions on error cases (unsure why ruby sass does this)
|
21
21
|
// if (trace.caller.substr(0, 6) == ", in f") continue;
|
@@ -23,9 +23,9 @@ namespace Sass {
|
|
23
23
|
if (first) {
|
24
24
|
ss << indent;
|
25
25
|
ss << "on line ";
|
26
|
-
ss << trace.pstate.
|
26
|
+
ss << trace.pstate.getLine();
|
27
27
|
ss << ":";
|
28
|
-
ss << trace.pstate.
|
28
|
+
ss << trace.pstate.getColumn();
|
29
29
|
ss << " of " << rel_path;
|
30
30
|
// ss << trace.caller;
|
31
31
|
first = false;
|
@@ -34,9 +34,9 @@ namespace Sass {
|
|
34
34
|
ss << std::endl;
|
35
35
|
ss << indent;
|
36
36
|
ss << "from line ";
|
37
|
-
ss << trace.pstate.
|
37
|
+
ss << trace.pstate.getLine();
|
38
38
|
ss << ":";
|
39
|
-
ss << trace.pstate.
|
39
|
+
ss << trace.pstate.getColumn();
|
40
40
|
ss << " of " << rel_path;
|
41
41
|
}
|
42
42
|
|
@@ -10,19 +10,19 @@ namespace Sass {
|
|
10
10
|
|
11
11
|
struct Backtrace {
|
12
12
|
|
13
|
-
|
14
|
-
|
13
|
+
SourceSpan pstate;
|
14
|
+
sass::string caller;
|
15
15
|
|
16
|
-
Backtrace(
|
16
|
+
Backtrace(SourceSpan pstate, sass::string c = "")
|
17
17
|
: pstate(pstate),
|
18
18
|
caller(c)
|
19
19
|
{ }
|
20
20
|
|
21
21
|
};
|
22
22
|
|
23
|
-
typedef
|
23
|
+
typedef sass::vector<Backtrace> Backtraces;
|
24
24
|
|
25
|
-
const
|
25
|
+
const sass::string traces_to_string(Backtraces traces, sass::string indent = "\t");
|
26
26
|
|
27
27
|
}
|
28
28
|
|