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
@@ -10,12 +10,13 @@ namespace Sass {
|
|
10
10
|
|
11
11
|
Definition* make_native_function(Signature sig, Native_Function func, Context& ctx)
|
12
12
|
{
|
13
|
-
|
13
|
+
SourceFile* source = SASS_MEMORY_NEW(SourceFile, "[built-in function]", sig, std::string::npos);
|
14
|
+
Parser sig_parser(source, ctx, ctx.traces);
|
14
15
|
sig_parser.lex<Prelexer::identifier>();
|
15
|
-
|
16
|
+
sass::string name(Util::normalize_underscores(sig_parser.lexed));
|
16
17
|
Parameters_Obj params = sig_parser.parse_parameters();
|
17
18
|
return SASS_MEMORY_NEW(Definition,
|
18
|
-
|
19
|
+
SourceSpan(source),
|
19
20
|
sig,
|
20
21
|
name,
|
21
22
|
params,
|
@@ -26,19 +27,19 @@ namespace Sass {
|
|
26
27
|
Definition* make_c_function(Sass_Function_Entry c_func, Context& ctx)
|
27
28
|
{
|
28
29
|
using namespace Prelexer;
|
29
|
-
|
30
30
|
const char* sig = sass_function_get_signature(c_func);
|
31
|
-
|
31
|
+
SourceFile* source = SASS_MEMORY_NEW(SourceFile, "[c function]", sig, std::string::npos);
|
32
|
+
Parser sig_parser(source, ctx, ctx.traces);
|
32
33
|
// allow to overload generic callback plus @warn, @error and @debug with custom functions
|
33
34
|
sig_parser.lex < alternatives < identifier, exactly <'*'>,
|
34
35
|
exactly < Constants::warn_kwd >,
|
35
36
|
exactly < Constants::error_kwd >,
|
36
37
|
exactly < Constants::debug_kwd >
|
37
38
|
> >();
|
38
|
-
|
39
|
+
sass::string name(Util::normalize_underscores(sig_parser.lexed));
|
39
40
|
Parameters_Obj params = sig_parser.parse_parameters();
|
40
41
|
return SASS_MEMORY_NEW(Definition,
|
41
|
-
|
42
|
+
SourceSpan(source),
|
42
43
|
sig,
|
43
44
|
name,
|
44
45
|
params,
|
@@ -47,13 +48,13 @@ namespace Sass {
|
|
47
48
|
|
48
49
|
namespace Functions {
|
49
50
|
|
50
|
-
|
51
|
+
sass::string function_name(Signature sig)
|
51
52
|
{
|
52
|
-
|
53
|
+
sass::string str(sig);
|
53
54
|
return str.substr(0, str.find('('));
|
54
55
|
}
|
55
56
|
|
56
|
-
Map* get_arg_m(const
|
57
|
+
Map* get_arg_m(const sass::string& argname, Env& env, Signature sig, SourceSpan pstate, Backtraces traces)
|
57
58
|
{
|
58
59
|
AST_Node* value = env[argname];
|
59
60
|
if (Map* map = Cast<Map>(value)) return map;
|
@@ -64,14 +65,14 @@ namespace Sass {
|
|
64
65
|
return get_arg<Map>(argname, env, sig, pstate, traces);
|
65
66
|
}
|
66
67
|
|
67
|
-
double get_arg_r(const
|
68
|
+
double get_arg_r(const sass::string& argname, Env& env, Signature sig, SourceSpan pstate, Backtraces traces, double lo, double hi)
|
68
69
|
{
|
69
70
|
Number* val = get_arg<Number>(argname, env, sig, pstate, traces);
|
70
71
|
Number tmpnr(val);
|
71
72
|
tmpnr.reduce();
|
72
73
|
double v = tmpnr.value();
|
73
74
|
if (!(lo <= v && v <= hi)) {
|
74
|
-
|
75
|
+
sass::ostream msg;
|
75
76
|
msg << "argument `" << argname << "` of `" << sig << "` must be between ";
|
76
77
|
msg << lo << " and " << hi;
|
77
78
|
error(msg.str(), pstate, traces);
|
@@ -79,7 +80,7 @@ namespace Sass {
|
|
79
80
|
return v;
|
80
81
|
}
|
81
82
|
|
82
|
-
Number* get_arg_n(const
|
83
|
+
Number* get_arg_n(const sass::string& argname, Env& env, Signature sig, SourceSpan pstate, Backtraces traces)
|
83
84
|
{
|
84
85
|
Number* val = get_arg<Number>(argname, env, sig, pstate, traces);
|
85
86
|
val = SASS_MEMORY_COPY(val);
|
@@ -87,7 +88,7 @@ namespace Sass {
|
|
87
88
|
return val;
|
88
89
|
}
|
89
90
|
|
90
|
-
double get_arg_val(const
|
91
|
+
double get_arg_val(const sass::string& argname, Env& env, Signature sig, SourceSpan pstate, Backtraces traces)
|
91
92
|
{
|
92
93
|
Number* val = get_arg<Number>(argname, env, sig, pstate, traces);
|
93
94
|
Number tmpnr(val);
|
@@ -95,7 +96,7 @@ namespace Sass {
|
|
95
96
|
return tmpnr.value();
|
96
97
|
}
|
97
98
|
|
98
|
-
double color_num(const
|
99
|
+
double color_num(const sass::string& argname, Env& env, Signature sig, SourceSpan pstate, Backtraces traces)
|
99
100
|
{
|
100
101
|
Number* val = get_arg<Number>(argname, env, sig, pstate, traces);
|
101
102
|
Number tmpnr(val);
|
@@ -107,7 +108,7 @@ namespace Sass {
|
|
107
108
|
}
|
108
109
|
}
|
109
110
|
|
110
|
-
double alpha_num(const
|
111
|
+
double alpha_num(const sass::string& argname, Env& env, Signature sig, SourceSpan pstate, Backtraces traces) {
|
111
112
|
Number* val = get_arg<Number>(argname, env, sig, pstate, traces);
|
112
113
|
Number tmpnr(val);
|
113
114
|
tmpnr.reduce();
|
@@ -118,10 +119,10 @@ namespace Sass {
|
|
118
119
|
}
|
119
120
|
}
|
120
121
|
|
121
|
-
|
122
|
-
|
122
|
+
SelectorListObj get_arg_sels(const sass::string& argname, Env& env, Signature sig, SourceSpan pstate, Backtraces traces, Context& ctx) {
|
123
|
+
ExpressionObj exp = ARG(argname, Expression);
|
123
124
|
if (exp->concrete_type() == Expression::NULL_VAL) {
|
124
|
-
|
125
|
+
sass::ostream msg;
|
125
126
|
msg << argname << ": null is not a valid selector: it must be a string,\n";
|
126
127
|
msg << "a list of strings, or a list of lists of strings for `" << function_name(sig) << "'";
|
127
128
|
error(msg.str(), exp->pstate(), traces);
|
@@ -129,28 +130,29 @@ namespace Sass {
|
|
129
130
|
if (String_Constant* str = Cast<String_Constant>(exp)) {
|
130
131
|
str->quote_mark(0);
|
131
132
|
}
|
132
|
-
|
133
|
-
|
133
|
+
sass::string exp_src = exp->to_string(ctx.c_options);
|
134
|
+
ItplFile* source = SASS_MEMORY_NEW(ItplFile, exp_src.c_str(), exp->pstate());
|
135
|
+
return Parser::parse_selector(source, ctx, traces, false);
|
134
136
|
}
|
135
137
|
|
136
|
-
|
137
|
-
|
138
|
+
CompoundSelectorObj get_arg_sel(const sass::string& argname, Env& env, Signature sig, SourceSpan pstate, Backtraces traces, Context& ctx) {
|
139
|
+
ExpressionObj exp = ARG(argname, Expression);
|
138
140
|
if (exp->concrete_type() == Expression::NULL_VAL) {
|
139
|
-
|
141
|
+
sass::ostream msg;
|
140
142
|
msg << argname << ": null is not a string for `" << function_name(sig) << "'";
|
141
143
|
error(msg.str(), exp->pstate(), traces);
|
142
144
|
}
|
143
145
|
if (String_Constant* str = Cast<String_Constant>(exp)) {
|
144
146
|
str->quote_mark(0);
|
145
147
|
}
|
146
|
-
|
147
|
-
|
148
|
+
sass::string exp_src = exp->to_string(ctx.c_options);
|
149
|
+
ItplFile* source = SASS_MEMORY_NEW(ItplFile, exp_src.c_str(), exp->pstate());
|
150
|
+
SelectorListObj sel_list = Parser::parse_selector(source, ctx, traces, false);
|
148
151
|
if (sel_list->length() == 0) return {};
|
149
|
-
|
150
|
-
if (!first->tail()) return first->head();
|
151
|
-
return first->tail()->head();
|
152
|
+
return sel_list->first()->first();
|
152
153
|
}
|
153
154
|
|
155
|
+
|
154
156
|
}
|
155
157
|
|
156
158
|
}
|
@@ -1,5 +1,10 @@
|
|
1
1
|
#ifndef SASS_FN_UTILS_H
|
2
2
|
#define SASS_FN_UTILS_H
|
3
|
+
|
4
|
+
// sass.hpp must go before all system headers to get the
|
5
|
+
// __EXTENSIONS__ fix on Solaris.
|
6
|
+
#include "sass.hpp"
|
7
|
+
|
3
8
|
#include "units.hpp"
|
4
9
|
#include "backtrace.hpp"
|
5
10
|
#include "environment.hpp"
|
@@ -13,9 +18,10 @@ namespace Sass {
|
|
13
18
|
Env& d_env, \
|
14
19
|
Context& ctx, \
|
15
20
|
Signature sig, \
|
16
|
-
|
21
|
+
SourceSpan pstate, \
|
17
22
|
Backtraces& traces, \
|
18
|
-
SelectorStack
|
23
|
+
SelectorStack selector_stack, \
|
24
|
+
SelectorStack original_stack \
|
19
25
|
|
20
26
|
typedef const char* Signature;
|
21
27
|
typedef PreValue* (*Native_Function)(FN_PROTOTYPE);
|
@@ -31,7 +37,7 @@ namespace Sass {
|
|
31
37
|
namespace Functions {
|
32
38
|
|
33
39
|
template <typename T>
|
34
|
-
T* get_arg(const
|
40
|
+
T* get_arg(const sass::string& argname, Env& env, Signature sig, SourceSpan pstate, Backtraces traces)
|
35
41
|
{
|
36
42
|
T* val = Cast<T>(env[argname]);
|
37
43
|
if (!val) {
|
@@ -40,14 +46,14 @@ namespace Sass {
|
|
40
46
|
return val;
|
41
47
|
}
|
42
48
|
|
43
|
-
Map* get_arg_m(const
|
44
|
-
Number* get_arg_n(const
|
45
|
-
double alpha_num(const
|
46
|
-
double color_num(const
|
47
|
-
double get_arg_r(const
|
48
|
-
double get_arg_val(const
|
49
|
-
|
50
|
-
|
49
|
+
Map* get_arg_m(const sass::string& argname, Env& env, Signature sig, SourceSpan pstate, Backtraces traces); // maps only
|
50
|
+
Number* get_arg_n(const sass::string& argname, Env& env, Signature sig, SourceSpan pstate, Backtraces traces); // numbers only
|
51
|
+
double alpha_num(const sass::string& argname, Env& env, Signature sig, SourceSpan pstate, Backtraces traces); // colors only
|
52
|
+
double color_num(const sass::string& argname, Env& env, Signature sig, SourceSpan pstate, Backtraces traces); // colors only
|
53
|
+
double get_arg_r(const sass::string& argname, Env& env, Signature sig, SourceSpan pstate, Backtraces traces, double lo, double hi); // colors only
|
54
|
+
double get_arg_val(const sass::string& argname, Env& env, Signature sig, SourceSpan pstate, Backtraces traces); // shared
|
55
|
+
SelectorListObj get_arg_sels(const sass::string& argname, Env& env, Signature sig, SourceSpan pstate, Backtraces traces, Context& ctx); // selectors only
|
56
|
+
CompoundSelectorObj get_arg_sel(const sass::string& argname, Env& env, Signature sig, SourceSpan pstate, Backtraces traces, Context& ctx); // selectors only
|
51
57
|
|
52
58
|
}
|
53
59
|
|