sassc 2.0.1 → 2.1.0.pre1
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/.gitignore +1 -0
- data/.gitmodules +1 -1
- data/.travis.yml +7 -3
- data/CHANGELOG.md +3 -0
- data/CODE_OF_CONDUCT.md +1 -1
- data/README.md +1 -1
- data/Rakefile +23 -8
- data/ext/extconf.rb +39 -0
- data/ext/libsass/.gitignore +1 -0
- data/ext/libsass/GNUmakefile.am +23 -39
- data/ext/libsass/Makefile +56 -91
- data/ext/libsass/Makefile.conf +16 -2
- data/ext/libsass/configure.ac +8 -12
- data/ext/libsass/include/sass/base.h +1 -0
- data/ext/libsass/include/sass/context.h +1 -1
- data/ext/libsass/src/GNUmakefile.am +1 -5
- data/ext/libsass/src/ast.cpp +747 -2010
- data/ext/libsass/src/ast.hpp +239 -2383
- data/ext/libsass/src/{to_c.cpp → ast2c.cpp} +22 -16
- data/ext/libsass/src/ast2c.hpp +39 -0
- data/ext/libsass/src/ast_def_macros.hpp +62 -10
- data/ext/libsass/src/ast_fwd_decl.cpp +1 -0
- data/ext/libsass/src/ast_fwd_decl.hpp +43 -165
- data/ext/libsass/src/ast_sel_cmp.cpp +909 -0
- data/ext/libsass/src/ast_sel_unify.cpp +280 -0
- data/ext/libsass/src/ast_selectors.cpp +1475 -0
- data/ext/libsass/src/ast_selectors.hpp +568 -0
- data/ext/libsass/src/ast_supports.cpp +130 -0
- data/ext/libsass/src/ast_supports.hpp +121 -0
- data/ext/libsass/src/ast_values.cpp +967 -0
- data/ext/libsass/src/ast_values.hpp +489 -0
- data/ext/libsass/src/backtrace.cpp +4 -0
- data/ext/libsass/src/base64vlq.cpp +3 -0
- data/ext/libsass/src/bind.cpp +18 -17
- data/ext/libsass/src/bind.hpp +3 -1
- data/ext/libsass/src/c2ast.cpp +64 -0
- data/ext/libsass/src/c2ast.hpp +14 -0
- data/ext/libsass/src/cencode.c +2 -2
- data/ext/libsass/src/check_nesting.cpp +52 -56
- data/ext/libsass/src/check_nesting.hpp +35 -34
- data/ext/libsass/src/color_maps.cpp +156 -153
- data/ext/libsass/src/color_maps.hpp +152 -152
- data/ext/libsass/src/constants.cpp +15 -0
- data/ext/libsass/src/constants.hpp +13 -0
- data/ext/libsass/src/context.cpp +24 -14
- data/ext/libsass/src/context.hpp +6 -6
- data/ext/libsass/src/cssize.cpp +69 -71
- data/ext/libsass/src/cssize.hpp +50 -50
- data/ext/libsass/src/debugger.hpp +117 -110
- data/ext/libsass/src/emitter.cpp +13 -12
- data/ext/libsass/src/emitter.hpp +13 -9
- data/ext/libsass/src/environment.cpp +15 -1
- data/ext/libsass/src/environment.hpp +6 -0
- data/ext/libsass/src/error_handling.cpp +36 -59
- data/ext/libsass/src/error_handling.hpp +29 -16
- data/ext/libsass/src/eval.cpp +302 -323
- data/ext/libsass/src/eval.hpp +64 -55
- data/ext/libsass/src/expand.cpp +94 -88
- data/ext/libsass/src/expand.hpp +33 -37
- data/ext/libsass/src/extend.cpp +38 -36
- data/ext/libsass/src/extend.hpp +15 -15
- data/ext/libsass/src/file.cpp +34 -2
- data/ext/libsass/src/fn_colors.cpp +594 -0
- data/ext/libsass/src/fn_colors.hpp +85 -0
- data/ext/libsass/src/fn_lists.cpp +284 -0
- data/ext/libsass/src/fn_lists.hpp +34 -0
- data/ext/libsass/src/fn_maps.cpp +94 -0
- data/ext/libsass/src/fn_maps.hpp +30 -0
- data/ext/libsass/src/fn_miscs.cpp +256 -0
- data/ext/libsass/src/fn_miscs.hpp +40 -0
- data/ext/libsass/src/fn_numbers.cpp +220 -0
- data/ext/libsass/src/fn_numbers.hpp +45 -0
- data/ext/libsass/src/fn_selectors.cpp +235 -0
- data/ext/libsass/src/fn_selectors.hpp +35 -0
- data/ext/libsass/src/fn_strings.cpp +254 -0
- data/ext/libsass/src/fn_strings.hpp +34 -0
- data/ext/libsass/src/fn_utils.cpp +156 -0
- data/ext/libsass/src/fn_utils.hpp +56 -0
- data/ext/libsass/src/inspect.cpp +101 -152
- data/ext/libsass/src/inspect.hpp +69 -73
- data/ext/libsass/src/json.cpp +2 -2
- data/ext/libsass/src/lexer.cpp +6 -3
- data/ext/libsass/src/listize.cpp +9 -11
- data/ext/libsass/src/listize.hpp +11 -7
- data/ext/libsass/src/memory/SharedPtr.cpp +2 -83
- data/ext/libsass/src/memory/SharedPtr.hpp +127 -143
- data/ext/libsass/src/node.cpp +13 -10
- data/ext/libsass/src/node.hpp +3 -3
- data/ext/libsass/src/operation.hpp +184 -144
- data/ext/libsass/src/operators.cpp +43 -17
- data/ext/libsass/src/operators.hpp +5 -5
- data/ext/libsass/src/output.cpp +21 -18
- data/ext/libsass/src/output.hpp +14 -21
- data/ext/libsass/src/parser.cpp +215 -183
- data/ext/libsass/src/parser.hpp +28 -24
- data/ext/libsass/src/plugins.cpp +5 -1
- data/ext/libsass/src/position.cpp +3 -0
- data/ext/libsass/src/prelexer.cpp +9 -3
- data/ext/libsass/src/prelexer.hpp +9 -9
- data/ext/libsass/src/remove_placeholders.cpp +14 -11
- data/ext/libsass/src/remove_placeholders.hpp +8 -9
- data/ext/libsass/src/sass.cpp +9 -3
- data/ext/libsass/src/sass.hpp +12 -9
- data/ext/libsass/src/sass2scss.cpp +45 -14
- data/ext/libsass/src/sass_context.cpp +18 -15
- data/ext/libsass/src/sass_functions.cpp +6 -3
- data/ext/libsass/src/sass_functions.hpp +1 -1
- data/ext/libsass/src/sass_util.cpp +3 -0
- data/ext/libsass/src/sass_values.cpp +21 -13
- data/ext/libsass/src/source_map.cpp +5 -2
- data/ext/libsass/src/source_map.hpp +2 -2
- data/ext/libsass/src/subset_map.cpp +4 -1
- data/ext/libsass/src/to_value.cpp +23 -21
- data/ext/libsass/src/to_value.hpp +18 -22
- data/ext/libsass/src/units.cpp +4 -0
- data/ext/libsass/src/units.hpp +1 -0
- data/ext/libsass/src/utf8/checked.h +12 -10
- data/ext/libsass/src/utf8/core.h +3 -0
- data/ext/libsass/src/utf8_string.cpp +3 -0
- data/ext/libsass/src/util.cpp +67 -75
- data/ext/libsass/src/util.hpp +64 -19
- data/ext/libsass/src/util_string.cpp +75 -0
- data/ext/libsass/src/util_string.hpp +19 -0
- data/ext/libsass/src/values.cpp +22 -13
- data/ext/libsass/src/values.hpp +2 -2
- data/ext/libsass/win/libsass.targets +30 -4
- data/ext/libsass/win/libsass.vcxproj.filters +82 -4
- data/lib/sassc.rb +24 -0
- data/lib/sassc/engine.rb +2 -2
- data/lib/sassc/native.rb +8 -1
- data/lib/sassc/version.rb +1 -1
- data/sassc.gemspec +19 -11
- data/test/engine_test.rb +26 -1
- data/test/native_test.rb +1 -1
- metadata +66 -72
- data/ext/Rakefile +0 -3
- data/ext/libsass/.github/CONTRIBUTING.md +0 -65
- data/ext/libsass/.github/ISSUE_TEMPLATE.md +0 -54
- data/ext/libsass/.travis.yml +0 -64
- data/ext/libsass/Readme.md +0 -104
- data/ext/libsass/SECURITY.md +0 -10
- data/ext/libsass/appveyor.yml +0 -91
- data/ext/libsass/docs/README.md +0 -20
- data/ext/libsass/docs/api-context-example.md +0 -45
- data/ext/libsass/docs/api-context-internal.md +0 -163
- data/ext/libsass/docs/api-context.md +0 -295
- data/ext/libsass/docs/api-doc.md +0 -215
- data/ext/libsass/docs/api-function-example.md +0 -67
- data/ext/libsass/docs/api-function-internal.md +0 -8
- data/ext/libsass/docs/api-function.md +0 -74
- data/ext/libsass/docs/api-importer-example.md +0 -112
- data/ext/libsass/docs/api-importer-internal.md +0 -20
- data/ext/libsass/docs/api-importer.md +0 -86
- data/ext/libsass/docs/api-value-example.md +0 -55
- data/ext/libsass/docs/api-value-internal.md +0 -76
- data/ext/libsass/docs/api-value.md +0 -154
- data/ext/libsass/docs/build-on-darwin.md +0 -27
- data/ext/libsass/docs/build-on-gentoo.md +0 -55
- data/ext/libsass/docs/build-on-windows.md +0 -139
- data/ext/libsass/docs/build-shared-library.md +0 -35
- data/ext/libsass/docs/build-with-autotools.md +0 -78
- data/ext/libsass/docs/build-with-makefiles.md +0 -68
- data/ext/libsass/docs/build-with-mingw.md +0 -107
- data/ext/libsass/docs/build-with-visual-studio.md +0 -90
- data/ext/libsass/docs/build.md +0 -97
- data/ext/libsass/docs/compatibility-plan.md +0 -48
- data/ext/libsass/docs/contributing.md +0 -17
- data/ext/libsass/docs/custom-functions-internal.md +0 -122
- data/ext/libsass/docs/dev-ast-memory.md +0 -223
- data/ext/libsass/docs/implementations.md +0 -56
- data/ext/libsass/docs/plugins.md +0 -47
- data/ext/libsass/docs/setup-environment.md +0 -68
- data/ext/libsass/docs/source-map-internals.md +0 -51
- data/ext/libsass/docs/trace.md +0 -26
- data/ext/libsass/docs/triage.md +0 -17
- data/ext/libsass/docs/unicode.md +0 -39
- data/ext/libsass/extconf.rb +0 -6
- data/ext/libsass/script/bootstrap +0 -13
- data/ext/libsass/script/branding +0 -10
- data/ext/libsass/script/ci-build-libsass +0 -134
- data/ext/libsass/script/ci-build-plugin +0 -62
- data/ext/libsass/script/ci-install-compiler +0 -6
- data/ext/libsass/script/ci-install-deps +0 -20
- data/ext/libsass/script/ci-report-coverage +0 -42
- data/ext/libsass/script/spec +0 -5
- data/ext/libsass/script/tap-driver +0 -652
- data/ext/libsass/script/tap-runner +0 -1
- data/ext/libsass/script/test-leaks.pl +0 -103
- data/ext/libsass/src/functions.cpp +0 -2234
- data/ext/libsass/src/functions.hpp +0 -198
- data/ext/libsass/src/to_c.hpp +0 -39
- data/ext/libsass/test/test_node.cpp +0 -94
- data/ext/libsass/test/test_paths.cpp +0 -28
- data/ext/libsass/test/test_selector_difference.cpp +0 -25
- data/ext/libsass/test/test_specificity.cpp +0 -25
- data/ext/libsass/test/test_subset_map.cpp +0 -472
- data/ext/libsass/test/test_superselector.cpp +0 -69
- data/ext/libsass/test/test_unification.cpp +0 -31
- data/lib/tasks/libsass.rb +0 -33
@@ -1,28 +1,34 @@
|
|
1
|
+
// sass.hpp must go before all system headers to get the
|
2
|
+
// __EXTENSIONS__ fix on Solaris.
|
1
3
|
#include "sass.hpp"
|
2
|
-
|
4
|
+
|
5
|
+
#include "ast2c.hpp"
|
3
6
|
#include "ast.hpp"
|
4
7
|
|
5
8
|
namespace Sass {
|
6
9
|
|
7
|
-
union Sass_Value*
|
8
|
-
{ return sass_make_error("unknown type for C-API"); }
|
9
|
-
|
10
|
-
union Sass_Value* To_C::operator()(Boolean_Ptr b)
|
10
|
+
union Sass_Value* AST2C::operator()(Boolean* b)
|
11
11
|
{ return sass_make_boolean(b->value()); }
|
12
12
|
|
13
|
-
union Sass_Value*
|
13
|
+
union Sass_Value* AST2C::operator()(Number* n)
|
14
14
|
{ return sass_make_number(n->value(), n->unit().c_str()); }
|
15
15
|
|
16
|
-
union Sass_Value*
|
16
|
+
union Sass_Value* AST2C::operator()(Custom_Warning* w)
|
17
17
|
{ return sass_make_warning(w->message().c_str()); }
|
18
18
|
|
19
|
-
union Sass_Value*
|
19
|
+
union Sass_Value* AST2C::operator()(Custom_Error* e)
|
20
20
|
{ return sass_make_error(e->message().c_str()); }
|
21
21
|
|
22
|
-
union Sass_Value*
|
22
|
+
union Sass_Value* AST2C::operator()(Color_RGBA* c)
|
23
23
|
{ return sass_make_color(c->r(), c->g(), c->b(), c->a()); }
|
24
24
|
|
25
|
-
union Sass_Value*
|
25
|
+
union Sass_Value* AST2C::operator()(Color_HSLA* c)
|
26
|
+
{
|
27
|
+
Color_RGBA_Obj rgba = c->copyAsRGBA();
|
28
|
+
return operator()(rgba.ptr());
|
29
|
+
}
|
30
|
+
|
31
|
+
union Sass_Value* AST2C::operator()(String_Constant* s)
|
26
32
|
{
|
27
33
|
if (s->quote_mark()) {
|
28
34
|
return sass_make_qstring(s->value().c_str());
|
@@ -31,10 +37,10 @@ namespace Sass {
|
|
31
37
|
}
|
32
38
|
}
|
33
39
|
|
34
|
-
union Sass_Value*
|
40
|
+
union Sass_Value* AST2C::operator()(String_Quoted* s)
|
35
41
|
{ return sass_make_qstring(s->value().c_str()); }
|
36
42
|
|
37
|
-
union Sass_Value*
|
43
|
+
union Sass_Value* AST2C::operator()(List* l)
|
38
44
|
{
|
39
45
|
union Sass_Value* v = sass_make_list(l->length(), l->separator(), l->is_bracketed());
|
40
46
|
for (size_t i = 0, L = l->length(); i < L; ++i) {
|
@@ -43,7 +49,7 @@ namespace Sass {
|
|
43
49
|
return v;
|
44
50
|
}
|
45
51
|
|
46
|
-
union Sass_Value*
|
52
|
+
union Sass_Value* AST2C::operator()(Map* m)
|
47
53
|
{
|
48
54
|
union Sass_Value* v = sass_make_map(m->length());
|
49
55
|
int i = 0;
|
@@ -55,7 +61,7 @@ namespace Sass {
|
|
55
61
|
return v;
|
56
62
|
}
|
57
63
|
|
58
|
-
union Sass_Value*
|
64
|
+
union Sass_Value* AST2C::operator()(Arguments* a)
|
59
65
|
{
|
60
66
|
union Sass_Value* v = sass_make_list(a->length(), SASS_COMMA, false);
|
61
67
|
for (size_t i = 0, L = a->length(); i < L; ++i) {
|
@@ -64,11 +70,11 @@ namespace Sass {
|
|
64
70
|
return v;
|
65
71
|
}
|
66
72
|
|
67
|
-
union Sass_Value*
|
73
|
+
union Sass_Value* AST2C::operator()(Argument* a)
|
68
74
|
{ return a->value()->perform(this); }
|
69
75
|
|
70
76
|
// not strictly necessary because of the fallback
|
71
|
-
union Sass_Value*
|
77
|
+
union Sass_Value* AST2C::operator()(Null* n)
|
72
78
|
{ return sass_make_null(); }
|
73
79
|
|
74
80
|
};
|
@@ -0,0 +1,39 @@
|
|
1
|
+
#ifndef SASS_AST2C_H
|
2
|
+
#define SASS_AST2C_H
|
3
|
+
|
4
|
+
#include "ast_fwd_decl.hpp"
|
5
|
+
#include "operation.hpp"
|
6
|
+
#include "sass/values.h"
|
7
|
+
|
8
|
+
namespace Sass {
|
9
|
+
|
10
|
+
class AST2C : public Operation_CRTP<union Sass_Value*, AST2C> {
|
11
|
+
|
12
|
+
public:
|
13
|
+
|
14
|
+
AST2C() { }
|
15
|
+
~AST2C() { }
|
16
|
+
|
17
|
+
union Sass_Value* operator()(Boolean*);
|
18
|
+
union Sass_Value* operator()(Number*);
|
19
|
+
union Sass_Value* operator()(Color_RGBA*);
|
20
|
+
union Sass_Value* operator()(Color_HSLA*);
|
21
|
+
union Sass_Value* operator()(String_Constant*);
|
22
|
+
union Sass_Value* operator()(String_Quoted*);
|
23
|
+
union Sass_Value* operator()(Custom_Warning*);
|
24
|
+
union Sass_Value* operator()(Custom_Error*);
|
25
|
+
union Sass_Value* operator()(List*);
|
26
|
+
union Sass_Value* operator()(Map*);
|
27
|
+
union Sass_Value* operator()(Null*);
|
28
|
+
union Sass_Value* operator()(Arguments*);
|
29
|
+
union Sass_Value* operator()(Argument*);
|
30
|
+
|
31
|
+
// return sass error if type is not supported
|
32
|
+
union Sass_Value* fallback(AST_Node* x)
|
33
|
+
{ return sass_make_error("unknown type for C-API"); }
|
34
|
+
|
35
|
+
};
|
36
|
+
|
37
|
+
}
|
38
|
+
|
39
|
+
#endif
|
@@ -35,16 +35,6 @@ class LocalOption {
|
|
35
35
|
LocalOption<size_t> cnt_##name(name, name + 1); \
|
36
36
|
if (name > MAX_NESTING) throw Exception::NestingLimitError(pstate, traces); \
|
37
37
|
|
38
|
-
#define ATTACH_OPERATIONS()\
|
39
|
-
virtual void perform(Operation<void>* op) { (*op)(this); }\
|
40
|
-
virtual AST_Node_Ptr perform(Operation<AST_Node_Ptr>* op) { return (*op)(this); }\
|
41
|
-
virtual Statement_Ptr perform(Operation<Statement_Ptr>* op) { return (*op)(this); }\
|
42
|
-
virtual Expression_Ptr perform(Operation<Expression_Ptr>* op) { return (*op)(this); }\
|
43
|
-
virtual Selector_Ptr perform(Operation<Selector_Ptr>* op) { return (*op)(this); }\
|
44
|
-
virtual std::string perform(Operation<std::string>* op) { return (*op)(this); }\
|
45
|
-
virtual union Sass_Value* perform(Operation<union Sass_Value*>* op) { return (*op)(this); }\
|
46
|
-
virtual Value_Ptr perform(Operation<Value_Ptr>* op) { return (*op)(this); }
|
47
|
-
|
48
38
|
#define ADD_PROPERTY(type, name)\
|
49
39
|
protected:\
|
50
40
|
type name##_;\
|
@@ -77,4 +67,66 @@ public: \
|
|
77
67
|
void name(type name##__) { hash_ = 0; name##_ = name##__; } \
|
78
68
|
private:
|
79
69
|
|
70
|
+
#ifdef DEBUG_SHARED_PTR
|
71
|
+
|
72
|
+
#define ATTACH_ABSTRACT_AST_OPERATIONS(klass) \
|
73
|
+
virtual klass* copy(std::string, size_t) const = 0; \
|
74
|
+
virtual klass* clone(std::string, size_t) const = 0; \
|
75
|
+
|
76
|
+
#define ATTACH_VIRTUAL_AST_OPERATIONS(klass) \
|
77
|
+
klass(const klass* ptr); \
|
78
|
+
virtual klass* copy(std::string, size_t) const override = 0; \
|
79
|
+
virtual klass* clone(std::string, size_t) const override = 0; \
|
80
|
+
|
81
|
+
#define ATTACH_AST_OPERATIONS(klass) \
|
82
|
+
klass(const klass* ptr); \
|
83
|
+
virtual klass* copy(std::string, size_t) const override; \
|
84
|
+
virtual klass* clone(std::string, size_t) const override; \
|
85
|
+
|
86
|
+
#else
|
87
|
+
|
88
|
+
#define ATTACH_ABSTRACT_AST_OPERATIONS(klass) \
|
89
|
+
virtual klass* copy() const = 0; \
|
90
|
+
virtual klass* clone() const = 0; \
|
91
|
+
|
92
|
+
#define ATTACH_VIRTUAL_AST_OPERATIONS(klass) \
|
93
|
+
klass(const klass* ptr); \
|
94
|
+
virtual klass* copy() const override = 0; \
|
95
|
+
virtual klass* clone() const override = 0; \
|
96
|
+
|
97
|
+
#define ATTACH_AST_OPERATIONS(klass) \
|
98
|
+
klass(const klass* ptr); \
|
99
|
+
virtual klass* copy() const override; \
|
100
|
+
virtual klass* clone() const override; \
|
101
|
+
|
102
|
+
#endif
|
103
|
+
|
104
|
+
#ifdef DEBUG_SHARED_PTR
|
105
|
+
|
106
|
+
#define IMPLEMENT_AST_OPERATORS(klass) \
|
107
|
+
klass* klass::copy(std::string file, size_t line) const { \
|
108
|
+
klass* cpy = new klass(this); \
|
109
|
+
cpy->trace(file, line); \
|
110
|
+
return cpy; \
|
111
|
+
} \
|
112
|
+
klass* klass::clone(std::string file, size_t line) const { \
|
113
|
+
klass* cpy = copy(file, line); \
|
114
|
+
cpy->cloneChildren(); \
|
115
|
+
return cpy; \
|
116
|
+
} \
|
117
|
+
|
118
|
+
#else
|
119
|
+
|
120
|
+
#define IMPLEMENT_AST_OPERATORS(klass) \
|
121
|
+
klass* klass::copy() const { \
|
122
|
+
return new klass(this); \
|
123
|
+
} \
|
124
|
+
klass* klass::clone() const { \
|
125
|
+
klass* cpy = copy(); \
|
126
|
+
cpy->cloneChildren(); \
|
127
|
+
return cpy; \
|
128
|
+
} \
|
129
|
+
|
130
|
+
#endif
|
131
|
+
|
80
132
|
#endif
|
@@ -19,256 +19,104 @@
|
|
19
19
|
namespace Sass {
|
20
20
|
|
21
21
|
class AST_Node;
|
22
|
-
typedef AST_Node* AST_Node_Ptr;
|
23
|
-
typedef AST_Node const* AST_Node_Ptr_Const;
|
24
22
|
|
25
23
|
class Has_Block;
|
26
|
-
typedef Has_Block* Has_Block_Ptr;
|
27
|
-
typedef Has_Block const* Has_Block_Ptr_Const;
|
28
24
|
|
29
25
|
class Simple_Selector;
|
30
|
-
|
31
|
-
|
26
|
+
|
27
|
+
class Parent_Reference;
|
32
28
|
|
33
29
|
class PreValue;
|
34
|
-
typedef PreValue* PreValue_Ptr;
|
35
|
-
typedef PreValue const* PreValue_Ptr_Const;
|
36
|
-
class Thunk;
|
37
|
-
typedef Thunk* Thunk_Ptr;
|
38
|
-
typedef Thunk const* Thunk_Ptr_Const;
|
39
30
|
class Block;
|
40
|
-
typedef Block* Block_Ptr;
|
41
|
-
typedef Block const* Block_Ptr_Const;
|
42
31
|
class Expression;
|
43
|
-
typedef Expression* Expression_Ptr;
|
44
|
-
typedef Expression const* Expression_Ptr_Const;
|
45
32
|
class Statement;
|
46
|
-
typedef Statement* Statement_Ptr;
|
47
|
-
typedef Statement const* Statement_Ptr_Const;
|
48
33
|
class Value;
|
49
|
-
typedef Value* Value_Ptr;
|
50
|
-
typedef Value const* Value_Ptr_Const;
|
51
34
|
class Declaration;
|
52
|
-
typedef Declaration* Declaration_Ptr;
|
53
|
-
typedef Declaration const* Declaration_Ptr_Const;
|
54
35
|
class Ruleset;
|
55
|
-
typedef Ruleset* Ruleset_Ptr;
|
56
|
-
typedef Ruleset const* Ruleset_Ptr_Const;
|
57
36
|
class Bubble;
|
58
|
-
typedef Bubble* Bubble_Ptr;
|
59
|
-
typedef Bubble const* Bubble_Ptr_Const;
|
60
37
|
class Trace;
|
61
|
-
typedef Trace* Trace_Ptr;
|
62
|
-
typedef Trace const* Trace_Ptr_Const;
|
63
38
|
|
64
39
|
class Media_Block;
|
65
|
-
typedef Media_Block* Media_Block_Ptr;
|
66
|
-
typedef Media_Block const* Media_Block_Ptr_Const;
|
67
40
|
class Supports_Block;
|
68
|
-
typedef Supports_Block* Supports_Block_Ptr;
|
69
|
-
typedef Supports_Block const* Supports_Block_Ptr_Const;
|
70
41
|
class Directive;
|
71
|
-
typedef Directive* Directive_Ptr;
|
72
|
-
typedef Directive const* Directive_Ptr_Const;
|
73
42
|
|
74
43
|
|
75
44
|
class Keyframe_Rule;
|
76
|
-
typedef Keyframe_Rule* Keyframe_Rule_Ptr;
|
77
|
-
typedef Keyframe_Rule const* Keyframe_Rule_Ptr_Const;
|
78
45
|
class At_Root_Block;
|
79
|
-
typedef At_Root_Block* At_Root_Block_Ptr;
|
80
|
-
typedef At_Root_Block const* At_Root_Block_Ptr_Const;
|
81
46
|
class Assignment;
|
82
|
-
typedef Assignment* Assignment_Ptr;
|
83
|
-
typedef Assignment const* Assignment_Ptr_Const;
|
84
47
|
|
85
48
|
class Import;
|
86
|
-
typedef Import* Import_Ptr;
|
87
|
-
typedef Import const* Import_Ptr_Const;
|
88
49
|
class Import_Stub;
|
89
|
-
typedef Import_Stub* Import_Stub_Ptr;
|
90
|
-
typedef Import_Stub const* Import_Stub_Ptr_Const;
|
91
50
|
class Warning;
|
92
|
-
typedef Warning* Warning_Ptr;
|
93
|
-
typedef Warning const* Warning_Ptr_Const;
|
94
51
|
|
95
52
|
class Error;
|
96
|
-
typedef Error* Error_Ptr;
|
97
|
-
typedef Error const* Error_Ptr_Const;
|
98
53
|
class Debug;
|
99
|
-
typedef Debug* Debug_Ptr;
|
100
|
-
typedef Debug const* Debug_Ptr_Const;
|
101
54
|
class Comment;
|
102
|
-
typedef Comment* Comment_Ptr;
|
103
|
-
typedef Comment const* Comment_Ptr_Const;
|
104
55
|
|
105
56
|
class If;
|
106
|
-
typedef If* If_Ptr;
|
107
|
-
typedef If const* If_Ptr_Const;
|
108
57
|
class For;
|
109
|
-
typedef For* For_Ptr;
|
110
|
-
typedef For const* For_Ptr_Const;
|
111
58
|
class Each;
|
112
|
-
typedef Each* Each_Ptr;
|
113
|
-
typedef Each const* Each_Ptr_Const;
|
114
59
|
class While;
|
115
|
-
typedef While* While_Ptr;
|
116
|
-
typedef While const* While_Ptr_Const;
|
117
60
|
class Return;
|
118
|
-
typedef Return* Return_Ptr;
|
119
|
-
typedef Return const* Return_Ptr_Const;
|
120
61
|
class Content;
|
121
|
-
typedef Content* Content_Ptr;
|
122
|
-
typedef Content const* Content_Ptr_Const;
|
123
62
|
class Extension;
|
124
|
-
typedef Extension* Extension_Ptr;
|
125
|
-
typedef Extension const* Extension_Ptr_Const;
|
126
63
|
class Definition;
|
127
|
-
typedef Definition* Definition_Ptr;
|
128
|
-
typedef Definition const* Definition_Ptr_Const;
|
129
64
|
|
130
65
|
class List;
|
131
|
-
typedef List* List_Ptr;
|
132
|
-
typedef List const* List_Ptr_Const;
|
133
66
|
class Map;
|
134
|
-
typedef Map* Map_Ptr;
|
135
|
-
typedef Map const* Map_Ptr_Const;
|
136
67
|
class Function;
|
137
|
-
typedef Function* Function_Ptr;
|
138
|
-
typedef Function const* Function_Ptr_Const;
|
139
68
|
|
140
69
|
class Mixin_Call;
|
141
|
-
typedef Mixin_Call* Mixin_Call_Ptr;
|
142
|
-
typedef Mixin_Call const* Mixin_Call_Ptr_Const;
|
143
70
|
class Binary_Expression;
|
144
|
-
typedef Binary_Expression* Binary_Expression_Ptr;
|
145
|
-
typedef Binary_Expression const* Binary_Expression_Ptr_Const;
|
146
71
|
class Unary_Expression;
|
147
|
-
typedef Unary_Expression* Unary_Expression_Ptr;
|
148
|
-
typedef Unary_Expression const* Unary_Expression_Ptr_Const;
|
149
72
|
class Function_Call;
|
150
|
-
typedef Function_Call* Function_Call_Ptr;
|
151
|
-
typedef Function_Call const* Function_Call_Ptr_Const;
|
152
|
-
class Function_Call_Schema;
|
153
|
-
typedef Function_Call_Schema* Function_Call_Schema_Ptr;
|
154
|
-
typedef Function_Call_Schema const* Function_Call_Schema_Ptr_Const;
|
155
73
|
class Custom_Warning;
|
156
|
-
typedef Custom_Warning* Custom_Warning_Ptr;
|
157
|
-
typedef Custom_Warning const* Custom_Warning_Ptr_Const;
|
158
74
|
class Custom_Error;
|
159
|
-
typedef Custom_Error* Custom_Error_Ptr;
|
160
|
-
typedef Custom_Error const* Custom_Error_Ptr_Const;
|
161
75
|
|
162
76
|
class Variable;
|
163
|
-
typedef Variable* Variable_Ptr;
|
164
|
-
typedef Variable const* Variable_Ptr_Const;
|
165
77
|
class Number;
|
166
|
-
typedef Number* Number_Ptr;
|
167
|
-
typedef Number const* Number_Ptr_Const;
|
168
78
|
class Color;
|
169
|
-
|
170
|
-
|
79
|
+
class Color_RGBA;
|
80
|
+
class Color_HSLA;
|
171
81
|
class Boolean;
|
172
|
-
typedef Boolean* Boolean_Ptr;
|
173
|
-
typedef Boolean const* Boolean_Ptr_Const;
|
174
82
|
class String;
|
175
|
-
typedef String* String_Ptr;
|
176
|
-
typedef String const* String_Ptr_Const;
|
177
83
|
|
178
84
|
class String_Schema;
|
179
|
-
typedef String_Schema* String_Schema_Ptr;
|
180
|
-
typedef String_Schema const* String_Schema_Ptr_Const;
|
181
85
|
class String_Constant;
|
182
|
-
typedef String_Constant* String_Constant_Ptr;
|
183
|
-
typedef String_Constant const* String_Constant_Ptr_Const;
|
184
86
|
class String_Quoted;
|
185
|
-
typedef String_Quoted* String_Quoted_Ptr;
|
186
|
-
typedef String_Quoted const* String_Quoted_Ptr_Const;
|
187
87
|
|
188
88
|
class Media_Query;
|
189
|
-
typedef Media_Query* Media_Query_Ptr;
|
190
|
-
typedef Media_Query const* Media_Query_Ptr_Const;
|
191
89
|
class Media_Query_Expression;
|
192
|
-
typedef Media_Query_Expression* Media_Query_Expression_Ptr;
|
193
|
-
typedef Media_Query_Expression const* Media_Query_Expression_Ptr_Const;
|
194
90
|
class Supports_Condition;
|
195
|
-
typedef Supports_Condition* Supports_Condition_Ptr;
|
196
|
-
typedef Supports_Condition const* Supports_Condition_Ptr_Const;
|
197
91
|
class Supports_Operator;
|
198
|
-
typedef Supports_Operator* Supports_Operator_Ptr;
|
199
|
-
typedef Supports_Operator const* Supports_Operator_Ptr_Const;
|
200
92
|
class Supports_Negation;
|
201
|
-
typedef Supports_Negation* Supports_Negation_Ptr;
|
202
|
-
typedef Supports_Negation const* Supports_Negation_Ptr_Const;
|
203
93
|
class Supports_Declaration;
|
204
|
-
typedef Supports_Declaration* Supports_Declaration_Ptr;
|
205
|
-
typedef Supports_Declaration const* Supports_Declaration_Ptr_Const;
|
206
94
|
class Supports_Interpolation;
|
207
|
-
typedef Supports_Interpolation* Supports_Interpolation_Ptr;
|
208
|
-
typedef Supports_Interpolation const* Supports_Interpolation_Ptr_Const;
|
209
95
|
|
210
96
|
|
211
97
|
class Null;
|
212
|
-
typedef Null* Null_Ptr;
|
213
|
-
typedef Null const* Null_Ptr_Const;
|
214
98
|
|
215
99
|
class At_Root_Query;
|
216
|
-
typedef At_Root_Query* At_Root_Query_Ptr;
|
217
|
-
typedef At_Root_Query const* At_Root_Query_Ptr_Const;
|
218
100
|
class Parent_Selector;
|
219
|
-
typedef Parent_Selector* Parent_Selector_Ptr;
|
220
|
-
typedef Parent_Selector const* Parent_Selector_Ptr_Const;
|
221
101
|
class Parameter;
|
222
|
-
typedef Parameter* Parameter_Ptr;
|
223
|
-
typedef Parameter const* Parameter_Ptr_Const;
|
224
102
|
class Parameters;
|
225
|
-
typedef Parameters* Parameters_Ptr;
|
226
|
-
typedef Parameters const* Parameters_Ptr_Const;
|
227
103
|
class Argument;
|
228
|
-
typedef Argument* Argument_Ptr;
|
229
|
-
typedef Argument const* Argument_Ptr_Const;
|
230
104
|
class Arguments;
|
231
|
-
typedef Arguments* Arguments_Ptr;
|
232
|
-
typedef Arguments const* Arguments_Ptr_Const;
|
233
105
|
class Selector;
|
234
|
-
typedef Selector* Selector_Ptr;
|
235
|
-
typedef Selector const* Selector_Ptr_Const;
|
236
106
|
|
237
107
|
|
238
108
|
class Selector_Schema;
|
239
|
-
typedef Selector_Schema* Selector_Schema_Ptr;
|
240
|
-
typedef Selector_Schema const* Selector_Schema_Ptr_Const;
|
241
109
|
class Placeholder_Selector;
|
242
|
-
|
243
|
-
typedef Placeholder_Selector const* Placeholder_Selector_Ptr_Const;
|
244
|
-
class Element_Selector;
|
245
|
-
typedef Element_Selector* Element_Selector_Ptr;
|
246
|
-
typedef Element_Selector const* Element_Selector_Ptr_Const;
|
110
|
+
class Type_Selector;
|
247
111
|
class Class_Selector;
|
248
|
-
typedef Class_Selector* Class_Selector_Ptr;
|
249
|
-
typedef Class_Selector const* Class_Selector_Ptr_Const;
|
250
112
|
class Id_Selector;
|
251
|
-
typedef Id_Selector* Id_Selector_Ptr;
|
252
|
-
typedef Id_Selector const* Id_Selector_Ptr_Const;
|
253
113
|
class Attribute_Selector;
|
254
|
-
typedef Attribute_Selector* Attribute_Selector_Ptr;
|
255
|
-
typedef Attribute_Selector const* Attribute_Selector_Ptr_Const;
|
256
114
|
|
257
115
|
class Pseudo_Selector;
|
258
|
-
typedef Pseudo_Selector* Pseudo_Selector_Ptr;
|
259
|
-
typedef Pseudo_Selector const * Pseudo_Selector_Ptr_Const;
|
260
116
|
class Wrapped_Selector;
|
261
|
-
typedef Wrapped_Selector* Wrapped_Selector_Ptr;
|
262
|
-
typedef Wrapped_Selector const * Wrapped_Selector_Ptr_Const;
|
263
117
|
class Compound_Selector;
|
264
|
-
typedef Compound_Selector* Compound_Selector_Ptr;
|
265
|
-
typedef Compound_Selector const * Compound_Selector_Ptr_Const;
|
266
118
|
class Complex_Selector;
|
267
|
-
typedef Complex_Selector* Complex_Selector_Ptr;
|
268
|
-
typedef Complex_Selector const * Complex_Selector_Ptr_Const;
|
269
119
|
class Selector_List;
|
270
|
-
typedef Selector_List* Selector_List_Ptr;
|
271
|
-
typedef Selector_List const * Selector_List_Ptr_Const;
|
272
120
|
|
273
121
|
|
274
122
|
// common classes
|
@@ -301,7 +149,6 @@ namespace Sass {
|
|
301
149
|
IMPL_MEM_OBJ(Comment);
|
302
150
|
IMPL_MEM_OBJ(PreValue);
|
303
151
|
IMPL_MEM_OBJ(Has_Block);
|
304
|
-
IMPL_MEM_OBJ(Thunk);
|
305
152
|
IMPL_MEM_OBJ(If);
|
306
153
|
IMPL_MEM_OBJ(For);
|
307
154
|
IMPL_MEM_OBJ(Each);
|
@@ -319,12 +166,13 @@ namespace Sass {
|
|
319
166
|
IMPL_MEM_OBJ(Binary_Expression);
|
320
167
|
IMPL_MEM_OBJ(Unary_Expression);
|
321
168
|
IMPL_MEM_OBJ(Function_Call);
|
322
|
-
IMPL_MEM_OBJ(Function_Call_Schema);
|
323
169
|
IMPL_MEM_OBJ(Custom_Warning);
|
324
170
|
IMPL_MEM_OBJ(Custom_Error);
|
325
171
|
IMPL_MEM_OBJ(Variable);
|
326
172
|
IMPL_MEM_OBJ(Number);
|
327
173
|
IMPL_MEM_OBJ(Color);
|
174
|
+
IMPL_MEM_OBJ(Color_RGBA);
|
175
|
+
IMPL_MEM_OBJ(Color_HSLA);
|
328
176
|
IMPL_MEM_OBJ(Boolean);
|
329
177
|
IMPL_MEM_OBJ(String_Schema);
|
330
178
|
IMPL_MEM_OBJ(String);
|
@@ -340,6 +188,7 @@ namespace Sass {
|
|
340
188
|
IMPL_MEM_OBJ(At_Root_Query);
|
341
189
|
IMPL_MEM_OBJ(Null);
|
342
190
|
IMPL_MEM_OBJ(Parent_Selector);
|
191
|
+
IMPL_MEM_OBJ(Parent_Reference);
|
343
192
|
IMPL_MEM_OBJ(Parameter);
|
344
193
|
IMPL_MEM_OBJ(Parameters);
|
345
194
|
IMPL_MEM_OBJ(Argument);
|
@@ -348,7 +197,7 @@ namespace Sass {
|
|
348
197
|
IMPL_MEM_OBJ(Selector_Schema);
|
349
198
|
IMPL_MEM_OBJ(Simple_Selector);
|
350
199
|
IMPL_MEM_OBJ(Placeholder_Selector);
|
351
|
-
IMPL_MEM_OBJ(
|
200
|
+
IMPL_MEM_OBJ(Type_Selector);
|
352
201
|
IMPL_MEM_OBJ(Class_Selector);
|
353
202
|
IMPL_MEM_OBJ(Id_Selector);
|
354
203
|
IMPL_MEM_OBJ(Attribute_Selector);
|
@@ -368,21 +217,42 @@ namespace Sass {
|
|
368
217
|
return ex.isNull() ? 0 : ex->hash();
|
369
218
|
}
|
370
219
|
};
|
220
|
+
template <class T>
|
221
|
+
bool OrderFunction(const T& lhs, const T& rhs) {
|
222
|
+
return !lhs.isNull() && !rhs.isNull() && *lhs < *rhs;
|
223
|
+
};
|
371
224
|
struct OrderNodes {
|
372
225
|
template <class T>
|
373
226
|
bool operator() (const T& lhs, const T& rhs) const {
|
374
|
-
return
|
227
|
+
return OrderFunction<T>(lhs, rhs);
|
375
228
|
}
|
376
229
|
};
|
377
|
-
|
378
|
-
|
379
|
-
bool operator() (const T& lhs, const T& rhs) const {
|
230
|
+
template <class T>
|
231
|
+
bool CompareFunction(const T& lhs, const T& rhs) {
|
380
232
|
// code around sass logic issue. 1px == 1 is true
|
381
233
|
// but both items are still different keys in maps
|
382
234
|
if (dynamic_cast<Number*>(lhs.ptr()))
|
383
235
|
if (dynamic_cast<Number*>(rhs.ptr()))
|
384
236
|
return lhs->hash() == rhs->hash();
|
385
237
|
return !lhs.isNull() && !rhs.isNull() && *lhs == *rhs;
|
238
|
+
}
|
239
|
+
struct CompareNodes {
|
240
|
+
template <class T>
|
241
|
+
bool operator() (const T& lhs, const T& rhs) const {
|
242
|
+
return CompareFunction<T>(lhs, rhs);
|
243
|
+
}
|
244
|
+
};
|
245
|
+
|
246
|
+
struct HashPtr {
|
247
|
+
template <class T>
|
248
|
+
size_t operator() (const T *ref) const {
|
249
|
+
return ref->hash();
|
250
|
+
}
|
251
|
+
};
|
252
|
+
struct ComparePtrs {
|
253
|
+
template <class T>
|
254
|
+
bool operator() (const T *lhs, const T *rhs) const {
|
255
|
+
return *lhs == *rhs;
|
386
256
|
}
|
387
257
|
};
|
388
258
|
|
@@ -413,13 +283,20 @@ namespace Sass {
|
|
413
283
|
typedef std::pair<Complex_Selector_Obj, SubSetMapPairs> SubSetMapResult;
|
414
284
|
typedef std::vector<SubSetMapResult> SubSetMapResults;
|
415
285
|
|
286
|
+
typedef std::set<Selector_Obj, OrderNodes> SelectorSet;
|
287
|
+
|
416
288
|
typedef std::deque<Complex_Selector_Obj> ComplexSelectorDeque;
|
417
289
|
typedef std::set<Simple_Selector_Obj, OrderNodes> SimpleSelectorSet;
|
418
290
|
typedef std::set<Complex_Selector_Obj, OrderNodes> ComplexSelectorSet;
|
419
291
|
typedef std::set<Compound_Selector_Obj, OrderNodes> CompoundSelectorSet;
|
420
292
|
typedef std::unordered_set<Simple_Selector_Obj, HashNodes, CompareNodes> SimpleSelectorDict;
|
421
293
|
|
422
|
-
typedef std::vector<
|
294
|
+
typedef std::vector<Block*> BlockStack;
|
295
|
+
typedef std::vector<Sass_Callee> CalleeStack;
|
296
|
+
typedef std::vector<AST_Node_Obj> CallStack;
|
297
|
+
typedef std::vector<Media_Block*> MediaStack;
|
298
|
+
typedef std::vector<Selector_List_Obj> SelectorStack;
|
299
|
+
typedef std::vector<Sass_Import_Entry> ImporterStack;
|
423
300
|
|
424
301
|
// only to switch implementations for testing
|
425
302
|
#define environment_map std::map
|
@@ -452,6 +329,7 @@ namespace Sass {
|
|
452
329
|
DECLARE_BASE_CAST(PreValue)
|
453
330
|
DECLARE_BASE_CAST(Value)
|
454
331
|
DECLARE_BASE_CAST(List)
|
332
|
+
DECLARE_BASE_CAST(Color)
|
455
333
|
DECLARE_BASE_CAST(String)
|
456
334
|
DECLARE_BASE_CAST(String_Constant)
|
457
335
|
DECLARE_BASE_CAST(Supports_Condition)
|