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
@@ -70,18 +70,18 @@ private:
|
|
70
70
|
#ifdef DEBUG_SHARED_PTR
|
71
71
|
|
72
72
|
#define ATTACH_ABSTRACT_AST_OPERATIONS(klass) \
|
73
|
-
virtual klass* copy(
|
74
|
-
virtual klass* clone(
|
73
|
+
virtual klass* copy(sass::string, size_t) const = 0; \
|
74
|
+
virtual klass* clone(sass::string, size_t) const = 0; \
|
75
75
|
|
76
76
|
#define ATTACH_VIRTUAL_AST_OPERATIONS(klass) \
|
77
77
|
klass(const klass* ptr); \
|
78
|
-
virtual klass* copy(
|
79
|
-
virtual klass* clone(
|
78
|
+
virtual klass* copy(sass::string, size_t) const override = 0; \
|
79
|
+
virtual klass* clone(sass::string, size_t) const override = 0; \
|
80
80
|
|
81
81
|
#define ATTACH_AST_OPERATIONS(klass) \
|
82
82
|
klass(const klass* ptr); \
|
83
|
-
virtual klass* copy(
|
84
|
-
virtual klass* clone(
|
83
|
+
virtual klass* copy(sass::string, size_t) const override; \
|
84
|
+
virtual klass* clone(sass::string, size_t) const override; \
|
85
85
|
|
86
86
|
#else
|
87
87
|
|
@@ -101,15 +101,23 @@ private:
|
|
101
101
|
|
102
102
|
#endif
|
103
103
|
|
104
|
+
#define ATTACH_VIRTUAL_CMP_OPERATIONS(klass) \
|
105
|
+
virtual bool operator==(const klass& rhs) const = 0; \
|
106
|
+
virtual bool operator!=(const klass& rhs) const { return !(*this == rhs); }; \
|
107
|
+
|
108
|
+
#define ATTACH_CMP_OPERATIONS(klass) \
|
109
|
+
virtual bool operator==(const klass& rhs) const; \
|
110
|
+
virtual bool operator!=(const klass& rhs) const { return !(*this == rhs); }; \
|
111
|
+
|
104
112
|
#ifdef DEBUG_SHARED_PTR
|
105
113
|
|
106
114
|
#define IMPLEMENT_AST_OPERATORS(klass) \
|
107
|
-
klass* klass::copy(
|
108
|
-
klass* cpy =
|
115
|
+
klass* klass::copy(sass::string file, size_t line) const { \
|
116
|
+
klass* cpy = SASS_MEMORY_NEW(klass, this); \
|
109
117
|
cpy->trace(file, line); \
|
110
118
|
return cpy; \
|
111
119
|
} \
|
112
|
-
klass* klass::clone(
|
120
|
+
klass* klass::clone(sass::string file, size_t line) const { \
|
113
121
|
klass* cpy = copy(file, line); \
|
114
122
|
cpy->cloneChildren(); \
|
115
123
|
return cpy; \
|
@@ -119,7 +127,7 @@ private:
|
|
119
127
|
|
120
128
|
#define IMPLEMENT_AST_OPERATORS(klass) \
|
121
129
|
klass* klass::copy() const { \
|
122
|
-
return
|
130
|
+
return SASS_MEMORY_NEW(klass, this); \
|
123
131
|
} \
|
124
132
|
klass* klass::clone() const { \
|
125
133
|
klass* cpy = copy(); \
|
@@ -16,15 +16,16 @@ namespace Sass {
|
|
16
16
|
IMPLEMENT_BASE_CAST(AST_Node)
|
17
17
|
IMPLEMENT_BASE_CAST(Expression)
|
18
18
|
IMPLEMENT_BASE_CAST(Statement)
|
19
|
-
IMPLEMENT_BASE_CAST(
|
19
|
+
IMPLEMENT_BASE_CAST(ParentStatement)
|
20
20
|
IMPLEMENT_BASE_CAST(PreValue)
|
21
21
|
IMPLEMENT_BASE_CAST(Value)
|
22
22
|
IMPLEMENT_BASE_CAST(Color)
|
23
23
|
IMPLEMENT_BASE_CAST(List)
|
24
24
|
IMPLEMENT_BASE_CAST(String)
|
25
25
|
IMPLEMENT_BASE_CAST(String_Constant)
|
26
|
-
IMPLEMENT_BASE_CAST(
|
26
|
+
IMPLEMENT_BASE_CAST(SupportsCondition)
|
27
27
|
IMPLEMENT_BASE_CAST(Selector)
|
28
|
-
IMPLEMENT_BASE_CAST(
|
28
|
+
IMPLEMENT_BASE_CAST(SelectorComponent)
|
29
|
+
IMPLEMENT_BASE_CAST(SimpleSelector)
|
29
30
|
|
30
31
|
}
|
@@ -1,16 +1,10 @@
|
|
1
1
|
#ifndef SASS_AST_FWD_DECL_H
|
2
2
|
#define SASS_AST_FWD_DECL_H
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
#include
|
7
|
-
#include
|
8
|
-
#include <typeinfo>
|
9
|
-
#include <iostream>
|
10
|
-
#include <algorithm>
|
11
|
-
#include <unordered_map>
|
12
|
-
#include <unordered_set>
|
13
|
-
#include "memory/SharedPtr.hpp"
|
4
|
+
// sass.hpp must go before all system headers to get the
|
5
|
+
// __EXTENSIONS__ fix on Solaris.
|
6
|
+
#include "sass.hpp"
|
7
|
+
#include "memory.hpp"
|
14
8
|
#include "sass/functions.h"
|
15
9
|
|
16
10
|
/////////////////////////////////////////////
|
@@ -18,11 +12,16 @@
|
|
18
12
|
/////////////////////////////////////////////
|
19
13
|
namespace Sass {
|
20
14
|
|
15
|
+
class SourceData;
|
16
|
+
class SourceFile;
|
17
|
+
class SynthFile;
|
18
|
+
class ItplFile;
|
19
|
+
|
21
20
|
class AST_Node;
|
22
21
|
|
23
|
-
class
|
22
|
+
class ParentStatement;
|
24
23
|
|
25
|
-
class
|
24
|
+
class SimpleSelector;
|
26
25
|
|
27
26
|
class Parent_Reference;
|
28
27
|
|
@@ -32,34 +31,36 @@ namespace Sass {
|
|
32
31
|
class Statement;
|
33
32
|
class Value;
|
34
33
|
class Declaration;
|
35
|
-
class
|
34
|
+
class StyleRule;
|
36
35
|
class Bubble;
|
37
36
|
class Trace;
|
38
37
|
|
39
|
-
class
|
40
|
-
class
|
41
|
-
class
|
38
|
+
class MediaRule;
|
39
|
+
class CssMediaRule;
|
40
|
+
class CssMediaQuery;
|
42
41
|
|
42
|
+
class SupportsRule;
|
43
|
+
class AtRule;
|
43
44
|
|
44
45
|
class Keyframe_Rule;
|
45
|
-
class
|
46
|
+
class AtRootRule;
|
46
47
|
class Assignment;
|
47
48
|
|
48
49
|
class Import;
|
49
50
|
class Import_Stub;
|
50
|
-
class
|
51
|
+
class WarningRule;
|
51
52
|
|
52
|
-
class
|
53
|
-
class
|
53
|
+
class ErrorRule;
|
54
|
+
class DebugRule;
|
54
55
|
class Comment;
|
55
56
|
|
56
57
|
class If;
|
57
|
-
class
|
58
|
-
class
|
59
|
-
class
|
58
|
+
class ForRule;
|
59
|
+
class EachRule;
|
60
|
+
class WhileRule;
|
60
61
|
class Return;
|
61
62
|
class Content;
|
62
|
-
class
|
63
|
+
class ExtendRule;
|
63
64
|
class Definition;
|
64
65
|
|
65
66
|
class List;
|
@@ -80,6 +81,7 @@ namespace Sass {
|
|
80
81
|
class Color_HSLA;
|
81
82
|
class Boolean;
|
82
83
|
class String;
|
84
|
+
class Null;
|
83
85
|
|
84
86
|
class String_Schema;
|
85
87
|
class String_Constant;
|
@@ -87,17 +89,13 @@ namespace Sass {
|
|
87
89
|
|
88
90
|
class Media_Query;
|
89
91
|
class Media_Query_Expression;
|
90
|
-
class
|
91
|
-
class
|
92
|
-
class
|
93
|
-
class
|
92
|
+
class SupportsCondition;
|
93
|
+
class SupportsOperation;
|
94
|
+
class SupportsNegation;
|
95
|
+
class SupportsDeclaration;
|
94
96
|
class Supports_Interpolation;
|
95
|
-
|
96
|
-
|
97
|
-
class Null;
|
98
|
-
|
97
|
+
|
99
98
|
class At_Root_Query;
|
100
|
-
class Parent_Selector;
|
101
99
|
class Parameter;
|
102
100
|
class Parameters;
|
103
101
|
class Argument;
|
@@ -106,56 +104,69 @@ namespace Sass {
|
|
106
104
|
|
107
105
|
|
108
106
|
class Selector_Schema;
|
109
|
-
class
|
110
|
-
class
|
111
|
-
class
|
112
|
-
class
|
113
|
-
class
|
114
|
-
|
115
|
-
class
|
116
|
-
|
117
|
-
class
|
118
|
-
class
|
119
|
-
class
|
120
|
-
|
107
|
+
class PlaceholderSelector;
|
108
|
+
class TypeSelector;
|
109
|
+
class ClassSelector;
|
110
|
+
class IDSelector;
|
111
|
+
class AttributeSelector;
|
112
|
+
|
113
|
+
class PseudoSelector;
|
114
|
+
|
115
|
+
class SelectorComponent;
|
116
|
+
class SelectorCombinator;
|
117
|
+
class CompoundSelector;
|
118
|
+
class ComplexSelector;
|
119
|
+
class SelectorList;
|
121
120
|
|
122
121
|
// common classes
|
123
122
|
class Context;
|
124
123
|
class Expand;
|
125
124
|
class Eval;
|
126
125
|
|
126
|
+
class Extension;
|
127
|
+
|
127
128
|
// declare classes that are instances of memory nodes
|
128
|
-
//
|
129
|
-
|
129
|
+
// Note: also add a mapping without underscore
|
130
|
+
// ToDo: move to camelCase vars in the future
|
131
|
+
#define IMPL_MEM_OBJ(type) \
|
132
|
+
typedef SharedImpl<type> type##Obj; \
|
133
|
+
typedef SharedImpl<type> type##_Obj; \
|
134
|
+
|
135
|
+
IMPL_MEM_OBJ(SourceData);
|
136
|
+
IMPL_MEM_OBJ(SourceFile);
|
137
|
+
IMPL_MEM_OBJ(SynthFile);
|
138
|
+
IMPL_MEM_OBJ(ItplFile);
|
130
139
|
|
131
140
|
IMPL_MEM_OBJ(AST_Node);
|
132
141
|
IMPL_MEM_OBJ(Statement);
|
133
142
|
IMPL_MEM_OBJ(Block);
|
134
|
-
IMPL_MEM_OBJ(
|
143
|
+
IMPL_MEM_OBJ(StyleRule);
|
135
144
|
IMPL_MEM_OBJ(Bubble);
|
136
145
|
IMPL_MEM_OBJ(Trace);
|
137
|
-
IMPL_MEM_OBJ(
|
138
|
-
IMPL_MEM_OBJ(
|
139
|
-
IMPL_MEM_OBJ(
|
146
|
+
IMPL_MEM_OBJ(MediaRule);
|
147
|
+
IMPL_MEM_OBJ(CssMediaRule);
|
148
|
+
IMPL_MEM_OBJ(CssMediaQuery);
|
149
|
+
IMPL_MEM_OBJ(SupportsRule);
|
150
|
+
IMPL_MEM_OBJ(AtRule);
|
140
151
|
IMPL_MEM_OBJ(Keyframe_Rule);
|
141
|
-
IMPL_MEM_OBJ(
|
152
|
+
IMPL_MEM_OBJ(AtRootRule);
|
142
153
|
IMPL_MEM_OBJ(Declaration);
|
143
154
|
IMPL_MEM_OBJ(Assignment);
|
144
155
|
IMPL_MEM_OBJ(Import);
|
145
156
|
IMPL_MEM_OBJ(Import_Stub);
|
146
|
-
IMPL_MEM_OBJ(
|
147
|
-
IMPL_MEM_OBJ(
|
148
|
-
IMPL_MEM_OBJ(
|
157
|
+
IMPL_MEM_OBJ(WarningRule);
|
158
|
+
IMPL_MEM_OBJ(ErrorRule);
|
159
|
+
IMPL_MEM_OBJ(DebugRule);
|
149
160
|
IMPL_MEM_OBJ(Comment);
|
150
161
|
IMPL_MEM_OBJ(PreValue);
|
151
|
-
IMPL_MEM_OBJ(
|
162
|
+
IMPL_MEM_OBJ(ParentStatement);
|
152
163
|
IMPL_MEM_OBJ(If);
|
153
|
-
IMPL_MEM_OBJ(
|
154
|
-
IMPL_MEM_OBJ(
|
155
|
-
IMPL_MEM_OBJ(
|
164
|
+
IMPL_MEM_OBJ(ForRule);
|
165
|
+
IMPL_MEM_OBJ(EachRule);
|
166
|
+
IMPL_MEM_OBJ(WhileRule);
|
156
167
|
IMPL_MEM_OBJ(Return);
|
157
168
|
IMPL_MEM_OBJ(Content);
|
158
|
-
IMPL_MEM_OBJ(
|
169
|
+
IMPL_MEM_OBJ(ExtendRule);
|
159
170
|
IMPL_MEM_OBJ(Definition);
|
160
171
|
IMPL_MEM_OBJ(Mixin_Call);
|
161
172
|
IMPL_MEM_OBJ(Value);
|
@@ -180,14 +191,13 @@ namespace Sass {
|
|
180
191
|
IMPL_MEM_OBJ(String_Quoted);
|
181
192
|
IMPL_MEM_OBJ(Media_Query);
|
182
193
|
IMPL_MEM_OBJ(Media_Query_Expression);
|
183
|
-
IMPL_MEM_OBJ(
|
184
|
-
IMPL_MEM_OBJ(
|
185
|
-
IMPL_MEM_OBJ(
|
186
|
-
IMPL_MEM_OBJ(
|
194
|
+
IMPL_MEM_OBJ(SupportsCondition);
|
195
|
+
IMPL_MEM_OBJ(SupportsOperation);
|
196
|
+
IMPL_MEM_OBJ(SupportsNegation);
|
197
|
+
IMPL_MEM_OBJ(SupportsDeclaration);
|
187
198
|
IMPL_MEM_OBJ(Supports_Interpolation);
|
188
199
|
IMPL_MEM_OBJ(At_Root_Query);
|
189
200
|
IMPL_MEM_OBJ(Null);
|
190
|
-
IMPL_MEM_OBJ(Parent_Selector);
|
191
201
|
IMPL_MEM_OBJ(Parent_Reference);
|
192
202
|
IMPL_MEM_OBJ(Parameter);
|
193
203
|
IMPL_MEM_OBJ(Parameters);
|
@@ -195,108 +205,30 @@ namespace Sass {
|
|
195
205
|
IMPL_MEM_OBJ(Arguments);
|
196
206
|
IMPL_MEM_OBJ(Selector);
|
197
207
|
IMPL_MEM_OBJ(Selector_Schema);
|
198
|
-
IMPL_MEM_OBJ(
|
199
|
-
IMPL_MEM_OBJ(
|
200
|
-
IMPL_MEM_OBJ(
|
201
|
-
IMPL_MEM_OBJ(
|
202
|
-
IMPL_MEM_OBJ(
|
203
|
-
IMPL_MEM_OBJ(
|
204
|
-
IMPL_MEM_OBJ(
|
205
|
-
|
206
|
-
IMPL_MEM_OBJ(
|
207
|
-
IMPL_MEM_OBJ(
|
208
|
-
IMPL_MEM_OBJ(
|
209
|
-
|
210
|
-
|
211
|
-
// Implement compare, order and hashing operations for AST Nodes
|
212
|
-
// ###########################################################################
|
213
|
-
|
214
|
-
struct HashNodes {
|
215
|
-
template <class T>
|
216
|
-
size_t operator() (const T& ex) const {
|
217
|
-
return ex.isNull() ? 0 : ex->hash();
|
218
|
-
}
|
219
|
-
};
|
220
|
-
template <class T>
|
221
|
-
bool OrderFunction(const T& lhs, const T& rhs) {
|
222
|
-
return !lhs.isNull() && !rhs.isNull() && *lhs < *rhs;
|
223
|
-
};
|
224
|
-
struct OrderNodes {
|
225
|
-
template <class T>
|
226
|
-
bool operator() (const T& lhs, const T& rhs) const {
|
227
|
-
return OrderFunction<T>(lhs, rhs);
|
228
|
-
}
|
229
|
-
};
|
230
|
-
template <class T>
|
231
|
-
bool CompareFunction(const T& lhs, const T& rhs) {
|
232
|
-
// code around sass logic issue. 1px == 1 is true
|
233
|
-
// but both items are still different keys in maps
|
234
|
-
if (dynamic_cast<Number*>(lhs.ptr()))
|
235
|
-
if (dynamic_cast<Number*>(rhs.ptr()))
|
236
|
-
return lhs->hash() == rhs->hash();
|
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;
|
256
|
-
}
|
257
|
-
};
|
208
|
+
IMPL_MEM_OBJ(SimpleSelector);
|
209
|
+
IMPL_MEM_OBJ(PlaceholderSelector);
|
210
|
+
IMPL_MEM_OBJ(TypeSelector);
|
211
|
+
IMPL_MEM_OBJ(ClassSelector);
|
212
|
+
IMPL_MEM_OBJ(IDSelector);
|
213
|
+
IMPL_MEM_OBJ(AttributeSelector);
|
214
|
+
IMPL_MEM_OBJ(PseudoSelector);
|
215
|
+
|
216
|
+
IMPL_MEM_OBJ(SelectorComponent);
|
217
|
+
IMPL_MEM_OBJ(SelectorCombinator);
|
218
|
+
IMPL_MEM_OBJ(CompoundSelector);
|
219
|
+
IMPL_MEM_OBJ(ComplexSelector);
|
220
|
+
IMPL_MEM_OBJ(SelectorList);
|
258
221
|
|
259
222
|
// ###########################################################################
|
260
223
|
// some often used typedefs
|
261
224
|
// ###########################################################################
|
262
225
|
|
263
|
-
typedef
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
>
|
269
|
-
typedef std::unordered_set<
|
270
|
-
Expression_Obj, // value
|
271
|
-
HashNodes, // hasher
|
272
|
-
CompareNodes // compare
|
273
|
-
> ExpressionSet;
|
274
|
-
|
275
|
-
typedef std::string SubSetMapKey;
|
276
|
-
typedef std::vector<std::string> SubSetMapKeys;
|
277
|
-
|
278
|
-
typedef std::pair<Complex_Selector_Obj, Compound_Selector_Obj> SubSetMapPair;
|
279
|
-
typedef std::pair<Compound_Selector_Obj, Complex_Selector_Obj> SubSetMapLookup;
|
280
|
-
typedef std::vector<SubSetMapPair> SubSetMapPairs;
|
281
|
-
typedef std::vector<SubSetMapLookup> SubSetMapLookups;
|
282
|
-
|
283
|
-
typedef std::pair<Complex_Selector_Obj, SubSetMapPairs> SubSetMapResult;
|
284
|
-
typedef std::vector<SubSetMapResult> SubSetMapResults;
|
285
|
-
|
286
|
-
typedef std::set<Selector_Obj, OrderNodes> SelectorSet;
|
287
|
-
|
288
|
-
typedef std::deque<Complex_Selector_Obj> ComplexSelectorDeque;
|
289
|
-
typedef std::set<Simple_Selector_Obj, OrderNodes> SimpleSelectorSet;
|
290
|
-
typedef std::set<Complex_Selector_Obj, OrderNodes> ComplexSelectorSet;
|
291
|
-
typedef std::set<Compound_Selector_Obj, OrderNodes> CompoundSelectorSet;
|
292
|
-
typedef std::unordered_set<Simple_Selector_Obj, HashNodes, CompareNodes> SimpleSelectorDict;
|
293
|
-
|
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;
|
226
|
+
typedef sass::vector<Block*> BlockStack;
|
227
|
+
typedef sass::vector<Sass_Callee> CalleeStack;
|
228
|
+
typedef sass::vector<AST_Node_Obj> CallStack;
|
229
|
+
typedef sass::vector<CssMediaRuleObj> MediaStack;
|
230
|
+
typedef sass::vector<SelectorListObj> SelectorStack;
|
231
|
+
typedef sass::vector<Sass_Import_Entry> ImporterStack;
|
300
232
|
|
301
233
|
// only to switch implementations for testing
|
302
234
|
#define environment_map std::map
|
@@ -325,16 +257,17 @@ namespace Sass {
|
|
325
257
|
DECLARE_BASE_CAST(AST_Node)
|
326
258
|
DECLARE_BASE_CAST(Expression)
|
327
259
|
DECLARE_BASE_CAST(Statement)
|
328
|
-
DECLARE_BASE_CAST(
|
260
|
+
DECLARE_BASE_CAST(ParentStatement)
|
329
261
|
DECLARE_BASE_CAST(PreValue)
|
330
262
|
DECLARE_BASE_CAST(Value)
|
331
263
|
DECLARE_BASE_CAST(List)
|
332
264
|
DECLARE_BASE_CAST(Color)
|
333
265
|
DECLARE_BASE_CAST(String)
|
334
266
|
DECLARE_BASE_CAST(String_Constant)
|
335
|
-
DECLARE_BASE_CAST(
|
267
|
+
DECLARE_BASE_CAST(SupportsCondition)
|
336
268
|
DECLARE_BASE_CAST(Selector)
|
337
|
-
DECLARE_BASE_CAST(
|
269
|
+
DECLARE_BASE_CAST(SimpleSelector)
|
270
|
+
DECLARE_BASE_CAST(SelectorComponent)
|
338
271
|
|
339
272
|
}
|
340
273
|
|