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.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -1
  3. data/ext/libsass/Makefile +10 -6
  4. data/ext/libsass/Readme.md +4 -4
  5. data/ext/libsass/appveyor.yml +16 -1
  6. data/ext/libsass/docs/README.md +1 -1
  7. data/ext/libsass/docs/api-context-example.md +1 -1
  8. data/ext/libsass/docs/api-context.md +1 -1
  9. data/ext/libsass/docs/api-doc.md +1 -1
  10. data/ext/libsass/docs/api-function-example.md +12 -3
  11. data/ext/libsass/docs/api-function-internal.md +4 -4
  12. data/ext/libsass/docs/api-function.md +15 -13
  13. data/ext/libsass/docs/api-importer-internal.md +9 -4
  14. data/ext/libsass/docs/api-value.md +1 -1
  15. data/ext/libsass/docs/build-shared-library.md +3 -3
  16. data/ext/libsass/docs/custom-functions-internal.md +1 -1
  17. data/ext/libsass/docs/{plugins.go → plugins.md} +0 -0
  18. data/ext/libsass/script/ci-build-libsass +25 -36
  19. data/ext/libsass/script/ci-install-deps +3 -8
  20. data/ext/libsass/script/ci-report-coverage +17 -13
  21. data/ext/libsass/src/ast.cpp +102 -7
  22. data/ext/libsass/src/ast.hpp +53 -27
  23. data/ext/libsass/src/ast_def_macros.hpp +8 -0
  24. data/ext/libsass/src/ast_fwd_decl.hpp +3 -2
  25. data/ext/libsass/src/backtrace.hpp +1 -1
  26. data/ext/libsass/src/bind.cpp +28 -17
  27. data/ext/libsass/src/bind.hpp +1 -1
  28. data/ext/libsass/src/context.cpp +441 -184
  29. data/ext/libsass/src/context.hpp +79 -82
  30. data/ext/libsass/src/debugger.hpp +3 -1
  31. data/ext/libsass/src/emitter.cpp +18 -17
  32. data/ext/libsass/src/emitter.hpp +5 -2
  33. data/ext/libsass/src/error_handling.cpp +78 -7
  34. data/ext/libsass/src/error_handling.hpp +50 -9
  35. data/ext/libsass/src/eval.cpp +100 -36
  36. data/ext/libsass/src/eval.hpp +5 -5
  37. data/ext/libsass/src/expand.cpp +32 -3
  38. data/ext/libsass/src/extend.cpp +1 -1
  39. data/ext/libsass/src/file.cpp +39 -27
  40. data/ext/libsass/src/file.hpp +67 -13
  41. data/ext/libsass/src/functions.cpp +39 -32
  42. data/ext/libsass/src/inspect.cpp +21 -21
  43. data/ext/libsass/src/json.cpp +1 -1
  44. data/ext/libsass/src/lexer.hpp +33 -4
  45. data/ext/libsass/src/output.cpp +11 -11
  46. data/ext/libsass/src/parser.cpp +28 -130
  47. data/ext/libsass/src/parser.hpp +0 -4
  48. data/ext/libsass/src/prelexer.cpp +8 -5
  49. data/ext/libsass/src/prelexer.hpp +1 -3
  50. data/ext/libsass/src/sass_context.cpp +52 -241
  51. data/ext/libsass/src/sass_context.hpp +156 -0
  52. data/ext/libsass/src/sass_functions.cpp +1 -26
  53. data/ext/libsass/src/sass_functions.hpp +32 -0
  54. data/ext/libsass/src/sass_interface.cpp +14 -48
  55. data/ext/libsass/src/sass_values.cpp +3 -77
  56. data/ext/libsass/src/sass_values.hpp +81 -0
  57. data/ext/libsass/src/source_map.cpp +7 -7
  58. data/ext/libsass/src/source_map.hpp +1 -4
  59. data/ext/libsass/src/to_string.cpp +4 -3
  60. data/ext/libsass/src/to_string.hpp +2 -1
  61. data/ext/libsass/src/util.cpp +34 -16
  62. data/ext/libsass/src/util.hpp +10 -8
  63. data/lib/sassc/version.rb +1 -1
  64. data/lib/tasks/libsass.rb +1 -1
  65. data/test/custom_importer_test.rb +6 -4
  66. data/test/engine_test.rb +5 -3
  67. data/test/functions_test.rb +1 -0
  68. data/test/native_test.rb +1 -1
  69. metadata +6 -4
  70. data/ext/libsass/script/coveralls-debug +0 -32
@@ -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
- fprintf(stderr, "Out of memory.\n"); \
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 ? "" : str;
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(), nullptr, 16);
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(), nullptr, 16);
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, Output_Style style) {
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 != COMPRESSED) {
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, Output_Style style)
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, Output_Style style)
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, Output_Style style)
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, Output_Style style) {
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, Output_Style style)
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, Output_Style style) {
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 != COMPRESSED) {
723
+ if (style != SASS_STYLE_COMPRESSED) {
706
724
  return true;
707
725
  }
708
726
  // output style compressed
@@ -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, Output_Style style = NESTED);
49
- bool isPrintable(Supports_Block* r, Output_Style style = NESTED);
50
- bool isPrintable(Media_Block* r, Output_Style style = NESTED);
51
- bool isPrintable(Block* b, Output_Style style = NESTED);
52
- bool isPrintable(String_Constant* s, Output_Style style = NESTED);
53
- bool isPrintable(String_Quoted* s, Output_Style style = NESTED);
54
- bool isPrintable(Declaration* d, Output_Style style = NESTED);
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
@@ -1,3 +1,3 @@
1
1
  module SassC
2
- VERSION = "1.8.1"
2
+ VERSION = "1.8.2"
3
3
  end
data/lib/tasks/libsass.rb CHANGED
@@ -17,6 +17,6 @@ namespace :libsass do
17
17
  end
18
18
 
19
19
  file "lib/libsass.so" => "Makefile" do
20
- sh 'make lib/libsass.so LDFLAGS="-Wall -O2"'
20
+ sh 'make lib/libsass.so'
21
21
  end
22
22
  end
@@ -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
- "fonts/sub/sub_fonts.scss",
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(&:filename).sort
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
@@ -1,5 +1,6 @@
1
1
  require_relative "test_helper"
2
2
  require "stringio"
3
+ require "sass/script"
3
4
 
4
5
  module SassC
5
6
  class FunctionsTest < MiniTest::Test
data/test/native_test.rb CHANGED
@@ -9,7 +9,7 @@ module SassC
9
9
 
10
10
  class General < MiniTest::Test
11
11
  def test_it_reports_the_libsass_version
12
- assert_equal "3.3.1", Native.version
12
+ assert_equal "3.3.2", Native.version
13
13
  end
14
14
  end
15
15
 
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.1
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-10-27 00:00:00.000000000 Z
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.go
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
- }