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
@@ -55,8 +55,8 @@ namespace Sass {
55
55
 
56
56
  class Units {
57
57
  public:
58
- std::vector<std::string> numerators;
59
- std::vector<std::string> denominators;
58
+ sass::vector<sass::string> numerators;
59
+ sass::vector<sass::string> denominators;
60
60
  public:
61
61
  // default constructor
62
62
  Units() :
@@ -69,7 +69,7 @@ namespace Sass {
69
69
  denominators(ptr->denominators)
70
70
  { }
71
71
  // convert to string
72
- std::string unit() const;
72
+ sass::string unit() const;
73
73
  // get if units are empty
74
74
  bool is_unitless() const;
75
75
  // return if valid for css
@@ -95,15 +95,15 @@ namespace Sass {
95
95
  extern const double resolution_conversion_factors[3][3];
96
96
 
97
97
  UnitType get_main_unit(const UnitClass unit);
98
- enum Sass::UnitType string_to_unit(const std::string&);
98
+ enum Sass::UnitType string_to_unit(const sass::string&);
99
99
  const char* unit_to_string(Sass::UnitType unit);
100
100
  enum Sass::UnitClass get_unit_type(Sass::UnitType unit);
101
- std::string get_unit_class(Sass::UnitType unit);
102
- std::string unit_to_class(const std::string&);
101
+ sass::string get_unit_class(Sass::UnitType unit);
102
+ sass::string unit_to_class(const sass::string&);
103
103
  // throws incompatibleUnits exceptions
104
- double conversion_factor(const std::string&, const std::string&);
104
+ double conversion_factor(const sass::string&, const sass::string&);
105
105
  double conversion_factor(UnitType, UnitType, UnitClass, UnitClass);
106
- double convert_units(const std::string&, const std::string&, int&, int&);
106
+ double convert_units(const sass::string&, const sass::string&, int&, int&);
107
107
 
108
108
  }
109
109
 
@@ -11,7 +11,6 @@
11
11
 
12
12
  namespace Sass {
13
13
  namespace UTF_8 {
14
- using std::string;
15
14
 
16
15
  // naming conventions:
17
16
  // offset: raw byte offset (0 based)
@@ -19,25 +18,25 @@ namespace Sass {
19
18
  // index: code point offset (1 based or negative)
20
19
 
21
20
  // function that will count the number of code points (utf-8 characters) from the given beginning to the given end
22
- size_t code_point_count(const string& str, size_t start, size_t end) {
21
+ size_t code_point_count(const sass::string& str, size_t start, size_t end) {
23
22
  return utf8::distance(str.begin() + start, str.begin() + end);
24
23
  }
25
24
 
26
- size_t code_point_count(const string& str) {
25
+ size_t code_point_count(const sass::string& str) {
27
26
  return utf8::distance(str.begin(), str.end());
28
27
  }
29
28
 
30
29
  // function that will return the byte offset at a code point position
31
- size_t offset_at_position(const string& str, size_t position) {
32
- string::const_iterator it = str.begin();
30
+ size_t offset_at_position(const sass::string& str, size_t position) {
31
+ sass::string::const_iterator it = str.begin();
33
32
  utf8::advance(it, position, str.end());
34
33
  return std::distance(str.begin(), it);
35
34
  }
36
35
 
37
36
  // function that returns number of bytes in a character at offset
38
- size_t code_point_size_at_offset(const string& str, size_t offset) {
37
+ size_t code_point_size_at_offset(const sass::string& str, size_t offset) {
39
38
  // get iterator from string and forward by offset
40
- string::const_iterator stop = str.begin() + offset;
39
+ sass::string::const_iterator stop = str.begin() + offset;
41
40
  // check if beyond boundary
42
41
  if (stop == str.end()) return 0;
43
42
  // advance by one code point
@@ -78,9 +77,9 @@ namespace Sass {
78
77
  using std::wstring;
79
78
 
80
79
  // convert from utf16/wide string to utf8 string
81
- string convert_from_utf16(const wstring& utf16)
80
+ sass::string convert_from_utf16(const wstring& utf16)
82
81
  {
83
- string utf8;
82
+ sass::string utf8;
84
83
  // pre-allocate expected memory
85
84
  utf8.reserve(sizeof(utf16)/2);
86
85
  utf8::utf16to8(utf16.begin(), utf16.end(),
@@ -89,7 +88,7 @@ namespace Sass {
89
88
  }
90
89
 
91
90
  // convert from utf8 string to utf16/wide string
92
- wstring convert_to_utf16(const string& utf8)
91
+ wstring convert_to_utf16(const sass::string& utf8)
93
92
  {
94
93
  wstring utf16;
95
94
  // pre-allocate expected memory
@@ -3,6 +3,7 @@
3
3
 
4
4
  #include <string>
5
5
  #include "utf8.h"
6
+ #include "memory.hpp"
6
7
 
7
8
  namespace Sass {
8
9
  namespace UTF_8 {
@@ -13,22 +14,22 @@ namespace Sass {
13
14
  // index: code point offset (1 based or negative)
14
15
 
15
16
  // function that will count the number of code points (utf-8 characters) from the beginning to the given end
16
- size_t code_point_count(const std::string& str, size_t start, size_t end);
17
- size_t code_point_count(const std::string& str);
17
+ size_t code_point_count(const sass::string& str, size_t start, size_t end);
18
+ size_t code_point_count(const sass::string& str);
18
19
 
19
20
  // function that will return the byte offset of a code point in a
20
- size_t offset_at_position(const std::string& str, size_t position);
21
+ size_t offset_at_position(const sass::string& str, size_t position);
21
22
 
22
23
  // function that returns number of bytes in a character in a string
23
- size_t code_point_size_at_offset(const std::string& str, size_t offset);
24
+ size_t code_point_size_at_offset(const sass::string& str, size_t offset);
24
25
 
25
26
  // function that will return a normalized index, given a crazy one
26
27
  size_t normalize_index(int index, size_t len);
27
28
 
28
29
  #ifdef _WIN32
29
30
  // functions to handle unicode paths on windows
30
- std::string convert_from_utf16(const std::wstring& wstr);
31
- std::wstring convert_to_utf16(const std::string& str);
31
+ sass::string convert_from_utf16(const std::wstring& wstr);
32
+ std::wstring convert_to_utf16(const sass::string& str);
32
33
  #endif
33
34
 
34
35
  }
@@ -76,7 +76,7 @@ namespace Sass {
76
76
  free(arr);
77
77
  }
78
78
 
79
- char **copy_strings(const std::vector<std::string>& strings, char*** array, int skip) {
79
+ char **copy_strings(const sass::vector<sass::string>& strings, char*** array, int skip) {
80
80
  int num = static_cast<int>(strings.size()) - skip;
81
81
  char** arr = (char**) calloc(num + 1, sizeof(char*));
82
82
  if (arr == 0)
@@ -97,10 +97,10 @@ namespace Sass {
97
97
  }
98
98
 
99
99
  // read css string (handle multiline DELIM)
100
- std::string read_css_string(const std::string& str, bool css)
100
+ sass::string read_css_string(const sass::string& str, bool css)
101
101
  {
102
102
  if (!css) return str;
103
- std::string out("");
103
+ sass::string out("");
104
104
  bool esc = false;
105
105
  for (auto i : str) {
106
106
  if (i == '\\') {
@@ -125,9 +125,9 @@ namespace Sass {
125
125
 
126
126
  // double escape all escape sequences
127
127
  // keep unescaped quotes and backslashes
128
- std::string evacuate_escapes(const std::string& str)
128
+ sass::string evacuate_escapes(const sass::string& str)
129
129
  {
130
- std::string out("");
130
+ sass::string out("");
131
131
  bool esc = false;
132
132
  for (auto i : str) {
133
133
  if (i == '\\' && !esc) {
@@ -159,7 +159,7 @@ namespace Sass {
159
159
  }
160
160
 
161
161
  // bell characters are replaced with spaces
162
- void newline_to_space(std::string& str)
162
+ void newline_to_space(sass::string& str)
163
163
  {
164
164
  std::replace(str.begin(), str.end(), '\n', ' ');
165
165
  }
@@ -168,14 +168,14 @@ namespace Sass {
168
168
  // 2. Replaces newlines with spaces.
169
169
  //
170
170
  // This method only considers LF and CRLF as newlines.
171
- std::string string_to_output(const std::string& str)
171
+ sass::string string_to_output(const sass::string& str)
172
172
  {
173
- std::string result;
173
+ sass::string result;
174
174
  result.reserve(str.size());
175
175
  std::size_t pos = 0;
176
176
  while (true) {
177
177
  const std::size_t newline = str.find_first_of("\n\r", pos);
178
- if (newline == std::string::npos) break;
178
+ if (newline == sass::string::npos) break;
179
179
  result.append(str, pos, newline - pos);
180
180
  if (str[newline] == '\r') {
181
181
  if (str[newline + 1] == '\n') {
@@ -191,17 +191,17 @@ namespace Sass {
191
191
  }
192
192
  result += ' ';
193
193
  const std::size_t non_space = str.find_first_not_of(" \f\n\r\t\v", pos);
194
- if (non_space != std::string::npos) {
194
+ if (non_space != sass::string::npos) {
195
195
  pos = non_space;
196
196
  }
197
197
  }
198
- result.append(str, pos, std::string::npos);
198
+ result.append(str, pos, sass::string::npos);
199
199
  return result;
200
200
  }
201
201
 
202
- std::string escape_string(const std::string& str)
202
+ sass::string escape_string(const sass::string& str)
203
203
  {
204
- std::string out;
204
+ sass::string out;
205
205
  out.reserve(str.size());
206
206
  for (char c : str) {
207
207
  switch (c) {
@@ -221,9 +221,9 @@ namespace Sass {
221
221
  return out;
222
222
  }
223
223
 
224
- std::string comment_to_compact_string(const std::string& text)
224
+ sass::string comment_to_compact_string(const sass::string& text)
225
225
  {
226
- std::string str = "";
226
+ sass::string str = "";
227
227
  size_t has = 0;
228
228
  char prev = 0;
229
229
  bool clean = false;
@@ -270,10 +270,10 @@ namespace Sass {
270
270
  return quote_mark;
271
271
  }
272
272
 
273
- std::string read_hex_escapes(const std::string& s)
273
+ sass::string read_hex_escapes(const sass::string& s)
274
274
  {
275
275
 
276
- std::string result;
276
+ sass::string result;
277
277
  bool skipped = false;
278
278
 
279
279
  for (size_t i = 0, L = s.length(); i < L; ++i) {
@@ -339,7 +339,7 @@ namespace Sass {
339
339
 
340
340
  }
341
341
 
342
- std::string unquote(const std::string& s, char* qd, bool keep_utf8_sequences, bool strict)
342
+ sass::string unquote(const sass::string& s, char* qd, bool keep_utf8_sequences, bool strict)
343
343
  {
344
344
 
345
345
  // not enough room for quotes
@@ -355,7 +355,7 @@ namespace Sass {
355
355
  else if (*s.begin() == '\'' && *s.rbegin() == '\'') q = '\'';
356
356
  else return s;
357
357
 
358
- std::string unq;
358
+ sass::string unq;
359
359
  unq.reserve(s.length()-2);
360
360
 
361
361
  for (size_t i = 1, L = s.length() - 1; i < L; ++i) {
@@ -414,7 +414,7 @@ namespace Sass {
414
414
  // // don't be that strict
415
415
  // return s;
416
416
  // // this basically always means an internal error and not users fault
417
- // error("Unescaped delimiter in string to unquote found. [" + s + "]", ParserState("[UNQUOTE]"));
417
+ // error("Unescaped delimiter in string to unquote found. [" + s + "]", SourceSpan("[UNQUOTE]"));
418
418
  // }
419
419
  else {
420
420
  if (strict && !skipped) {
@@ -431,16 +431,16 @@ namespace Sass {
431
431
 
432
432
  }
433
433
 
434
- std::string quote(const std::string& s, char q)
434
+ sass::string quote(const sass::string& s, char q)
435
435
  {
436
436
 
437
437
  // autodetect with fallback to given quote
438
438
  q = detect_best_quotemark(s.c_str(), q);
439
439
 
440
440
  // return an empty quoted string
441
- if (s.empty()) return std::string(2, q ? q : '"');
441
+ if (s.empty()) return sass::string(2, q ? q : '"');
442
442
 
443
- std::string quoted;
443
+ sass::string quoted;
444
444
  quoted.reserve(s.length()+2);
445
445
  quoted.push_back(q);
446
446
 
@@ -529,7 +529,7 @@ namespace Sass {
529
529
 
530
530
  namespace Util {
531
531
 
532
- bool isPrintable(Ruleset* r, Sass_Output_Style style) {
532
+ bool isPrintable(StyleRule* r, Sass_Output_Style style) {
533
533
  if (r == NULL) {
534
534
  return false;
535
535
  }
@@ -547,11 +547,11 @@ namespace Sass {
547
547
  bool hasPrintableChildBlocks = false;
548
548
  for (size_t i = 0, L = b->length(); i < L; ++i) {
549
549
  Statement_Obj stm = b->at(i);
550
- if (Cast<Directive>(stm)) {
550
+ if (Cast<AtRule>(stm)) {
551
551
  return true;
552
552
  } else if (Declaration* d = Cast<Declaration>(stm)) {
553
553
  return isPrintable(d, style);
554
- } else if (Has_Block* p = Cast<Has_Block>(stm)) {
554
+ } else if (ParentStatement* p = Cast<ParentStatement>(stm)) {
555
555
  Block_Obj pChildBlock = p->block();
556
556
  if (isPrintable(pChildBlock, style)) {
557
557
  hasPrintableChildBlocks = true;
@@ -589,13 +589,13 @@ namespace Sass {
589
589
 
590
590
  bool isPrintable(Declaration* d, Sass_Output_Style style)
591
591
  {
592
- Expression_Obj val = d->value();
592
+ ExpressionObj val = d->value();
593
593
  if (String_Quoted_Obj sq = Cast<String_Quoted>(val)) return isPrintable(sq.ptr(), style);
594
594
  if (String_Constant_Obj sc = Cast<String_Constant>(val)) return isPrintable(sc.ptr(), style);
595
595
  return true;
596
596
  }
597
597
 
598
- bool isPrintable(Supports_Block* f, Sass_Output_Style style) {
598
+ bool isPrintable(SupportsRule* f, Sass_Output_Style style) {
599
599
  if (f == NULL) {
600
600
  return false;
601
601
  }
@@ -606,10 +606,10 @@ namespace Sass {
606
606
  bool hasPrintableChildBlocks = false;
607
607
  for (size_t i = 0, L = b->length(); i < L; ++i) {
608
608
  Statement_Obj stm = b->at(i);
609
- if (Cast<Declaration>(stm) || Cast<Directive>(stm)) {
609
+ if (Cast<Declaration>(stm) || Cast<AtRule>(stm)) {
610
610
  hasDeclarations = true;
611
611
  }
612
- else if (Has_Block* b = Cast<Has_Block>(stm)) {
612
+ else if (ParentStatement* b = Cast<ParentStatement>(stm)) {
613
613
  Block_Obj pChildBlock = b->block();
614
614
  if (!b->is_invisible()) {
615
615
  if (isPrintable(pChildBlock, style)) {
@@ -634,19 +634,19 @@ namespace Sass {
634
634
  if (m->empty()) return false;
635
635
  for (size_t i = 0, L = b->length(); i < L; ++i) {
636
636
  Statement_Obj stm = b->at(i);
637
- if (Cast<Directive>(stm)) return true;
637
+ if (Cast<AtRule>(stm)) return true;
638
638
  else if (Cast<Declaration>(stm)) return true;
639
639
  else if (Comment* c = Cast<Comment>(stm)) {
640
640
  if (isPrintable(c, style)) {
641
641
  return true;
642
642
  }
643
643
  }
644
- else if (Ruleset* r = Cast<Ruleset>(stm)) {
644
+ else if (StyleRule* r = Cast<StyleRule>(stm)) {
645
645
  if (isPrintable(r, style)) {
646
646
  return true;
647
647
  }
648
648
  }
649
- else if (Supports_Block* f = Cast<Supports_Block>(stm)) {
649
+ else if (SupportsRule* f = Cast<SupportsRule>(stm)) {
650
650
  if (isPrintable(f, style)) {
651
651
  return true;
652
652
  }
@@ -656,7 +656,7 @@ namespace Sass {
656
656
  return true;
657
657
  }
658
658
  }
659
- else if (Has_Block* b = Cast<Has_Block>(stm)) {
659
+ else if (ParentStatement* b = Cast<ParentStatement>(stm)) {
660
660
  if (isPrintable(b->block(), style)) {
661
661
  return true;
662
662
  }
@@ -686,7 +686,7 @@ namespace Sass {
686
686
 
687
687
  for (size_t i = 0, L = b->length(); i < L; ++i) {
688
688
  Statement_Obj stm = b->at(i);
689
- if (Cast<Declaration>(stm) || Cast<Directive>(stm)) {
689
+ if (Cast<Declaration>(stm) || Cast<AtRule>(stm)) {
690
690
  return true;
691
691
  }
692
692
  else if (Comment* c = Cast<Comment>(stm)) {
@@ -694,12 +694,12 @@ namespace Sass {
694
694
  return true;
695
695
  }
696
696
  }
697
- else if (Ruleset* r = Cast<Ruleset>(stm)) {
697
+ else if (StyleRule* r = Cast<StyleRule>(stm)) {
698
698
  if (isPrintable(r, style)) {
699
699
  return true;
700
700
  }
701
701
  }
702
- else if (Supports_Block* f = Cast<Supports_Block>(stm)) {
702
+ else if (SupportsRule* f = Cast<SupportsRule>(stm)) {
703
703
  if (isPrintable(f, style)) {
704
704
  return true;
705
705
  }
@@ -709,7 +709,7 @@ namespace Sass {
709
709
  return true;
710
710
  }
711
711
  }
712
- else if (Has_Block* b = Cast<Has_Block>(stm)) {
712
+ else if (ParentStatement* b = Cast<ParentStatement>(stm)) {
713
713
  if (isPrintable(b->block(), style)) {
714
714
  return true;
715
715
  }
@@ -34,17 +34,17 @@ namespace Sass {
34
34
  double sass_strtod(const char* str);
35
35
  const char* safe_str(const char *, const char* = "");
36
36
  void free_string_array(char **);
37
- char **copy_strings(const std::vector<std::string>&, char ***, int = 0);
38
- std::string read_css_string(const std::string& str, bool css = true);
39
- std::string evacuate_escapes(const std::string& str);
40
- std::string string_to_output(const std::string& str);
41
- std::string comment_to_compact_string(const std::string& text);
42
- std::string read_hex_escapes(const std::string& str);
43
- std::string escape_string(const std::string& str);
44
- void newline_to_space(std::string& str);
45
-
46
- std::string quote(const std::string&, char q = 0);
47
- std::string unquote(const std::string&, char* q = 0, bool keep_utf8_sequences = false, bool strict = true);
37
+ char **copy_strings(const sass::vector<sass::string>&, char ***, int = 0);
38
+ sass::string read_css_string(const sass::string& str, bool css = true);
39
+ sass::string evacuate_escapes(const sass::string& str);
40
+ sass::string string_to_output(const sass::string& str);
41
+ sass::string comment_to_compact_string(const sass::string& text);
42
+ sass::string read_hex_escapes(const sass::string& str);
43
+ sass::string escape_string(const sass::string& str);
44
+ void newline_to_space(sass::string& str);
45
+
46
+ sass::string quote(const sass::string&, char q = 0);
47
+ sass::string unquote(const sass::string&, char* q = 0, bool keep_utf8_sequences = false, bool strict = true);
48
48
  char detect_best_quotemark(const char* s, char qm = '"');
49
49
 
50
50
  bool is_hex_doublet(double n);
@@ -63,21 +63,21 @@ namespace Sass {
63
63
 
64
64
  // C++20 `starts_with` equivalent.
65
65
  // See https://en.cppreference.com/w/cpp/string/basic_string/starts_with
66
- inline bool starts_with(const std::string& str, const char* prefix, size_t prefix_len) {
66
+ inline bool starts_with(const sass::string& str, const char* prefix, size_t prefix_len) {
67
67
  return str.compare(0, prefix_len, prefix) == 0;
68
68
  }
69
69
 
70
- inline bool starts_with(const std::string& str, const char* prefix) {
70
+ inline bool starts_with(const sass::string& str, const char* prefix) {
71
71
  return starts_with(str, prefix, std::strlen(prefix));
72
72
  }
73
73
 
74
74
  // C++20 `ends_with` equivalent.
75
75
  // See https://en.cppreference.com/w/cpp/string/basic_string/ends_with
76
- inline bool ends_with(const std::string& str, const std::string& suffix) {
76
+ inline bool ends_with(const sass::string& str, const sass::string& suffix) {
77
77
  return suffix.size() <= str.size() && std::equal(suffix.rbegin(), suffix.rend(), str.rbegin());
78
78
  }
79
79
 
80
- inline bool ends_with(const std::string& str, const char* suffix, size_t suffix_len) {
80
+ inline bool ends_with(const sass::string& str, const char* suffix, size_t suffix_len) {
81
81
  if (suffix_len > str.size()) return false;
82
82
  const char* suffix_it = suffix + suffix_len;
83
83
  const char* str_it = str.c_str() + str.size();
@@ -85,14 +85,14 @@ namespace Sass {
85
85
  return true;
86
86
  }
87
87
 
88
- inline bool ends_with(const std::string& str, const char* suffix) {
88
+ inline bool ends_with(const sass::string& str, const char* suffix) {
89
89
  return ends_with(str, suffix, std::strlen(suffix));
90
90
  }
91
91
 
92
92
  namespace Util {
93
93
 
94
- bool isPrintable(Ruleset* r, Sass_Output_Style style = NESTED);
95
- bool isPrintable(Supports_Block* r, Sass_Output_Style style = NESTED);
94
+ bool isPrintable(StyleRule* r, Sass_Output_Style style = NESTED);
95
+ bool isPrintable(SupportsRule* r, Sass_Output_Style style = NESTED);
96
96
  bool isPrintable(CssMediaRule* r, Sass_Output_Style style = NESTED);
97
97
  bool isPrintable(Comment* b, Sass_Output_Style style = NESTED);
98
98
  bool isPrintable(Block_Obj b, Sass_Output_Style style = NESTED);