sassc 2.3.0 → 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.
Files changed (116) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/CHANGELOG.md +5 -0
  4. data/ext/libsass/VERSION +1 -1
  5. data/ext/libsass/include/sass/context.h +3 -0
  6. data/ext/libsass/src/MurmurHash2.hpp +91 -0
  7. data/ext/libsass/src/ast.cpp +117 -117
  8. data/ext/libsass/src/ast.hpp +160 -162
  9. data/ext/libsass/src/ast_def_macros.hpp +10 -10
  10. data/ext/libsass/src/ast_fwd_decl.cpp +2 -2
  11. data/ext/libsass/src/ast_fwd_decl.hpp +61 -52
  12. data/ext/libsass/src/ast_helpers.hpp +5 -5
  13. data/ext/libsass/src/ast_sel_cmp.cpp +18 -18
  14. data/ext/libsass/src/ast_sel_super.cpp +52 -52
  15. data/ext/libsass/src/ast_sel_unify.cpp +16 -16
  16. data/ext/libsass/src/ast_sel_weave.cpp +62 -62
  17. data/ext/libsass/src/ast_selectors.cpp +87 -77
  18. data/ext/libsass/src/ast_selectors.hpp +72 -62
  19. data/ext/libsass/src/ast_supports.cpp +35 -35
  20. data/ext/libsass/src/ast_supports.hpp +29 -29
  21. data/ext/libsass/src/ast_values.cpp +58 -58
  22. data/ext/libsass/src/ast_values.hpp +75 -75
  23. data/ext/libsass/src/backtrace.cpp +9 -9
  24. data/ext/libsass/src/backtrace.hpp +5 -5
  25. data/ext/libsass/src/base64vlq.cpp +2 -2
  26. data/ext/libsass/src/base64vlq.hpp +1 -1
  27. data/ext/libsass/src/bind.cpp +17 -17
  28. data/ext/libsass/src/bind.hpp +1 -1
  29. data/ext/libsass/src/c2ast.cpp +3 -3
  30. data/ext/libsass/src/c2ast.hpp +1 -1
  31. data/ext/libsass/src/check_nesting.cpp +36 -36
  32. data/ext/libsass/src/check_nesting.hpp +2 -2
  33. data/ext/libsass/src/color_maps.cpp +5 -5
  34. data/ext/libsass/src/color_maps.hpp +1 -1
  35. data/ext/libsass/src/context.cpp +63 -60
  36. data/ext/libsass/src/context.hpp +33 -33
  37. data/ext/libsass/src/cssize.cpp +30 -29
  38. data/ext/libsass/src/cssize.hpp +13 -13
  39. data/ext/libsass/src/dart_helpers.hpp +5 -5
  40. data/ext/libsass/src/debugger.hpp +127 -128
  41. data/ext/libsass/src/emitter.cpp +12 -12
  42. data/ext/libsass/src/emitter.hpp +10 -10
  43. data/ext/libsass/src/environment.cpp +27 -27
  44. data/ext/libsass/src/environment.hpp +24 -24
  45. data/ext/libsass/src/error_handling.cpp +42 -42
  46. data/ext/libsass/src/error_handling.hpp +38 -50
  47. data/ext/libsass/src/eval.cpp +138 -132
  48. data/ext/libsass/src/eval.hpp +17 -17
  49. data/ext/libsass/src/eval_selectors.cpp +3 -3
  50. data/ext/libsass/src/expand.cpp +70 -64
  51. data/ext/libsass/src/expand.hpp +12 -12
  52. data/ext/libsass/src/extender.cpp +55 -53
  53. data/ext/libsass/src/extender.hpp +14 -14
  54. data/ext/libsass/src/file.cpp +66 -58
  55. data/ext/libsass/src/file.hpp +23 -25
  56. data/ext/libsass/src/fn_colors.cpp +9 -9
  57. data/ext/libsass/src/fn_lists.cpp +18 -18
  58. data/ext/libsass/src/fn_maps.cpp +3 -3
  59. data/ext/libsass/src/fn_miscs.cpp +15 -15
  60. data/ext/libsass/src/fn_numbers.cpp +7 -7
  61. data/ext/libsass/src/fn_selectors.cpp +8 -8
  62. data/ext/libsass/src/fn_strings.cpp +34 -22
  63. data/ext/libsass/src/fn_utils.cpp +29 -26
  64. data/ext/libsass/src/fn_utils.hpp +10 -10
  65. data/ext/libsass/src/inspect.cpp +35 -34
  66. data/ext/libsass/src/inspect.hpp +21 -21
  67. data/ext/libsass/src/lexer.cpp +3 -1
  68. data/ext/libsass/src/listize.cpp +2 -2
  69. data/ext/libsass/src/mapping.hpp +1 -0
  70. data/ext/libsass/src/memory.hpp +12 -0
  71. data/ext/libsass/src/memory/allocator.cpp +48 -0
  72. data/ext/libsass/src/memory/allocator.hpp +138 -0
  73. data/ext/libsass/src/memory/config.hpp +20 -0
  74. data/ext/libsass/src/memory/memory_pool.hpp +186 -0
  75. data/ext/libsass/src/memory/{SharedPtr.cpp → shared_ptr.cpp} +2 -2
  76. data/ext/libsass/src/memory/{SharedPtr.hpp → shared_ptr.hpp} +18 -6
  77. data/ext/libsass/src/operation.hpp +44 -44
  78. data/ext/libsass/src/operators.cpp +18 -18
  79. data/ext/libsass/src/operators.hpp +11 -11
  80. data/ext/libsass/src/ordered_map.hpp +18 -18
  81. data/ext/libsass/src/output.cpp +16 -16
  82. data/ext/libsass/src/output.hpp +5 -5
  83. data/ext/libsass/src/parser.cpp +327 -345
  84. data/ext/libsass/src/parser.hpp +77 -87
  85. data/ext/libsass/src/parser_selectors.cpp +6 -6
  86. data/ext/libsass/src/permutate.hpp +39 -15
  87. data/ext/libsass/src/plugins.cpp +7 -7
  88. data/ext/libsass/src/plugins.hpp +8 -8
  89. data/ext/libsass/src/position.cpp +7 -26
  90. data/ext/libsass/src/position.hpp +44 -21
  91. data/ext/libsass/src/remove_placeholders.cpp +4 -4
  92. data/ext/libsass/src/remove_placeholders.hpp +3 -3
  93. data/ext/libsass/src/sass.cpp +16 -15
  94. data/ext/libsass/src/sass.hpp +9 -5
  95. data/ext/libsass/src/sass_context.cpp +52 -34
  96. data/ext/libsass/src/sass_values.cpp +8 -10
  97. data/ext/libsass/src/settings.hpp +19 -0
  98. data/ext/libsass/src/source.cpp +69 -0
  99. data/ext/libsass/src/source.hpp +95 -0
  100. data/ext/libsass/src/source_data.hpp +32 -0
  101. data/ext/libsass/src/source_map.cpp +22 -18
  102. data/ext/libsass/src/source_map.hpp +12 -9
  103. data/ext/libsass/src/units.cpp +19 -19
  104. data/ext/libsass/src/units.hpp +8 -8
  105. data/ext/libsass/src/utf8_string.cpp +9 -10
  106. data/ext/libsass/src/utf8_string.hpp +7 -6
  107. data/ext/libsass/src/util.cpp +38 -38
  108. data/ext/libsass/src/util.hpp +18 -18
  109. data/ext/libsass/src/util_string.cpp +13 -13
  110. data/ext/libsass/src/util_string.hpp +9 -8
  111. data/ext/libsass/src/values.cpp +12 -12
  112. data/lib/sassc/native.rb +3 -5
  113. data/lib/sassc/version.rb +1 -1
  114. data/test/native_test.rb +4 -4
  115. metadata +14 -5
  116. data/lib/sassc/native/lib_c.rb +0 -21
@@ -14,7 +14,7 @@ namespace Sass {
14
14
  // there is one edge case where this could give false positives
15
15
  // test could contain a (non-ascii) char exactly 32 below literal
16
16
  // ##########################################################################
17
- bool equalsLiteral(const char* lit, const std::string& test) {
17
+ bool equalsLiteral(const char* lit, const sass::string& test) {
18
18
  // Work directly on characters
19
19
  const char* src = test.c_str();
20
20
  // There is a small chance that the search string
@@ -27,19 +27,19 @@ namespace Sass {
27
27
  return *lit == 0;
28
28
  }
29
29
 
30
- void ascii_str_tolower(std::string* s) {
30
+ void ascii_str_tolower(sass::string* s) {
31
31
  for (auto& ch : *s) {
32
32
  ch = ascii_tolower(static_cast<unsigned char>(ch));
33
33
  }
34
34
  }
35
35
 
36
- void ascii_str_toupper(std::string* s) {
36
+ void ascii_str_toupper(sass::string* s) {
37
37
  for (auto& ch : *s) {
38
38
  ch = ascii_toupper(static_cast<unsigned char>(ch));
39
39
  }
40
40
  }
41
41
 
42
- std::string rtrim(std::string str) {
42
+ sass::string rtrim(sass::string str) {
43
43
  auto it = std::find_if_not(str.rbegin(), str.rend(), ascii_isspace);
44
44
  str.erase(str.rend() - it);
45
45
  return str;
@@ -49,7 +49,7 @@ namespace Sass {
49
49
  // Returns [name] without a vendor prefix.
50
50
  // If [name] has no vendor prefix, it's returned as-is.
51
51
  // ###########################################################################
52
- std::string unvendor(const std::string& name)
52
+ sass::string unvendor(const sass::string& name)
53
53
  {
54
54
  if (name.size() < 2) return name;
55
55
  if (name[0] != '-') return name;
@@ -61,13 +61,13 @@ namespace Sass {
61
61
  }
62
62
  // EO unvendor
63
63
 
64
- std::string normalize_newlines(const std::string& str) {
65
- std::string result;
64
+ sass::string normalize_newlines(const sass::string& str) {
65
+ sass::string result;
66
66
  result.reserve(str.size());
67
67
  std::size_t pos = 0;
68
68
  while (true) {
69
69
  const std::size_t newline = str.find_first_of("\n\f\r", pos);
70
- if (newline == std::string::npos) break;
70
+ if (newline == sass::string::npos) break;
71
71
  result.append(str, pos, newline - pos);
72
72
  result += '\n';
73
73
  if (str[newline] == '\r' && str[newline + 1] == '\n') {
@@ -77,18 +77,18 @@ namespace Sass {
77
77
  pos = newline + 1;
78
78
  }
79
79
  }
80
- result.append(str, pos, std::string::npos);
80
+ result.append(str, pos, sass::string::npos);
81
81
  return result;
82
82
  }
83
83
 
84
- std::string normalize_underscores(const std::string& str) {
85
- std::string normalized = str;
84
+ sass::string normalize_underscores(const sass::string& str) {
85
+ sass::string normalized = str;
86
86
  std::replace(normalized.begin(), normalized.end(), '_', '-');
87
87
  return normalized;
88
88
  }
89
89
 
90
- std::string normalize_decimals(const std::string& str) {
91
- std::string normalized;
90
+ sass::string normalize_decimals(const sass::string& str) {
91
+ sass::string normalized;
92
92
  if (!str.empty() && str[0] == '.') {
93
93
  normalized.reserve(str.size() + 1);
94
94
  normalized += '0';
@@ -1,6 +1,7 @@
1
1
  #ifndef SASS_UTIL_STRING_H
2
2
  #define SASS_UTIL_STRING_H
3
3
 
4
+ #include "sass.hpp"
4
5
  #include <string>
5
6
 
6
7
  namespace Sass {
@@ -14,18 +15,18 @@ namespace Sass {
14
15
  // there is one edge case where this could give false positives
15
16
  // test could contain a (non-ascii) char exactly 32 below literal
16
17
  // ##########################################################################
17
- bool equalsLiteral(const char* lit, const std::string& test);
18
+ bool equalsLiteral(const char* lit, const sass::string& test);
18
19
 
19
20
  // ###########################################################################
20
21
  // Returns [name] without a vendor prefix.
21
22
  // If [name] has no vendor prefix, it's returned as-is.
22
23
  // ###########################################################################
23
- std::string unvendor(const std::string& name);
24
+ sass::string unvendor(const sass::string& name);
24
25
 
25
- std::string rtrim(std::string str);
26
- std::string normalize_newlines(const std::string& str);
27
- std::string normalize_underscores(const std::string& str);
28
- std::string normalize_decimals(const std::string& str);
26
+ sass::string rtrim(sass::string str);
27
+ sass::string normalize_newlines(const sass::string& str);
28
+ sass::string normalize_underscores(const sass::string& str);
29
+ sass::string normalize_decimals(const sass::string& str);
29
30
  char opening_bracket_for(char closing_bracket);
30
31
  char closing_bracket_for(char opening_bracket);
31
32
 
@@ -58,14 +59,14 @@ namespace Sass {
58
59
  return c;
59
60
  }
60
61
 
61
- void ascii_str_tolower(std::string* s);
62
+ void ascii_str_tolower(sass::string* s);
62
63
 
63
64
  inline char ascii_toupper(unsigned char c) {
64
65
  if (c >= 'a' && c <= 'z') return c - 32;
65
66
  return c;
66
67
  }
67
68
 
68
- void ascii_str_toupper(std::string* s);
69
+ void ascii_str_toupper(sass::string* s);
69
70
 
70
71
  } // namespace Sass
71
72
  } // namespace Util
@@ -32,7 +32,7 @@ namespace Sass {
32
32
  const List* l = Cast<List>(val);
33
33
  union Sass_Value* list = sass_make_list(l->size(), l->separator(), l->is_bracketed());
34
34
  for (size_t i = 0, L = l->length(); i < L; ++i) {
35
- Expression_Obj obj = l->at(i);
35
+ ExpressionObj obj = l->at(i);
36
36
  auto val = ast_node_to_sass_value(obj);
37
37
  sass_list_set_value(list, i, val);
38
38
  }
@@ -42,7 +42,7 @@ namespace Sass {
42
42
  {
43
43
  const Map* m = Cast<Map>(val);
44
44
  union Sass_Value* map = sass_make_map(m->length());
45
- size_t i = 0; for (Expression_Obj key : m->keys()) {
45
+ size_t i = 0; for (ExpressionObj key : m->keys()) {
46
46
  sass_map_set_key(map, i, ast_node_to_sass_value(key));
47
47
  sass_map_set_value(map, i, ast_node_to_sass_value(m->at(key)));
48
48
  ++ i;
@@ -78,17 +78,17 @@ namespace Sass {
78
78
  switch (sass_value_get_tag(val)) {
79
79
  case SASS_NUMBER:
80
80
  return SASS_MEMORY_NEW(Number,
81
- ParserState("[C-VALUE]"),
81
+ SourceSpan("[C-VALUE]"),
82
82
  sass_number_get_value(val),
83
83
  sass_number_get_unit(val));
84
84
  case SASS_BOOLEAN:
85
85
  return SASS_MEMORY_NEW(Boolean,
86
- ParserState("[C-VALUE]"),
86
+ SourceSpan("[C-VALUE]"),
87
87
  sass_boolean_get_value(val));
88
88
  case SASS_COLOR:
89
89
  // ToDo: allow to also use HSLA colors!!
90
90
  return SASS_MEMORY_NEW(Color_RGBA,
91
- ParserState("[C-VALUE]"),
91
+ SourceSpan("[C-VALUE]"),
92
92
  sass_color_get_r(val),
93
93
  sass_color_get_g(val),
94
94
  sass_color_get_b(val),
@@ -96,15 +96,15 @@ namespace Sass {
96
96
  case SASS_STRING:
97
97
  if (sass_string_is_quoted(val)) {
98
98
  return SASS_MEMORY_NEW(String_Quoted,
99
- ParserState("[C-VALUE]"),
99
+ SourceSpan("[C-VALUE]"),
100
100
  sass_string_get_value(val));
101
101
  }
102
102
  return SASS_MEMORY_NEW(String_Constant,
103
- ParserState("[C-VALUE]"),
103
+ SourceSpan("[C-VALUE]"),
104
104
  sass_string_get_value(val));
105
105
  case SASS_LIST: {
106
106
  List* l = SASS_MEMORY_NEW(List,
107
- ParserState("[C-VALUE]"),
107
+ SourceSpan("[C-VALUE]"),
108
108
  sass_list_get_length(val),
109
109
  sass_list_get_separator(val));
110
110
  for (size_t i = 0, L = sass_list_get_length(val); i < L; ++i) {
@@ -114,7 +114,7 @@ namespace Sass {
114
114
  return l;
115
115
  }
116
116
  case SASS_MAP: {
117
- Map* m = SASS_MEMORY_NEW(Map, ParserState("[C-VALUE]"));
117
+ Map* m = SASS_MEMORY_NEW(Map, SourceSpan("[C-VALUE]"));
118
118
  for (size_t i = 0, L = sass_map_get_length(val); i < L; ++i) {
119
119
  *m << std::make_pair(
120
120
  sass_value_to_ast_node(sass_map_get_key(val, i)),
@@ -123,14 +123,14 @@ namespace Sass {
123
123
  return m;
124
124
  }
125
125
  case SASS_NULL:
126
- return SASS_MEMORY_NEW(Null, ParserState("[C-VALUE]"));
126
+ return SASS_MEMORY_NEW(Null, SourceSpan("[C-VALUE]"));
127
127
  case SASS_ERROR:
128
128
  return SASS_MEMORY_NEW(Custom_Error,
129
- ParserState("[C-VALUE]"),
129
+ SourceSpan("[C-VALUE]"),
130
130
  sass_error_get_message(val));
131
131
  case SASS_WARNING:
132
132
  return SASS_MEMORY_NEW(Custom_Warning,
133
- ParserState("[C-VALUE]"),
133
+ SourceSpan("[C-VALUE]"),
134
134
  sass_warning_get_message(val));
135
135
  default: break;
136
136
  }
@@ -34,7 +34,6 @@ module SassC
34
34
  require_relative "native/sass_input_style"
35
35
  require_relative "native/sass_output_style"
36
36
  require_relative "native/string_list"
37
- require_relative "native/lib_c"
38
37
 
39
38
  # Remove the redundant "sass_" from the beginning of every method name
40
39
  def self.attach_function(*args)
@@ -53,10 +52,9 @@ module SassC
53
52
  end
54
53
 
55
54
  def self.native_string(string)
56
- string = "#{string}\0"
57
- data = Native::LibC.malloc(string.bytesize)
58
- data.write_string(string)
59
- data
55
+ m = FFI::MemoryPointer.from_string(string)
56
+ m.autorelease = false
57
+ m
60
58
  end
61
59
 
62
60
  require_relative "native/native_context_api"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SassC
4
- VERSION = "2.3.0"
4
+ VERSION = "2.4.0"
5
5
  end
@@ -11,7 +11,7 @@ module SassC
11
11
 
12
12
  class General < MiniTest::Test
13
13
  def test_it_reports_the_libsass_version
14
- assert_equal "3.6.3", Native.version
14
+ assert_equal "3.6.4", Native.version
15
15
  end
16
16
  end
17
17
 
@@ -185,9 +185,9 @@ module SassC
185
185
  funct = FFI::Function.new(:pointer, [:pointer, :pointer, :pointer]) do |url, prev, cookie|
186
186
  list = Native.make_import_list(2)
187
187
 
188
- str = "$var: 5px;\0"
189
- data = Native::LibC.malloc(str.size)
190
- data.write_string(str)
188
+ str = "$var: 5px;"
189
+ data = FFI::MemoryPointer.from_string(str)
190
+ data.autorelease = false
191
191
 
192
192
  entry0 = Native.make_import_entry("fake_includ.scss", data, nil)
193
193
  entry1 = Native.make_import_entry("not_included.scss", nil, nil)
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: 2.3.0
4
+ version: 2.4.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: 2020-04-17 00:00:00.000000000 Z
11
+ date: 2020-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -164,6 +164,7 @@ files:
164
164
  - ext/libsass/include/sass/values.h
165
165
  - ext/libsass/include/sass/version.h
166
166
  - ext/libsass/include/sass2scss.h
167
+ - ext/libsass/src/MurmurHash2.hpp
167
168
  - ext/libsass/src/ast.cpp
168
169
  - ext/libsass/src/ast.hpp
169
170
  - ext/libsass/src/ast2c.cpp
@@ -250,8 +251,13 @@ files:
250
251
  - ext/libsass/src/listize.cpp
251
252
  - ext/libsass/src/listize.hpp
252
253
  - ext/libsass/src/mapping.hpp
253
- - ext/libsass/src/memory/SharedPtr.cpp
254
- - ext/libsass/src/memory/SharedPtr.hpp
254
+ - ext/libsass/src/memory.hpp
255
+ - ext/libsass/src/memory/allocator.cpp
256
+ - ext/libsass/src/memory/allocator.hpp
257
+ - ext/libsass/src/memory/config.hpp
258
+ - ext/libsass/src/memory/memory_pool.hpp
259
+ - ext/libsass/src/memory/shared_ptr.cpp
260
+ - ext/libsass/src/memory/shared_ptr.hpp
255
261
  - ext/libsass/src/operation.hpp
256
262
  - ext/libsass/src/operators.cpp
257
263
  - ext/libsass/src/operators.hpp
@@ -279,6 +285,10 @@ files:
279
285
  - ext/libsass/src/sass_functions.hpp
280
286
  - ext/libsass/src/sass_values.cpp
281
287
  - ext/libsass/src/sass_values.hpp
288
+ - ext/libsass/src/settings.hpp
289
+ - ext/libsass/src/source.cpp
290
+ - ext/libsass/src/source.hpp
291
+ - ext/libsass/src/source_data.hpp
282
292
  - ext/libsass/src/source_map.cpp
283
293
  - ext/libsass/src/source_map.hpp
284
294
  - ext/libsass/src/stylesheet.cpp
@@ -307,7 +317,6 @@ files:
307
317
  - lib/sassc/import_handler.rb
308
318
  - lib/sassc/importer.rb
309
319
  - lib/sassc/native.rb
310
- - lib/sassc/native/lib_c.rb
311
320
  - lib/sassc/native/native_context_api.rb
312
321
  - lib/sassc/native/native_functions_api.rb
313
322
  - lib/sassc/native/sass2scss_api.rb
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module SassC
4
- module Native
5
- module LibC
6
- extend FFI::Library
7
- ffi_lib FFI::Library::LIBC
8
-
9
- # memory allocators
10
- attach_function :malloc, [:size_t], :pointer
11
- # attach_function :calloc, [:size_t], :pointer
12
- # attach_function :valloc, [:size_t], :pointer
13
- # attach_function :realloc, [:pointer, :size_t], :pointer
14
- # attach_function :free, [:pointer], :void
15
-
16
- # memory movers
17
- # attach_function :memcpy, [:pointer, :pointer, :size_t], :pointer
18
- # attach_function :bcopy, [:pointer, :pointer, :size_t], :void
19
- end
20
- end
21
- end