sassc 2.2.1 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
};
|