sassc 1.10.1 → 1.11.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/README.md +5 -2
- data/ext/libsass/.github/CONTRIBUTING.md +65 -0
- data/ext/libsass/.github/ISSUE_TEMPLATE.md +29 -0
- data/ext/libsass/Makefile +8 -3
- data/ext/libsass/Makefile.conf +28 -22
- data/ext/libsass/Readme.md +14 -7
- data/ext/libsass/configure.ac +5 -8
- data/ext/libsass/docs/api-context-internal.md +3 -0
- data/ext/libsass/docs/api-context.md +7 -0
- data/ext/libsass/docs/api-doc.md +4 -0
- data/ext/libsass/docs/api-importer.md +2 -0
- data/ext/libsass/docs/api-value-example.md +55 -0
- data/ext/libsass/docs/api-value.md +49 -22
- data/ext/libsass/docs/implementations.md +4 -0
- data/ext/libsass/include/sass/base.h +5 -4
- data/ext/libsass/include/sass/context.h +3 -0
- data/ext/libsass/include/sass/values.h +28 -27
- data/ext/libsass/include/sass/version.h +1 -1
- data/ext/libsass/include/sass2scss.h +1 -1
- data/ext/libsass/script/ci-build-libsass +3 -3
- data/ext/libsass/script/ci-install-deps +12 -3
- data/ext/libsass/src/ast.cpp +321 -212
- data/ext/libsass/src/ast.hpp +273 -165
- data/ext/libsass/src/ast_factory.hpp +4 -5
- data/ext/libsass/src/ast_fwd_decl.hpp +8 -7
- data/ext/libsass/src/bind.cpp +2 -7
- data/ext/libsass/src/bind.hpp +0 -1
- data/ext/libsass/src/check_nesting.cpp +379 -0
- data/ext/libsass/src/check_nesting.hpp +60 -0
- data/ext/libsass/src/constants.cpp +7 -6
- data/ext/libsass/src/constants.hpp +2 -1
- data/ext/libsass/src/context.cpp +7 -1
- data/ext/libsass/src/context.hpp +1 -1
- data/ext/libsass/src/cssize.cpp +76 -32
- data/ext/libsass/src/cssize.hpp +7 -8
- data/ext/libsass/src/debugger.hpp +70 -40
- data/ext/libsass/src/error_handling.cpp +15 -2
- data/ext/libsass/src/error_handling.hpp +19 -0
- data/ext/libsass/src/eval.cpp +107 -161
- data/ext/libsass/src/eval.hpp +12 -8
- data/ext/libsass/src/expand.cpp +81 -74
- data/ext/libsass/src/expand.hpp +13 -12
- data/ext/libsass/src/extend.cpp +149 -142
- data/ext/libsass/src/extend.hpp +10 -3
- data/ext/libsass/src/file.cpp +2 -1
- data/ext/libsass/src/functions.cpp +96 -59
- data/ext/libsass/src/functions.hpp +2 -2
- data/ext/libsass/src/inspect.cpp +33 -45
- data/ext/libsass/src/inspect.hpp +7 -7
- data/ext/libsass/src/json.cpp +17 -5
- data/ext/libsass/src/lexer.cpp +3 -3
- data/ext/libsass/src/listize.cpp +10 -10
- data/ext/libsass/src/listize.hpp +3 -3
- data/ext/libsass/src/node.cpp +30 -30
- data/ext/libsass/src/node.hpp +13 -13
- data/ext/libsass/src/operation.hpp +21 -19
- data/ext/libsass/src/output.cpp +48 -103
- data/ext/libsass/src/output.hpp +0 -1
- data/ext/libsass/src/parser.cpp +161 -133
- data/ext/libsass/src/parser.hpp +10 -7
- data/ext/libsass/src/remove_placeholders.cpp +6 -6
- data/ext/libsass/src/remove_placeholders.hpp +1 -1
- data/ext/libsass/src/sass.cpp +21 -0
- data/ext/libsass/src/sass.hpp +8 -1
- data/ext/libsass/src/sass2scss.cpp +14 -3
- data/ext/libsass/src/sass_context.cpp +69 -24
- data/ext/libsass/src/sass_context.hpp +3 -0
- data/ext/libsass/src/source_map.cpp +22 -10
- data/ext/libsass/src/to_value.cpp +2 -2
- data/ext/libsass/src/to_value.hpp +1 -1
- data/ext/libsass/src/units.hpp +3 -1
- data/ext/libsass/src/util.cpp +20 -16
- data/ext/libsass/src/util.hpp +2 -1
- data/ext/libsass/win/libsass.targets +2 -0
- data/ext/libsass/win/libsass.vcxproj.filters +6 -0
- data/lib/sassc/engine.rb +5 -0
- data/lib/sassc/native/native_functions_api.rb +13 -1
- data/lib/sassc/script/value_conversion.rb +11 -1
- data/lib/sassc/script/value_conversion/list.rb +23 -0
- data/lib/sassc/version.rb +1 -1
- data/test/engine_test.rb +18 -2
- data/test/functions_test.rb +30 -0
- data/test/native_test.rb +1 -1
- metadata +8 -3
data/ext/libsass/src/units.hpp
CHANGED
@@ -77,7 +77,9 @@ namespace Sass {
|
|
77
77
|
ss << "Incompatible units: ";
|
78
78
|
ss << "'" << unit_to_string(a) << "' and ";
|
79
79
|
ss << "'" << unit_to_string(b) << "'";
|
80
|
-
|
80
|
+
// hold on to string on stack!
|
81
|
+
std::string str(ss.str());
|
82
|
+
msg = str.c_str();
|
81
83
|
}
|
82
84
|
virtual const char* what() const throw()
|
83
85
|
{
|
data/ext/libsass/src/util.cpp
CHANGED
@@ -145,13 +145,20 @@ namespace Sass {
|
|
145
145
|
return out;
|
146
146
|
}
|
147
147
|
|
148
|
-
// bell
|
148
|
+
// bell characters are replaced with spaces
|
149
|
+
void newline_to_space(std::string& str)
|
150
|
+
{
|
151
|
+
std::replace(str.begin(), str.end(), '\n', ' ');
|
152
|
+
}
|
153
|
+
|
154
|
+
// bell characters are replaced with spaces
|
155
|
+
// also eats spaces after line-feeds (ltrim)
|
149
156
|
std::string string_to_output(const std::string& str)
|
150
157
|
{
|
151
158
|
std::string out("");
|
152
159
|
bool lf = false;
|
153
160
|
for (auto i : str) {
|
154
|
-
if (i ==
|
161
|
+
if (i == '\n') {
|
155
162
|
out += ' ';
|
156
163
|
lf = true;
|
157
164
|
} else if (!(lf && isspace(i))) {
|
@@ -214,7 +221,7 @@ namespace Sass {
|
|
214
221
|
return quote_mark;
|
215
222
|
}
|
216
223
|
|
217
|
-
std::string unquote(const std::string& s, char* qd, bool keep_utf8_sequences)
|
224
|
+
std::string unquote(const std::string& s, char* qd, bool keep_utf8_sequences, bool strict)
|
218
225
|
{
|
219
226
|
|
220
227
|
// not enough room for quotes
|
@@ -267,7 +274,7 @@ namespace Sass {
|
|
267
274
|
// assert invalid code points
|
268
275
|
if (cp == 0) cp = 0xFFFD;
|
269
276
|
// replace bell character
|
270
|
-
// if (cp ==
|
277
|
+
// if (cp == '\n') cp = 32;
|
271
278
|
|
272
279
|
// use a very simple approach to convert via utf8 lib
|
273
280
|
// maybe there is a more elegant way; maybe we shoud
|
@@ -292,6 +299,9 @@ namespace Sass {
|
|
292
299
|
// error("Unescaped delimiter in string to unquote found. [" + s + "]", ParserState("[UNQUOTE]"));
|
293
300
|
// }
|
294
301
|
else {
|
302
|
+
if (strict && !skipped) {
|
303
|
+
if (s[i] == q) return s;
|
304
|
+
}
|
295
305
|
skipped = false;
|
296
306
|
unq.push_back(s[i]);
|
297
307
|
}
|
@@ -330,7 +340,7 @@ namespace Sass {
|
|
330
340
|
int cp = utf8::next(it, end);
|
331
341
|
|
332
342
|
// in case of \r, check if the next in sequence
|
333
|
-
// is \n and then advance the iterator
|
343
|
+
// is \n and then advance the iterator and skip \r
|
334
344
|
if (cp == '\r' && it < end && utf8::peek_next(it, end) == '\n') {
|
335
345
|
cp = utf8::next(it, end);
|
336
346
|
}
|
@@ -451,7 +461,7 @@ namespace Sass {
|
|
451
461
|
|
452
462
|
Block* b = r->block();
|
453
463
|
|
454
|
-
bool hasSelectors = static_cast<
|
464
|
+
bool hasSelectors = static_cast<CommaSequence_Selector*>(r->selector())->length() > 0;
|
455
465
|
|
456
466
|
if (!hasSelectors) {
|
457
467
|
return false;
|
@@ -463,6 +473,8 @@ namespace Sass {
|
|
463
473
|
Statement* stm = (*b)[i];
|
464
474
|
if (dynamic_cast<Directive*>(stm)) {
|
465
475
|
return true;
|
476
|
+
} else if (Declaration* d = dynamic_cast<Declaration*>(stm)) {
|
477
|
+
return isPrintable(d, style);
|
466
478
|
} else if (dynamic_cast<Has_Block*>(stm)) {
|
467
479
|
Block* pChildBlock = ((Has_Block*)stm)->block();
|
468
480
|
if (isPrintable(pChildBlock, style)) {
|
@@ -477,8 +489,6 @@ namespace Sass {
|
|
477
489
|
if (c->is_important()) {
|
478
490
|
hasDeclarations = c->is_important();
|
479
491
|
}
|
480
|
-
} else if (Declaration* d = dynamic_cast<Declaration*>(stm)) {
|
481
|
-
return isPrintable(d, style);
|
482
492
|
} else {
|
483
493
|
hasDeclarations = true;
|
484
494
|
}
|
@@ -516,19 +526,13 @@ namespace Sass {
|
|
516
526
|
|
517
527
|
Block* b = f->block();
|
518
528
|
|
519
|
-
// bool hasSelectors = f->selector() && static_cast<
|
529
|
+
// bool hasSelectors = f->selector() && static_cast<CommaSequence_Selector*>(f->selector())->length() > 0;
|
520
530
|
|
521
531
|
bool hasDeclarations = false;
|
522
532
|
bool hasPrintableChildBlocks = false;
|
523
533
|
for (size_t i = 0, L = b->length(); i < L; ++i) {
|
524
534
|
Statement* stm = (*b)[i];
|
525
|
-
if (
|
526
|
-
// If a statement isn't hoistable, the selectors apply to it. If there are no selectors (a selector list of length 0),
|
527
|
-
// then those statements aren't considered printable. That means there was a placeholder that was removed. If the selector
|
528
|
-
// is NULL, then that means there was never a wrapping selector and it is printable (think of a top level media block with
|
529
|
-
// a declaration in it).
|
530
|
-
}
|
531
|
-
else if (typeid(*stm) == typeid(Declaration) || typeid(*stm) == typeid(Directive)) {
|
535
|
+
if (typeid(*stm) == typeid(Declaration) || typeid(*stm) == typeid(Directive)) {
|
532
536
|
hasDeclarations = true;
|
533
537
|
}
|
534
538
|
else if (dynamic_cast<Has_Block*>(stm)) {
|
data/ext/libsass/src/util.hpp
CHANGED
@@ -26,9 +26,10 @@ namespace Sass {
|
|
26
26
|
std::string evacuate_escapes(const std::string& str);
|
27
27
|
std::string string_to_output(const std::string& str);
|
28
28
|
std::string comment_to_string(const std::string& text);
|
29
|
+
void newline_to_space(std::string& str);
|
29
30
|
|
30
31
|
std::string quote(const std::string&, char q = 0);
|
31
|
-
std::string unquote(const std::string&, char* q = 0, bool keep_utf8_sequences = false);
|
32
|
+
std::string unquote(const std::string&, char* q = 0, bool keep_utf8_sequences = false, bool strict = true);
|
32
33
|
char detect_best_quotemark(const char* s, char qm = '"');
|
33
34
|
|
34
35
|
bool is_hex_doublet(double n);
|
@@ -18,6 +18,7 @@
|
|
18
18
|
<ClInclude Include="$(LIBSASS_HEADERS_DIR)\base64vlq.hpp" />
|
19
19
|
<ClInclude Include="$(LIBSASS_HEADERS_DIR)\bind.hpp" />
|
20
20
|
<ClInclude Include="$(LIBSASS_HEADERS_DIR)\b64\cencode.h" />
|
21
|
+
<ClInclude Include="$(LIBSASS_HEADERS_DIR)\check_nesting.hpp" />
|
21
22
|
<ClInclude Include="$(LIBSASS_HEADERS_DIR)\color_maps.hpp" />
|
22
23
|
<ClInclude Include="$(LIBSASS_HEADERS_DIR)\constants.hpp" />
|
23
24
|
<ClInclude Include="$(LIBSASS_HEADERS_DIR)\context.hpp" />
|
@@ -71,6 +72,7 @@
|
|
71
72
|
<ClCompile Include="$(LIBSASS_SRC_DIR)\bind.cpp" />
|
72
73
|
<ClCompile Condition="$(VisualStudioVersion) < 14.0" Include="$(LIBSASS_SRC_DIR)\c99func.c" />
|
73
74
|
<ClCompile Include="$(LIBSASS_SRC_DIR)\cencode.c" />
|
75
|
+
<ClCompile Include="$(LIBSASS_SRC_DIR)\check_nesting.cpp" />
|
74
76
|
<ClCompile Include="$(LIBSASS_SRC_DIR)\color_maps.cpp" />
|
75
77
|
<ClCompile Include="$(LIBSASS_SRC_DIR)\constants.cpp" />
|
76
78
|
<ClCompile Include="$(LIBSASS_SRC_DIR)\context.cpp" />
|
@@ -66,6 +66,9 @@
|
|
66
66
|
<ClInclude Include="$(LIBSASS_HEADERS_DIR)\bind.hpp">
|
67
67
|
<Filter>Headers</Filter>
|
68
68
|
</ClInclude>
|
69
|
+
<ClInclude Include="$(LIBSASS_HEADERS_DIR)\check_nesting.hpp">
|
70
|
+
<Filter>Headers</Filter>
|
71
|
+
</ClInclude>
|
69
72
|
<ClInclude Include="$(LIBSASS_HEADERS_DIR)\color_maps.hpp">
|
70
73
|
<Filter>Headers</Filter>
|
71
74
|
</ClInclude>
|
@@ -224,6 +227,9 @@
|
|
224
227
|
<ClCompile Include="$(LIBSASS_SRC_DIR)\cencode.c">
|
225
228
|
<Filter>Sources</Filter>
|
226
229
|
</ClCompile>
|
230
|
+
<ClCompile Include="$(LIBSASS_SRC_DIR)\check_nesting.cpp">
|
231
|
+
<Filter>Sources</Filter>
|
232
|
+
</ClCompile>
|
227
233
|
<ClCompile Include="$(LIBSASS_SRC_DIR)\color_maps.cpp">
|
228
234
|
<Filter>Sources</Filter>
|
229
235
|
</ClCompile>
|
data/lib/sassc/engine.rb
CHANGED
@@ -32,6 +32,7 @@ module SassC
|
|
32
32
|
Native.option_set_source_map_file(native_options, source_map_file) if source_map_file
|
33
33
|
Native.option_set_source_map_embed(native_options, true) if source_map_embed?
|
34
34
|
Native.option_set_source_map_contents(native_options, true) if source_map_contents?
|
35
|
+
Native.option_set_omit_source_map_url(native_options, true) if omit_source_map_url?
|
35
36
|
|
36
37
|
import_handler.setup(native_options)
|
37
38
|
functions_handler.setup(native_options)
|
@@ -98,6 +99,10 @@ module SassC
|
|
98
99
|
@options[:source_map_contents]
|
99
100
|
end
|
100
101
|
|
102
|
+
def omit_source_map_url?
|
103
|
+
@options[:omit_source_map_url]
|
104
|
+
end
|
105
|
+
|
101
106
|
def source_map_file
|
102
107
|
@options[:source_map_file]
|
103
108
|
end
|
@@ -26,7 +26,10 @@ module SassC
|
|
26
26
|
|
27
27
|
# ADDAPI union Sass_Value* ADDCALL sass_make_map (size_t len);
|
28
28
|
attach_function :sass_make_map, [:size_t], :sass_value_ptr
|
29
|
-
|
29
|
+
|
30
|
+
# ADDAPI union Sass_Value* ADDCALL sass_make_list (size_t len, enum Sass_Separator sep)
|
31
|
+
attach_function :sass_make_list, [:size_t, SassSeparator], :sass_value_ptr
|
32
|
+
|
30
33
|
# ADDAPI union Sass_Value* ADDCALL sass_make_boolean (boolean val);
|
31
34
|
attach_function :sass_make_boolean, [:bool], :sass_value_ptr
|
32
35
|
|
@@ -45,6 +48,15 @@ module SassC
|
|
45
48
|
# ADDAPI size_t ADDCALL sass_map_get_length (const union Sass_Value* v);
|
46
49
|
attach_function :sass_map_get_length, [:sass_value_ptr], :size_t
|
47
50
|
|
51
|
+
# ADDAPI union Sass_Value* ADDCALL sass_list_get_value (const union Sass_Value* v, size_t i);
|
52
|
+
attach_function :sass_list_get_value, [:sass_value_ptr, :size_t], :sass_value_ptr
|
53
|
+
|
54
|
+
# ADDAPI void ADDCALL sass_list_set_value (union Sass_Value* v, size_t i, union Sass_Value* value);
|
55
|
+
attach_function :sass_list_set_value, [:sass_value_ptr, :size_t, :sass_value_ptr], :void
|
56
|
+
|
57
|
+
# ADDAPI size_t ADDCALL sass_list_get_length (const union Sass_Value* v);
|
58
|
+
attach_function :sass_list_get_length, [:sass_value_ptr], :size_t
|
59
|
+
|
48
60
|
# ADDAPI union Sass_Value* ADDCALL sass_make_error (const char* msg);
|
49
61
|
attach_function :sass_make_error, [:string], :sass_value_ptr
|
50
62
|
|
@@ -41,6 +41,13 @@ module SassC
|
|
41
41
|
|
42
42
|
argument = Sass::Script::Value::Map.new values
|
43
43
|
argument
|
44
|
+
when :sass_list
|
45
|
+
length = Native::list_get_length(native_value)
|
46
|
+
items = (0...length).map do |index|
|
47
|
+
native_item = Native::list_get_value(native_value, index)
|
48
|
+
from_native(native_item, options)
|
49
|
+
end
|
50
|
+
Sass::Script::Value::List.new(items, :space)
|
44
51
|
else
|
45
52
|
raise UnsupportedValue.new("Sass argument of type #{value_tag} unsupported")
|
46
53
|
end
|
@@ -56,6 +63,8 @@ module SassC
|
|
56
63
|
Number.new(value).to_native
|
57
64
|
when "Map"
|
58
65
|
Map.new(value).to_native
|
66
|
+
when "List"
|
67
|
+
List.new(value).to_native
|
59
68
|
when "Bool"
|
60
69
|
Bool.new(value).to_native
|
61
70
|
else
|
@@ -71,4 +80,5 @@ require_relative "value_conversion/string"
|
|
71
80
|
require_relative "value_conversion/number"
|
72
81
|
require_relative "value_conversion/color"
|
73
82
|
require_relative "value_conversion/map"
|
74
|
-
require_relative "value_conversion/
|
83
|
+
require_relative "value_conversion/list"
|
84
|
+
require_relative "value_conversion/bool"
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module SassC
|
2
|
+
module Script
|
3
|
+
module ValueConversion
|
4
|
+
SEPARATORS = {
|
5
|
+
space: :sass_space,
|
6
|
+
comma: :sass_comma
|
7
|
+
}
|
8
|
+
|
9
|
+
class List < Base
|
10
|
+
def to_native
|
11
|
+
list = @value.to_a
|
12
|
+
sep = SEPARATORS.fetch(@value.separator)
|
13
|
+
native_list = Native::make_list(list.size, sep)
|
14
|
+
list.each_with_index do |item, index|
|
15
|
+
native_item = ValueConversion.to_native(item)
|
16
|
+
Native::list_set_value(native_list, index, native_item)
|
17
|
+
end
|
18
|
+
native_list
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/sassc/version.rb
CHANGED
data/test/engine_test.rb
CHANGED
@@ -154,8 +154,8 @@ SCSS
|
|
154
154
|
\t\t"@import 'admin/text-color';\\n\\np {\\n padding: 20px;\\n}\\n",
|
155
155
|
\t\t"p {\\n color: red;\\n}\\n"
|
156
156
|
\t],
|
157
|
-
\t"
|
158
|
-
\t"
|
157
|
+
\t"names": [],
|
158
|
+
\t"mappings": "ACAA,AAAA,CAAC,CAAC;EACA,KAAK,EAAE,GAAG,GACX;;ADAD,AAAA,CAAC,CAAC;EACA,OAAO,EAAE,IAAI,GACd"
|
159
159
|
}
|
160
160
|
MAP
|
161
161
|
end
|
@@ -166,6 +166,22 @@ MAP
|
|
166
166
|
assert_raises(NotRenderedError) { engine.source_map }
|
167
167
|
end
|
168
168
|
|
169
|
+
def test_omit_source_map_url
|
170
|
+
temp_file('style.scss', <<SCSS)
|
171
|
+
p {
|
172
|
+
padding: 20px;
|
173
|
+
}
|
174
|
+
SCSS
|
175
|
+
engine = Engine.new(File.read('style.scss'), {
|
176
|
+
source_map_file: "style.scss.map",
|
177
|
+
source_map_contents: true,
|
178
|
+
omit_source_map_url: true
|
179
|
+
})
|
180
|
+
output = engine.render
|
181
|
+
|
182
|
+
refute_match /sourceMappingURL/, output
|
183
|
+
end
|
184
|
+
|
169
185
|
def test_load_paths
|
170
186
|
temp_dir("included_1")
|
171
187
|
temp_dir("included_2")
|
data/test/functions_test.rb
CHANGED
@@ -119,6 +119,7 @@ module SassC
|
|
119
119
|
end
|
120
120
|
|
121
121
|
def test_function_with_unsupported_tag
|
122
|
+
skip('What are other unsupported tags?')
|
122
123
|
engine = Engine.new("div {url: function_with_unsupported_tag(());}")
|
123
124
|
|
124
125
|
exception = assert_raises(SassC::SyntaxError) do
|
@@ -166,6 +167,23 @@ module SassC
|
|
166
167
|
CSS
|
167
168
|
end
|
168
169
|
|
170
|
+
def test_function_that_returns_a_sass_list
|
171
|
+
assert_sass <<-SCSS, <<-CSS
|
172
|
+
$my-list: returns-sass-list();
|
173
|
+
div { width: nth( $my-list, 2 ); }
|
174
|
+
SCSS
|
175
|
+
div { width: 20; }
|
176
|
+
CSS
|
177
|
+
end
|
178
|
+
|
179
|
+
def test_function_that_takes_a_sass_list
|
180
|
+
assert_sass <<-SCSS, <<-CSS
|
181
|
+
div { width: nth(inspect-list((10 20 30)), 2); }
|
182
|
+
SCSS
|
183
|
+
div { width: 20; }
|
184
|
+
CSS
|
185
|
+
end
|
186
|
+
|
169
187
|
private
|
170
188
|
|
171
189
|
def assert_sass(sass, expected_css)
|
@@ -250,6 +268,11 @@ module SassC
|
|
250
268
|
return argument
|
251
269
|
end
|
252
270
|
|
271
|
+
def inspect_list(argument)
|
272
|
+
raise StandardError.new "passed value is not a Sass::Script::Value::List" unless argument.is_a? Sass::Script::Value::List
|
273
|
+
return argument
|
274
|
+
end
|
275
|
+
|
253
276
|
def returns_sass_value
|
254
277
|
return Sass::Script::Value::Color.new(red: 0, green: 0, blue: 0)
|
255
278
|
end
|
@@ -263,6 +286,13 @@ module SassC
|
|
263
286
|
return map
|
264
287
|
end
|
265
288
|
|
289
|
+
def returns_sass_list
|
290
|
+
numbers = [10, 20, 30].map do |n|
|
291
|
+
Sass::Script::Value::Number.new(n, '')
|
292
|
+
end
|
293
|
+
Sass::Script::Value::List.new(numbers, :space)
|
294
|
+
end
|
295
|
+
|
266
296
|
module Compass
|
267
297
|
def stylesheet_path(path)
|
268
298
|
Script::String.new("/css/#{path.value}", :identifier)
|
data/test/native_test.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sassc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Boland
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-12-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -140,6 +140,8 @@ files:
|
|
140
140
|
- ext/Rakefile
|
141
141
|
- ext/libsass/.editorconfig
|
142
142
|
- ext/libsass/.gitattributes
|
143
|
+
- ext/libsass/.github/CONTRIBUTING.md
|
144
|
+
- ext/libsass/.github/ISSUE_TEMPLATE.md
|
143
145
|
- ext/libsass/.gitignore
|
144
146
|
- ext/libsass/.travis.yml
|
145
147
|
- ext/libsass/COPYING
|
@@ -223,6 +225,8 @@ files:
|
|
223
225
|
- ext/libsass/src/bind.hpp
|
224
226
|
- ext/libsass/src/c99func.c
|
225
227
|
- ext/libsass/src/cencode.c
|
228
|
+
- ext/libsass/src/check_nesting.cpp
|
229
|
+
- ext/libsass/src/check_nesting.hpp
|
226
230
|
- ext/libsass/src/color_maps.cpp
|
227
231
|
- ext/libsass/src/color_maps.hpp
|
228
232
|
- ext/libsass/src/constants.cpp
|
@@ -345,6 +349,7 @@ files:
|
|
345
349
|
- lib/sassc/script/value_conversion/base.rb
|
346
350
|
- lib/sassc/script/value_conversion/bool.rb
|
347
351
|
- lib/sassc/script/value_conversion/color.rb
|
352
|
+
- lib/sassc/script/value_conversion/list.rb
|
348
353
|
- lib/sassc/script/value_conversion/map.rb
|
349
354
|
- lib/sassc/script/value_conversion/number.rb
|
350
355
|
- lib/sassc/script/value_conversion/string.rb
|
@@ -380,7 +385,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
380
385
|
version: '0'
|
381
386
|
requirements: []
|
382
387
|
rubyforge_project:
|
383
|
-
rubygems_version: 2.
|
388
|
+
rubygems_version: 2.6.8
|
384
389
|
signing_key:
|
385
390
|
specification_version: 4
|
386
391
|
summary: Use libsass with Ruby!
|