sassc 1.8.1 → 1.8.2
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 +3 -1
- data/ext/libsass/Makefile +10 -6
- data/ext/libsass/Readme.md +4 -4
- data/ext/libsass/appveyor.yml +16 -1
- data/ext/libsass/docs/README.md +1 -1
- data/ext/libsass/docs/api-context-example.md +1 -1
- data/ext/libsass/docs/api-context.md +1 -1
- data/ext/libsass/docs/api-doc.md +1 -1
- data/ext/libsass/docs/api-function-example.md +12 -3
- data/ext/libsass/docs/api-function-internal.md +4 -4
- data/ext/libsass/docs/api-function.md +15 -13
- data/ext/libsass/docs/api-importer-internal.md +9 -4
- data/ext/libsass/docs/api-value.md +1 -1
- data/ext/libsass/docs/build-shared-library.md +3 -3
- data/ext/libsass/docs/custom-functions-internal.md +1 -1
- data/ext/libsass/docs/{plugins.go → plugins.md} +0 -0
- data/ext/libsass/script/ci-build-libsass +25 -36
- data/ext/libsass/script/ci-install-deps +3 -8
- data/ext/libsass/script/ci-report-coverage +17 -13
- data/ext/libsass/src/ast.cpp +102 -7
- data/ext/libsass/src/ast.hpp +53 -27
- data/ext/libsass/src/ast_def_macros.hpp +8 -0
- data/ext/libsass/src/ast_fwd_decl.hpp +3 -2
- data/ext/libsass/src/backtrace.hpp +1 -1
- data/ext/libsass/src/bind.cpp +28 -17
- data/ext/libsass/src/bind.hpp +1 -1
- data/ext/libsass/src/context.cpp +441 -184
- data/ext/libsass/src/context.hpp +79 -82
- data/ext/libsass/src/debugger.hpp +3 -1
- data/ext/libsass/src/emitter.cpp +18 -17
- data/ext/libsass/src/emitter.hpp +5 -2
- data/ext/libsass/src/error_handling.cpp +78 -7
- data/ext/libsass/src/error_handling.hpp +50 -9
- data/ext/libsass/src/eval.cpp +100 -36
- data/ext/libsass/src/eval.hpp +5 -5
- data/ext/libsass/src/expand.cpp +32 -3
- data/ext/libsass/src/extend.cpp +1 -1
- data/ext/libsass/src/file.cpp +39 -27
- data/ext/libsass/src/file.hpp +67 -13
- data/ext/libsass/src/functions.cpp +39 -32
- data/ext/libsass/src/inspect.cpp +21 -21
- data/ext/libsass/src/json.cpp +1 -1
- data/ext/libsass/src/lexer.hpp +33 -4
- data/ext/libsass/src/output.cpp +11 -11
- data/ext/libsass/src/parser.cpp +28 -130
- data/ext/libsass/src/parser.hpp +0 -4
- data/ext/libsass/src/prelexer.cpp +8 -5
- data/ext/libsass/src/prelexer.hpp +1 -3
- data/ext/libsass/src/sass_context.cpp +52 -241
- data/ext/libsass/src/sass_context.hpp +156 -0
- data/ext/libsass/src/sass_functions.cpp +1 -26
- data/ext/libsass/src/sass_functions.hpp +32 -0
- data/ext/libsass/src/sass_interface.cpp +14 -48
- data/ext/libsass/src/sass_values.cpp +3 -77
- data/ext/libsass/src/sass_values.hpp +81 -0
- data/ext/libsass/src/source_map.cpp +7 -7
- data/ext/libsass/src/source_map.hpp +1 -4
- data/ext/libsass/src/to_string.cpp +4 -3
- data/ext/libsass/src/to_string.hpp +2 -1
- data/ext/libsass/src/util.cpp +34 -16
- data/ext/libsass/src/util.hpp +10 -8
- data/lib/sassc/version.rb +1 -1
- data/lib/tasks/libsass.rb +1 -1
- data/test/custom_importer_test.rb +6 -4
- data/test/engine_test.rb +5 -3
- data/test/functions_test.rb +1 -0
- data/test/native_test.rb +1 -1
- metadata +6 -4
- data/ext/libsass/script/coveralls-debug +0 -32
data/ext/libsass/src/util.cpp
CHANGED
@@ -6,15 +6,33 @@
|
|
6
6
|
#include "constants.hpp"
|
7
7
|
#include "utf8/checked.h"
|
8
8
|
|
9
|
+
#include <cmath>
|
9
10
|
#include <stdint.h>
|
10
11
|
|
11
12
|
namespace Sass {
|
12
13
|
|
13
|
-
#define out_of_memory() do {
|
14
|
-
|
15
|
-
exit(EXIT_FAILURE);
|
14
|
+
#define out_of_memory() do { \
|
15
|
+
std::cerr << "Out of memory.\n"; \
|
16
|
+
exit(EXIT_FAILURE); \
|
16
17
|
} while (0)
|
17
18
|
|
19
|
+
double round(double val)
|
20
|
+
{
|
21
|
+
// work around some compiler issue
|
22
|
+
// cygwin has it not defined in std
|
23
|
+
using namespace std;
|
24
|
+
|
25
|
+
// This was later repatched in 3.4.20
|
26
|
+
// which is as yet unreleased.
|
27
|
+
// https://github.com/sass/sass/commit/4e3e1d5684cc29073a507578fc977434ff488c93
|
28
|
+
if (fmod(val, 1) - 0.5 > -0.00001) return std::ceil(val);
|
29
|
+
return ::round(val);
|
30
|
+
|
31
|
+
// Use this version once sass-spec is at 3.4.20
|
32
|
+
// if (fmod(val, 1) - 0.5 > -0.00001) return ::round(val);
|
33
|
+
// return value > 0 ? std::ceil(val) : std::floor(val);
|
34
|
+
}
|
35
|
+
|
18
36
|
/* Sadly, sass_strdup is not portable. */
|
19
37
|
char *sass_strdup(const char *str)
|
20
38
|
{
|
@@ -49,8 +67,8 @@ namespace Sass {
|
|
49
67
|
}
|
50
68
|
|
51
69
|
// helper for safe access to c_ctx
|
52
|
-
const char* safe_str (const char* str) {
|
53
|
-
return str == NULL ?
|
70
|
+
const char* safe_str (const char* str, const char* alt) {
|
71
|
+
return str == NULL ? alt : str;
|
54
72
|
}
|
55
73
|
|
56
74
|
void free_string_array(char ** arr) {
|
@@ -107,7 +125,7 @@ namespace Sass {
|
|
107
125
|
|
108
126
|
// convert the extracted hex string to code point value
|
109
127
|
// ToDo: Maybe we could do this without creating a substring
|
110
|
-
uint32_t cp = strtol(s.substr (i + 1, len - 1).c_str(),
|
128
|
+
uint32_t cp = strtol(s.substr (i + 1, len - 1).c_str(), NULL, 16);
|
111
129
|
|
112
130
|
if (cp == 0) cp = 0xFFFD;
|
113
131
|
|
@@ -401,7 +419,7 @@ namespace Sass {
|
|
401
419
|
|
402
420
|
// convert the extracted hex string to code point value
|
403
421
|
// ToDo: Maybe we could do this without creating a substring
|
404
|
-
uint32_t cp = strtol(s.substr (i + 1, len - 1).c_str(),
|
422
|
+
uint32_t cp = strtol(s.substr (i + 1, len - 1).c_str(), NULL, 16);
|
405
423
|
|
406
424
|
if (s[i + len] == ' ') ++ len;
|
407
425
|
|
@@ -571,7 +589,7 @@ namespace Sass {
|
|
571
589
|
}
|
572
590
|
}
|
573
591
|
|
574
|
-
bool isPrintable(Ruleset* r,
|
592
|
+
bool isPrintable(Ruleset* r, Sass_Output_Style style) {
|
575
593
|
if (r == NULL) {
|
576
594
|
return false;
|
577
595
|
}
|
@@ -597,7 +615,7 @@ namespace Sass {
|
|
597
615
|
}
|
598
616
|
} else if (Comment* c = dynamic_cast<Comment*>(stm)) {
|
599
617
|
// keep for uncompressed
|
600
|
-
if (style !=
|
618
|
+
if (style != SASS_STYLE_COMPRESSED) {
|
601
619
|
hasDeclarations = true;
|
602
620
|
}
|
603
621
|
// output style compressed
|
@@ -618,17 +636,17 @@ namespace Sass {
|
|
618
636
|
return false;
|
619
637
|
}
|
620
638
|
|
621
|
-
bool isPrintable(String_Constant* s,
|
639
|
+
bool isPrintable(String_Constant* s, Sass_Output_Style style)
|
622
640
|
{
|
623
641
|
return ! s->value().empty();
|
624
642
|
}
|
625
643
|
|
626
|
-
bool isPrintable(String_Quoted* s,
|
644
|
+
bool isPrintable(String_Quoted* s, Sass_Output_Style style)
|
627
645
|
{
|
628
646
|
return true;
|
629
647
|
}
|
630
648
|
|
631
|
-
bool isPrintable(Declaration* d,
|
649
|
+
bool isPrintable(Declaration* d, Sass_Output_Style style)
|
632
650
|
{
|
633
651
|
Expression* val = d->value();
|
634
652
|
if (String_Quoted* sq = dynamic_cast<String_Quoted*>(val)) return isPrintable(sq, style);
|
@@ -636,7 +654,7 @@ namespace Sass {
|
|
636
654
|
return true;
|
637
655
|
}
|
638
656
|
|
639
|
-
bool isPrintable(Supports_Block* f,
|
657
|
+
bool isPrintable(Supports_Block* f, Sass_Output_Style style) {
|
640
658
|
if (f == NULL) {
|
641
659
|
return false;
|
642
660
|
}
|
@@ -673,7 +691,7 @@ namespace Sass {
|
|
673
691
|
return false;
|
674
692
|
}
|
675
693
|
|
676
|
-
bool isPrintable(Media_Block* m,
|
694
|
+
bool isPrintable(Media_Block* m, Sass_Output_Style style)
|
677
695
|
{
|
678
696
|
if (m == 0) return false;
|
679
697
|
Block* b = m->block();
|
@@ -689,7 +707,7 @@ namespace Sass {
|
|
689
707
|
return false;
|
690
708
|
}
|
691
709
|
|
692
|
-
bool isPrintable(Block* b,
|
710
|
+
bool isPrintable(Block* b, Sass_Output_Style style) {
|
693
711
|
if (b == NULL) {
|
694
712
|
return false;
|
695
713
|
}
|
@@ -702,7 +720,7 @@ namespace Sass {
|
|
702
720
|
else if (typeid(*stm) == typeid(Comment)) {
|
703
721
|
Comment* c = (Comment*) stm;
|
704
722
|
// keep for uncompressed
|
705
|
-
if (style !=
|
723
|
+
if (style != SASS_STYLE_COMPRESSED) {
|
706
724
|
return true;
|
707
725
|
}
|
708
726
|
// output style compressed
|
data/ext/libsass/src/util.hpp
CHANGED
@@ -4,15 +4,17 @@
|
|
4
4
|
#include <vector>
|
5
5
|
#include <string>
|
6
6
|
#include <assert.h>
|
7
|
+
#include "sass/base.h"
|
7
8
|
#include "ast_fwd_decl.hpp"
|
8
9
|
|
9
10
|
#define SASS_ASSERT(cond, msg) assert(cond && msg)
|
10
11
|
|
11
12
|
namespace Sass {
|
12
13
|
|
14
|
+
double round(double val);
|
13
15
|
char* sass_strdup(const char* str);
|
14
16
|
double sass_atof(const char* str);
|
15
|
-
const char* safe_str(const char *);
|
17
|
+
const char* safe_str(const char *, const char* = "");
|
16
18
|
void free_string_array(char **);
|
17
19
|
char **copy_strings(const std::vector<std::string>&, char ***, int = 0);
|
18
20
|
std::string string_escape(const std::string& str);
|
@@ -45,13 +47,13 @@ namespace Sass {
|
|
45
47
|
std::string vecJoin(const std::vector<std::string>& vec, const std::string& sep);
|
46
48
|
bool containsAnyPrintableStatements(Block* b);
|
47
49
|
|
48
|
-
bool isPrintable(Ruleset* r,
|
49
|
-
bool isPrintable(Supports_Block* r,
|
50
|
-
bool isPrintable(Media_Block* r,
|
51
|
-
bool isPrintable(Block* b,
|
52
|
-
bool isPrintable(String_Constant* s,
|
53
|
-
bool isPrintable(String_Quoted* s,
|
54
|
-
bool isPrintable(Declaration* d,
|
50
|
+
bool isPrintable(Ruleset* r, Sass_Output_Style style = SASS_STYLE_NESTED);
|
51
|
+
bool isPrintable(Supports_Block* r, Sass_Output_Style style = SASS_STYLE_NESTED);
|
52
|
+
bool isPrintable(Media_Block* r, Sass_Output_Style style = SASS_STYLE_NESTED);
|
53
|
+
bool isPrintable(Block* b, Sass_Output_Style style = SASS_STYLE_NESTED);
|
54
|
+
bool isPrintable(String_Constant* s, Sass_Output_Style style = SASS_STYLE_NESTED);
|
55
|
+
bool isPrintable(String_Quoted* s, Sass_Output_Style style = SASS_STYLE_NESTED);
|
56
|
+
bool isPrintable(Declaration* d, Sass_Output_Style style = SASS_STYLE_NESTED);
|
55
57
|
bool isAscii(const char chr);
|
56
58
|
|
57
59
|
}
|
data/lib/sassc/version.rb
CHANGED
data/lib/tasks/libsass.rb
CHANGED
@@ -58,6 +58,8 @@ CSS
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def test_dependency_list
|
61
|
+
base = temp_dir("").to_s
|
62
|
+
|
61
63
|
temp_dir("fonts")
|
62
64
|
temp_dir("fonts/sub")
|
63
65
|
temp_file("fonts/sub/sub_fonts.scss", "$font: arial;")
|
@@ -78,13 +80,13 @@ SCSS
|
|
78
80
|
})
|
79
81
|
engine.render
|
80
82
|
|
81
|
-
dependencies = engine.dependencies.map(&:filename)
|
83
|
+
dependencies = engine.dependencies.map(&:filename).map { |f| f.gsub(base, "") }
|
82
84
|
|
83
85
|
assert_equal [
|
86
|
+
"/fonts/sub/sub_fonts.scss",
|
87
|
+
"/styles2.scss",
|
84
88
|
"fonts/fonts.scss",
|
85
|
-
"
|
86
|
-
"styles1.scss",
|
87
|
-
"styles2.scss"
|
89
|
+
"styles1.scss"
|
88
90
|
], dependencies
|
89
91
|
end
|
90
92
|
|
data/test/engine_test.rb
CHANGED
@@ -93,6 +93,8 @@ CSS
|
|
93
93
|
end
|
94
94
|
|
95
95
|
def test_dependency_filenames_are_reported
|
96
|
+
base = temp_dir("").to_s
|
97
|
+
|
96
98
|
temp_file("not_included.scss", "$size: 30px;")
|
97
99
|
temp_file("import_parent.scss", "$size: 30px;")
|
98
100
|
temp_file("import.scss", "@import 'import_parent'; $size: 30px;")
|
@@ -102,9 +104,9 @@ CSS
|
|
102
104
|
engine.render
|
103
105
|
deps = engine.dependencies
|
104
106
|
|
105
|
-
expected = ["import.scss", "import_parent.scss"]
|
106
|
-
assert_equal expected, deps.map { |dep| dep.options[:filename] }.sort
|
107
|
-
assert_equal expected, deps.map(
|
107
|
+
expected = ["/import.scss", "/import_parent.scss"]
|
108
|
+
assert_equal expected, deps.map { |dep| dep.options[:filename].gsub(base, "") }.sort
|
109
|
+
assert_equal expected, deps.map { |dep| dep.filename.gsub(base, "") }.sort
|
108
110
|
end
|
109
111
|
|
110
112
|
def test_no_dependencies
|
data/test/functions_test.rb
CHANGED
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.8.
|
4
|
+
version: 1.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Boland
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -181,7 +181,7 @@ files:
|
|
181
181
|
- ext/libsass/docs/contributing.md
|
182
182
|
- ext/libsass/docs/custom-functions-internal.md
|
183
183
|
- ext/libsass/docs/implementations.md
|
184
|
-
- ext/libsass/docs/plugins.
|
184
|
+
- ext/libsass/docs/plugins.md
|
185
185
|
- ext/libsass/docs/setup-environment.md
|
186
186
|
- ext/libsass/docs/source-map-internals.md
|
187
187
|
- ext/libsass/docs/trace.md
|
@@ -206,7 +206,6 @@ files:
|
|
206
206
|
- ext/libsass/script/ci-install-compiler
|
207
207
|
- ext/libsass/script/ci-install-deps
|
208
208
|
- ext/libsass/script/ci-report-coverage
|
209
|
-
- ext/libsass/script/coveralls-debug
|
210
209
|
- ext/libsass/script/spec
|
211
210
|
- ext/libsass/script/tap-driver
|
212
211
|
- ext/libsass/script/tap-runner
|
@@ -282,11 +281,14 @@ files:
|
|
282
281
|
- ext/libsass/src/sass.cpp
|
283
282
|
- ext/libsass/src/sass2scss.cpp
|
284
283
|
- ext/libsass/src/sass_context.cpp
|
284
|
+
- ext/libsass/src/sass_context.hpp
|
285
285
|
- ext/libsass/src/sass_functions.cpp
|
286
|
+
- ext/libsass/src/sass_functions.hpp
|
286
287
|
- ext/libsass/src/sass_interface.cpp
|
287
288
|
- ext/libsass/src/sass_util.cpp
|
288
289
|
- ext/libsass/src/sass_util.hpp
|
289
290
|
- ext/libsass/src/sass_values.cpp
|
291
|
+
- ext/libsass/src/sass_values.hpp
|
290
292
|
- ext/libsass/src/source_map.cpp
|
291
293
|
- ext/libsass/src/source_map.hpp
|
292
294
|
- ext/libsass/src/subset_map.hpp
|
@@ -1,32 +0,0 @@
|
|
1
|
-
#!/usr/bin/perl
|
2
|
-
|
3
|
-
use strict;
|
4
|
-
use warnings;
|
5
|
-
use JSON;
|
6
|
-
use File::Slurp;
|
7
|
-
my $json = JSON->new;
|
8
|
-
my $file = read_file('coveralls.json', { binmode => ':utf8' });
|
9
|
-
my $rv = $json->decode($file);
|
10
|
-
my $sources = $rv->{'source_files'};
|
11
|
-
print STDERR join ", ", keys %{$rv}, "\n";
|
12
|
-
foreach my $source (sort {
|
13
|
-
$a->{'name'} cmp $b->{'name'}
|
14
|
-
} @{$sources})
|
15
|
-
{
|
16
|
-
my $sum = 0;
|
17
|
-
my $undefs = 0;
|
18
|
-
my $coverages = $source->{'coverage'};
|
19
|
-
foreach my $coverage (@{$coverages})
|
20
|
-
{
|
21
|
-
if (defined $coverage)
|
22
|
-
{ $sum += $coverage }
|
23
|
-
else { $undefs ++; }
|
24
|
-
}
|
25
|
-
if ($sum > 0)
|
26
|
-
{
|
27
|
-
print STDERR $source->{'name'};
|
28
|
-
print STDERR " [sum: $sum]";
|
29
|
-
print STDERR " [undefs: $undefs]";
|
30
|
-
print STDERR "\n";
|
31
|
-
}
|
32
|
-
}
|