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
@@ -1,99 +1,83 @@
|
|
1
1
|
// sass.hpp must go before all system headers to get the
|
2
2
|
// __EXTENSIONS__ fix on Solaris.
|
3
3
|
#include "sass.hpp"
|
4
|
-
|
5
4
|
#include "ast.hpp"
|
6
|
-
|
7
|
-
#include "node.hpp"
|
8
|
-
#include "eval.hpp"
|
9
|
-
#include "extend.hpp"
|
10
|
-
#include "emitter.hpp"
|
11
|
-
#include "color_maps.hpp"
|
12
|
-
#include "ast_fwd_decl.hpp"
|
13
|
-
#include <set>
|
14
|
-
#include <iomanip>
|
15
|
-
#include <iostream>
|
16
|
-
#include <algorithm>
|
17
|
-
#include <functional>
|
18
|
-
#include <cctype>
|
19
|
-
#include <locale>
|
20
|
-
|
21
|
-
#include "ast_values.hpp"
|
5
|
+
|
22
6
|
|
23
7
|
namespace Sass {
|
24
8
|
|
25
9
|
/////////////////////////////////////////////////////////////////////////
|
26
10
|
/////////////////////////////////////////////////////////////////////////
|
27
11
|
|
28
|
-
|
29
|
-
:
|
12
|
+
SupportsRule::SupportsRule(SourceSpan pstate, SupportsConditionObj condition, Block_Obj block)
|
13
|
+
: ParentStatement(pstate, block), condition_(condition)
|
30
14
|
{ statement_type(SUPPORTS); }
|
31
|
-
|
32
|
-
:
|
15
|
+
SupportsRule::SupportsRule(const SupportsRule* ptr)
|
16
|
+
: ParentStatement(ptr), condition_(ptr->condition_)
|
33
17
|
{ statement_type(SUPPORTS); }
|
34
|
-
bool
|
18
|
+
bool SupportsRule::bubbles() { return true; }
|
35
19
|
|
36
20
|
/////////////////////////////////////////////////////////////////////////
|
37
21
|
/////////////////////////////////////////////////////////////////////////
|
38
22
|
|
39
|
-
|
23
|
+
SupportsCondition::SupportsCondition(SourceSpan pstate)
|
40
24
|
: Expression(pstate)
|
41
25
|
{ }
|
42
26
|
|
43
|
-
|
27
|
+
SupportsCondition::SupportsCondition(const SupportsCondition* ptr)
|
44
28
|
: Expression(ptr)
|
45
29
|
{ }
|
46
30
|
|
47
31
|
/////////////////////////////////////////////////////////////////////////
|
48
32
|
/////////////////////////////////////////////////////////////////////////
|
49
33
|
|
50
|
-
|
51
|
-
:
|
34
|
+
SupportsOperation::SupportsOperation(SourceSpan pstate, SupportsConditionObj l, SupportsConditionObj r, Operand o)
|
35
|
+
: SupportsCondition(pstate), left_(l), right_(r), operand_(o)
|
52
36
|
{ }
|
53
|
-
|
54
|
-
:
|
37
|
+
SupportsOperation::SupportsOperation(const SupportsOperation* ptr)
|
38
|
+
: SupportsCondition(ptr),
|
55
39
|
left_(ptr->left_),
|
56
40
|
right_(ptr->right_),
|
57
41
|
operand_(ptr->operand_)
|
58
42
|
{ }
|
59
43
|
|
60
|
-
bool
|
44
|
+
bool SupportsOperation::needs_parens(SupportsConditionObj cond) const
|
61
45
|
{
|
62
|
-
if (
|
46
|
+
if (SupportsOperationObj op = Cast<SupportsOperation>(cond)) {
|
63
47
|
return op->operand() != operand();
|
64
48
|
}
|
65
|
-
return Cast<
|
49
|
+
return Cast<SupportsNegation>(cond) != NULL;
|
66
50
|
}
|
67
51
|
|
68
52
|
/////////////////////////////////////////////////////////////////////////
|
69
53
|
/////////////////////////////////////////////////////////////////////////
|
70
54
|
|
71
|
-
|
72
|
-
:
|
55
|
+
SupportsNegation::SupportsNegation(SourceSpan pstate, SupportsConditionObj c)
|
56
|
+
: SupportsCondition(pstate), condition_(c)
|
73
57
|
{ }
|
74
|
-
|
75
|
-
:
|
58
|
+
SupportsNegation::SupportsNegation(const SupportsNegation* ptr)
|
59
|
+
: SupportsCondition(ptr), condition_(ptr->condition_)
|
76
60
|
{ }
|
77
61
|
|
78
|
-
bool
|
62
|
+
bool SupportsNegation::needs_parens(SupportsConditionObj cond) const
|
79
63
|
{
|
80
|
-
return Cast<
|
81
|
-
Cast<
|
64
|
+
return Cast<SupportsNegation>(cond) ||
|
65
|
+
Cast<SupportsOperation>(cond);
|
82
66
|
}
|
83
67
|
|
84
68
|
/////////////////////////////////////////////////////////////////////////
|
85
69
|
/////////////////////////////////////////////////////////////////////////
|
86
70
|
|
87
|
-
|
88
|
-
:
|
71
|
+
SupportsDeclaration::SupportsDeclaration(SourceSpan pstate, ExpressionObj f, ExpressionObj v)
|
72
|
+
: SupportsCondition(pstate), feature_(f), value_(v)
|
89
73
|
{ }
|
90
|
-
|
91
|
-
:
|
74
|
+
SupportsDeclaration::SupportsDeclaration(const SupportsDeclaration* ptr)
|
75
|
+
: SupportsCondition(ptr),
|
92
76
|
feature_(ptr->feature_),
|
93
77
|
value_(ptr->value_)
|
94
78
|
{ }
|
95
79
|
|
96
|
-
bool
|
80
|
+
bool SupportsDeclaration::needs_parens(SupportsConditionObj cond) const
|
97
81
|
{
|
98
82
|
return false;
|
99
83
|
}
|
@@ -101,15 +85,15 @@ namespace Sass {
|
|
101
85
|
/////////////////////////////////////////////////////////////////////////
|
102
86
|
/////////////////////////////////////////////////////////////////////////
|
103
87
|
|
104
|
-
Supports_Interpolation::Supports_Interpolation(
|
105
|
-
:
|
88
|
+
Supports_Interpolation::Supports_Interpolation(SourceSpan pstate, ExpressionObj v)
|
89
|
+
: SupportsCondition(pstate), value_(v)
|
106
90
|
{ }
|
107
91
|
Supports_Interpolation::Supports_Interpolation(const Supports_Interpolation* ptr)
|
108
|
-
:
|
92
|
+
: SupportsCondition(ptr),
|
109
93
|
value_(ptr->value_)
|
110
94
|
{ }
|
111
95
|
|
112
|
-
bool Supports_Interpolation::needs_parens(
|
96
|
+
bool Supports_Interpolation::needs_parens(SupportsConditionObj cond) const
|
113
97
|
{
|
114
98
|
return false;
|
115
99
|
}
|
@@ -117,11 +101,11 @@ namespace Sass {
|
|
117
101
|
/////////////////////////////////////////////////////////////////////////
|
118
102
|
/////////////////////////////////////////////////////////////////////////
|
119
103
|
|
120
|
-
IMPLEMENT_AST_OPERATORS(
|
121
|
-
IMPLEMENT_AST_OPERATORS(
|
122
|
-
IMPLEMENT_AST_OPERATORS(
|
123
|
-
IMPLEMENT_AST_OPERATORS(
|
124
|
-
IMPLEMENT_AST_OPERATORS(
|
104
|
+
IMPLEMENT_AST_OPERATORS(SupportsRule);
|
105
|
+
IMPLEMENT_AST_OPERATORS(SupportsCondition);
|
106
|
+
IMPLEMENT_AST_OPERATORS(SupportsOperation);
|
107
|
+
IMPLEMENT_AST_OPERATORS(SupportsNegation);
|
108
|
+
IMPLEMENT_AST_OPERATORS(SupportsDeclaration);
|
125
109
|
IMPLEMENT_AST_OPERATORS(Supports_Interpolation);
|
126
110
|
|
127
111
|
/////////////////////////////////////////////////////////////////////////
|
@@ -39,79 +39,79 @@ namespace Sass {
|
|
39
39
|
////////////////////
|
40
40
|
// `@supports` rule.
|
41
41
|
////////////////////
|
42
|
-
class
|
43
|
-
ADD_PROPERTY(
|
42
|
+
class SupportsRule : public ParentStatement {
|
43
|
+
ADD_PROPERTY(SupportsConditionObj, condition)
|
44
44
|
public:
|
45
|
-
|
45
|
+
SupportsRule(SourceSpan pstate, SupportsConditionObj condition, Block_Obj block = {});
|
46
46
|
bool bubbles() override;
|
47
|
-
ATTACH_AST_OPERATIONS(
|
47
|
+
ATTACH_AST_OPERATIONS(SupportsRule)
|
48
48
|
ATTACH_CRTP_PERFORM_METHODS()
|
49
49
|
};
|
50
50
|
|
51
51
|
//////////////////////////////////////////////////////
|
52
52
|
// The abstract superclass of all Supports conditions.
|
53
53
|
//////////////////////////////////////////////////////
|
54
|
-
class
|
54
|
+
class SupportsCondition : public Expression {
|
55
55
|
public:
|
56
|
-
|
57
|
-
virtual bool needs_parens(
|
58
|
-
ATTACH_AST_OPERATIONS(
|
56
|
+
SupportsCondition(SourceSpan pstate);
|
57
|
+
virtual bool needs_parens(SupportsConditionObj cond) const { return false; }
|
58
|
+
ATTACH_AST_OPERATIONS(SupportsCondition)
|
59
59
|
ATTACH_CRTP_PERFORM_METHODS()
|
60
60
|
};
|
61
61
|
|
62
62
|
////////////////////////////////////////////////////////////
|
63
63
|
// An operator condition (e.g. `CONDITION1 and CONDITION2`).
|
64
64
|
////////////////////////////////////////////////////////////
|
65
|
-
class
|
65
|
+
class SupportsOperation : public SupportsCondition {
|
66
66
|
public:
|
67
67
|
enum Operand { AND, OR };
|
68
68
|
private:
|
69
|
-
ADD_PROPERTY(
|
70
|
-
ADD_PROPERTY(
|
69
|
+
ADD_PROPERTY(SupportsConditionObj, left);
|
70
|
+
ADD_PROPERTY(SupportsConditionObj, right);
|
71
71
|
ADD_PROPERTY(Operand, operand);
|
72
72
|
public:
|
73
|
-
|
74
|
-
virtual bool needs_parens(
|
75
|
-
ATTACH_AST_OPERATIONS(
|
73
|
+
SupportsOperation(SourceSpan pstate, SupportsConditionObj l, SupportsConditionObj r, Operand o);
|
74
|
+
virtual bool needs_parens(SupportsConditionObj cond) const override;
|
75
|
+
ATTACH_AST_OPERATIONS(SupportsOperation)
|
76
76
|
ATTACH_CRTP_PERFORM_METHODS()
|
77
77
|
};
|
78
78
|
|
79
79
|
//////////////////////////////////////////
|
80
80
|
// A negation condition (`not CONDITION`).
|
81
81
|
//////////////////////////////////////////
|
82
|
-
class
|
82
|
+
class SupportsNegation : public SupportsCondition {
|
83
83
|
private:
|
84
|
-
ADD_PROPERTY(
|
84
|
+
ADD_PROPERTY(SupportsConditionObj, condition);
|
85
85
|
public:
|
86
|
-
|
87
|
-
virtual bool needs_parens(
|
88
|
-
ATTACH_AST_OPERATIONS(
|
86
|
+
SupportsNegation(SourceSpan pstate, SupportsConditionObj c);
|
87
|
+
virtual bool needs_parens(SupportsConditionObj cond) const override;
|
88
|
+
ATTACH_AST_OPERATIONS(SupportsNegation)
|
89
89
|
ATTACH_CRTP_PERFORM_METHODS()
|
90
90
|
};
|
91
91
|
|
92
92
|
/////////////////////////////////////////////////////
|
93
93
|
// A declaration condition (e.g. `(feature: value)`).
|
94
94
|
/////////////////////////////////////////////////////
|
95
|
-
class
|
95
|
+
class SupportsDeclaration : public SupportsCondition {
|
96
96
|
private:
|
97
|
-
ADD_PROPERTY(
|
98
|
-
ADD_PROPERTY(
|
97
|
+
ADD_PROPERTY(ExpressionObj, feature);
|
98
|
+
ADD_PROPERTY(ExpressionObj, value);
|
99
99
|
public:
|
100
|
-
|
101
|
-
virtual bool needs_parens(
|
102
|
-
ATTACH_AST_OPERATIONS(
|
100
|
+
SupportsDeclaration(SourceSpan pstate, ExpressionObj f, ExpressionObj v);
|
101
|
+
virtual bool needs_parens(SupportsConditionObj cond) const override;
|
102
|
+
ATTACH_AST_OPERATIONS(SupportsDeclaration)
|
103
103
|
ATTACH_CRTP_PERFORM_METHODS()
|
104
104
|
};
|
105
105
|
|
106
106
|
///////////////////////////////////////////////
|
107
107
|
// An interpolation condition (e.g. `#{$var}`).
|
108
108
|
///////////////////////////////////////////////
|
109
|
-
class Supports_Interpolation : public
|
109
|
+
class Supports_Interpolation : public SupportsCondition {
|
110
110
|
private:
|
111
|
-
ADD_PROPERTY(
|
111
|
+
ADD_PROPERTY(ExpressionObj, value);
|
112
112
|
public:
|
113
|
-
Supports_Interpolation(
|
114
|
-
virtual bool needs_parens(
|
113
|
+
Supports_Interpolation(SourceSpan pstate, ExpressionObj v);
|
114
|
+
virtual bool needs_parens(SupportsConditionObj cond) const override;
|
115
115
|
ATTACH_AST_OPERATIONS(Supports_Interpolation)
|
116
116
|
ATTACH_CRTP_PERFORM_METHODS()
|
117
117
|
};
|