sassc 2.2.1 → 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 (147) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -0
  3. data/CHANGELOG.md +18 -0
  4. data/Rakefile +1 -3
  5. data/ext/extconf.rb +13 -5
  6. data/ext/libsass/VERSION +1 -1
  7. data/ext/libsass/include/sass/base.h +2 -1
  8. data/ext/libsass/include/sass/context.h +4 -0
  9. data/ext/libsass/src/MurmurHash2.hpp +91 -0
  10. data/ext/libsass/src/ast.cpp +158 -168
  11. data/ext/libsass/src/ast.hpp +389 -230
  12. data/ext/libsass/src/ast_def_macros.hpp +18 -10
  13. data/ext/libsass/src/ast_fwd_decl.cpp +4 -3
  14. data/ext/libsass/src/ast_fwd_decl.hpp +98 -165
  15. data/ext/libsass/src/ast_helpers.hpp +292 -0
  16. data/ext/libsass/src/ast_sel_cmp.cpp +219 -732
  17. data/ext/libsass/src/ast_sel_super.cpp +539 -0
  18. data/ext/libsass/src/ast_sel_unify.cpp +207 -212
  19. data/ext/libsass/src/ast_sel_weave.cpp +616 -0
  20. data/ext/libsass/src/ast_selectors.cpp +594 -1026
  21. data/ext/libsass/src/ast_selectors.hpp +339 -385
  22. data/ext/libsass/src/ast_supports.cpp +36 -52
  23. data/ext/libsass/src/ast_supports.hpp +29 -29
  24. data/ext/libsass/src/ast_values.cpp +271 -84
  25. data/ext/libsass/src/ast_values.hpp +116 -107
  26. data/ext/libsass/src/backtrace.cpp +9 -9
  27. data/ext/libsass/src/backtrace.hpp +5 -5
  28. data/ext/libsass/src/base64vlq.cpp +2 -2
  29. data/ext/libsass/src/base64vlq.hpp +1 -1
  30. data/ext/libsass/src/bind.cpp +18 -18
  31. data/ext/libsass/src/bind.hpp +1 -1
  32. data/ext/libsass/src/c2ast.cpp +3 -3
  33. data/ext/libsass/src/c2ast.hpp +1 -1
  34. data/ext/libsass/src/cencode.c +4 -6
  35. data/ext/libsass/src/check_nesting.cpp +40 -41
  36. data/ext/libsass/src/check_nesting.hpp +6 -2
  37. data/ext/libsass/src/color_maps.cpp +14 -13
  38. data/ext/libsass/src/color_maps.hpp +1 -9
  39. data/ext/libsass/src/constants.cpp +5 -0
  40. data/ext/libsass/src/constants.hpp +6 -0
  41. data/ext/libsass/src/context.cpp +92 -119
  42. data/ext/libsass/src/context.hpp +41 -53
  43. data/ext/libsass/src/cssize.cpp +66 -149
  44. data/ext/libsass/src/cssize.hpp +17 -23
  45. data/ext/libsass/src/dart_helpers.hpp +199 -0
  46. data/ext/libsass/src/debugger.hpp +451 -295
  47. data/ext/libsass/src/emitter.cpp +15 -16
  48. data/ext/libsass/src/emitter.hpp +10 -12
  49. data/ext/libsass/src/environment.cpp +27 -27
  50. data/ext/libsass/src/environment.hpp +29 -24
  51. data/ext/libsass/src/error_handling.cpp +62 -41
  52. data/ext/libsass/src/error_handling.hpp +61 -51
  53. data/ext/libsass/src/eval.cpp +167 -281
  54. data/ext/libsass/src/eval.hpp +27 -29
  55. data/ext/libsass/src/eval_selectors.cpp +75 -0
  56. data/ext/libsass/src/expand.cpp +275 -222
  57. data/ext/libsass/src/expand.hpp +36 -16
  58. data/ext/libsass/src/extender.cpp +1188 -0
  59. data/ext/libsass/src/extender.hpp +399 -0
  60. data/ext/libsass/src/extension.cpp +43 -0
  61. data/ext/libsass/src/extension.hpp +89 -0
  62. data/ext/libsass/src/file.cpp +81 -72
  63. data/ext/libsass/src/file.hpp +28 -37
  64. data/ext/libsass/src/fn_colors.cpp +20 -18
  65. data/ext/libsass/src/fn_lists.cpp +30 -29
  66. data/ext/libsass/src/fn_maps.cpp +3 -3
  67. data/ext/libsass/src/fn_miscs.cpp +34 -46
  68. data/ext/libsass/src/fn_numbers.cpp +20 -13
  69. data/ext/libsass/src/fn_selectors.cpp +98 -128
  70. data/ext/libsass/src/fn_strings.cpp +47 -33
  71. data/ext/libsass/src/fn_utils.cpp +31 -29
  72. data/ext/libsass/src/fn_utils.hpp +17 -11
  73. data/ext/libsass/src/inspect.cpp +186 -148
  74. data/ext/libsass/src/inspect.hpp +31 -29
  75. data/ext/libsass/src/lexer.cpp +20 -82
  76. data/ext/libsass/src/lexer.hpp +5 -16
  77. data/ext/libsass/src/listize.cpp +23 -37
  78. data/ext/libsass/src/listize.hpp +8 -9
  79. data/ext/libsass/src/mapping.hpp +1 -0
  80. data/ext/libsass/src/memory/allocator.cpp +48 -0
  81. data/ext/libsass/src/memory/allocator.hpp +138 -0
  82. data/ext/libsass/src/memory/config.hpp +20 -0
  83. data/ext/libsass/src/memory/memory_pool.hpp +186 -0
  84. data/ext/libsass/src/memory/{SharedPtr.cpp → shared_ptr.cpp} +2 -2
  85. data/ext/libsass/src/memory/{SharedPtr.hpp → shared_ptr.hpp} +55 -9
  86. data/ext/libsass/src/memory.hpp +12 -0
  87. data/ext/libsass/src/operation.hpp +71 -61
  88. data/ext/libsass/src/operators.cpp +19 -18
  89. data/ext/libsass/src/operators.hpp +11 -11
  90. data/ext/libsass/src/ordered_map.hpp +112 -0
  91. data/ext/libsass/src/output.cpp +45 -64
  92. data/ext/libsass/src/output.hpp +6 -6
  93. data/ext/libsass/src/parser.cpp +512 -700
  94. data/ext/libsass/src/parser.hpp +89 -97
  95. data/ext/libsass/src/parser_selectors.cpp +189 -0
  96. data/ext/libsass/src/permutate.hpp +164 -0
  97. data/ext/libsass/src/plugins.cpp +7 -7
  98. data/ext/libsass/src/plugins.hpp +8 -8
  99. data/ext/libsass/src/position.cpp +7 -26
  100. data/ext/libsass/src/position.hpp +44 -21
  101. data/ext/libsass/src/prelexer.cpp +6 -6
  102. data/ext/libsass/src/remove_placeholders.cpp +55 -56
  103. data/ext/libsass/src/remove_placeholders.hpp +21 -18
  104. data/ext/libsass/src/sass.cpp +16 -15
  105. data/ext/libsass/src/sass.hpp +10 -5
  106. data/ext/libsass/src/sass2scss.cpp +4 -4
  107. data/ext/libsass/src/sass_context.cpp +91 -122
  108. data/ext/libsass/src/sass_context.hpp +2 -2
  109. data/ext/libsass/src/sass_functions.cpp +1 -1
  110. data/ext/libsass/src/sass_values.cpp +8 -11
  111. data/ext/libsass/src/settings.hpp +19 -0
  112. data/ext/libsass/src/source.cpp +69 -0
  113. data/ext/libsass/src/source.hpp +95 -0
  114. data/ext/libsass/src/source_data.hpp +32 -0
  115. data/ext/libsass/src/source_map.cpp +22 -18
  116. data/ext/libsass/src/source_map.hpp +12 -9
  117. data/ext/libsass/src/stylesheet.cpp +22 -0
  118. data/ext/libsass/src/stylesheet.hpp +57 -0
  119. data/ext/libsass/src/to_value.cpp +2 -2
  120. data/ext/libsass/src/to_value.hpp +1 -1
  121. data/ext/libsass/src/units.cpp +24 -22
  122. data/ext/libsass/src/units.hpp +8 -8
  123. data/ext/libsass/src/utf8_string.cpp +9 -10
  124. data/ext/libsass/src/utf8_string.hpp +7 -6
  125. data/ext/libsass/src/util.cpp +48 -50
  126. data/ext/libsass/src/util.hpp +20 -21
  127. data/ext/libsass/src/util_string.cpp +111 -61
  128. data/ext/libsass/src/util_string.hpp +62 -8
  129. data/ext/libsass/src/values.cpp +12 -12
  130. data/lib/sassc/engine.rb +5 -3
  131. data/lib/sassc/functions_handler.rb +8 -8
  132. data/lib/sassc/native.rb +4 -6
  133. data/lib/sassc/script.rb +4 -4
  134. data/lib/sassc/version.rb +1 -1
  135. data/test/functions_test.rb +18 -1
  136. data/test/native_test.rb +4 -4
  137. metadata +29 -15
  138. data/ext/libsass/src/extend.cpp +0 -2132
  139. data/ext/libsass/src/extend.hpp +0 -86
  140. data/ext/libsass/src/node.cpp +0 -322
  141. data/ext/libsass/src/node.hpp +0 -118
  142. data/ext/libsass/src/paths.hpp +0 -71
  143. data/ext/libsass/src/sass_util.cpp +0 -152
  144. data/ext/libsass/src/sass_util.hpp +0 -256
  145. data/ext/libsass/src/subset_map.cpp +0 -58
  146. data/ext/libsass/src/subset_map.hpp +0 -76
  147. data/lib/sassc/native/lib_c.rb +0 -21
@@ -4,35 +4,7 @@
4
4
  // sass.hpp must go before all system headers to get the
5
5
  // __EXTENSIONS__ fix on Solaris.
6
6
  #include "sass.hpp"
7
-
8
- #include <set>
9
- #include <deque>
10
- #include <vector>
11
- #include <string>
12
- #include <sstream>
13
- #include <iostream>
14
- #include <typeinfo>
15
- #include <algorithm>
16
- #include "sass/base.h"
17
- #include "ast_fwd_decl.hpp"
18
-
19
- #include "util.hpp"
20
- #include "units.hpp"
21
- #include "context.hpp"
22
- #include "position.hpp"
23
- #include "constants.hpp"
24
- #include "operation.hpp"
25
- #include "position.hpp"
26
- #include "inspect.hpp"
27
- #include "source_map.hpp"
28
- #include "environment.hpp"
29
- #include "error_handling.hpp"
30
- #include "ast_def_macros.hpp"
31
- #include "ast_fwd_decl.hpp"
32
- #include "source_map.hpp"
33
- #include "fn_utils.hpp"
34
-
35
- #include "sass.h"
7
+ #include "ast.hpp"
36
8
 
37
9
  namespace Sass {
38
10
 
@@ -41,7 +13,7 @@ namespace Sass {
41
13
  //////////////////////////////////////////////////////////////////////
42
14
  class PreValue : public Expression {
43
15
  public:
44
- PreValue(ParserState pstate, bool d = false, bool e = false, bool i = false, Type ct = NONE);
16
+ PreValue(SourceSpan pstate, bool d = false, bool e = false, bool i = false, Type ct = NONE);
45
17
  ATTACH_VIRTUAL_AST_OPERATIONS(PreValue);
46
18
  virtual ~PreValue() { }
47
19
  };
@@ -51,36 +23,53 @@ namespace Sass {
51
23
  //////////////////////////////////////////////////////////////////////
52
24
  class Value : public PreValue {
53
25
  public:
54
- Value(ParserState pstate, bool d = false, bool e = false, bool i = false, Type ct = NONE);
55
- ATTACH_VIRTUAL_AST_OPERATIONS(Value);
26
+ Value(SourceSpan pstate, bool d = false, bool e = false, bool i = false, Type ct = NONE);
27
+
28
+ // Some obects are not meant to be compared
29
+ // ToDo: maybe fallback to pointer comparison?
30
+ virtual bool operator< (const Expression& rhs) const override = 0;
56
31
  virtual bool operator== (const Expression& rhs) const override = 0;
32
+
33
+ // We can give some reasonable implementations by using
34
+ // inverst operators on the specialized implementations
35
+ virtual bool operator> (const Expression& rhs) const {
36
+ return rhs < *this;
37
+ }
38
+ virtual bool operator!= (const Expression& rhs) const {
39
+ return !(*this == rhs);
40
+ }
41
+
42
+ ATTACH_VIRTUAL_AST_OPERATIONS(Value);
43
+
57
44
  };
58
45
 
59
46
  ///////////////////////////////////////////////////////////////////////
60
47
  // Lists of values, both comma- and space-separated (distinguished by a
61
48
  // type-tag.) Also used to represent variable-length argument lists.
62
49
  ///////////////////////////////////////////////////////////////////////
63
- class List : public Value, public Vectorized<Expression_Obj> {
64
- void adjust_after_pushing(Expression_Obj e) override { is_expanded(false); }
50
+ class List : public Value, public Vectorized<ExpressionObj> {
51
+ void adjust_after_pushing(ExpressionObj e) override { is_expanded(false); }
65
52
  private:
66
53
  ADD_PROPERTY(enum Sass_Separator, separator)
67
54
  ADD_PROPERTY(bool, is_arglist)
68
55
  ADD_PROPERTY(bool, is_bracketed)
69
56
  ADD_PROPERTY(bool, from_selector)
70
57
  public:
71
- List(ParserState pstate, size_t size = 0, enum Sass_Separator sep = SASS_SPACE, bool argl = false, bool bracket = false);
72
- std::string type() const override { return is_arglist_ ? "arglist" : "list"; }
73
- static std::string type_name() { return "list"; }
58
+ List(SourceSpan pstate, size_t size = 0, enum Sass_Separator sep = SASS_SPACE, bool argl = false, bool bracket = false);
59
+ sass::string type() const override { return is_arglist_ ? "arglist" : "list"; }
60
+ static sass::string type_name() { return "list"; }
74
61
  const char* sep_string(bool compressed = false) const {
75
62
  return separator() == SASS_SPACE ?
76
63
  " " : (compressed ? "," : ", ");
77
64
  }
78
65
  bool is_invisible() const override { return empty() && !is_bracketed(); }
79
- Expression_Obj value_at_index(size_t i);
66
+ ExpressionObj value_at_index(size_t i);
80
67
 
81
68
  virtual size_t hash() const override;
82
69
  virtual size_t size() const;
83
70
  virtual void set_delayed(bool delayed) override;
71
+
72
+ virtual bool operator< (const Expression& rhs) const override;
84
73
  virtual bool operator== (const Expression& rhs) const override;
85
74
 
86
75
  ATTACH_AST_OPERATIONS(List)
@@ -90,16 +79,18 @@ namespace Sass {
90
79
  ///////////////////////////////////////////////////////////////////////
91
80
  // Key value paris.
92
81
  ///////////////////////////////////////////////////////////////////////
93
- class Map : public Value, public Hashed {
94
- void adjust_after_pushing(std::pair<Expression_Obj, Expression_Obj> p) override { is_expanded(false); }
82
+ class Map : public Value, public Hashed<ExpressionObj, ExpressionObj, Map_Obj> {
83
+ void adjust_after_pushing(std::pair<ExpressionObj, ExpressionObj> p) override { is_expanded(false); }
95
84
  public:
96
- Map(ParserState pstate, size_t size = 0);
97
- std::string type() const override { return "map"; }
98
- static std::string type_name() { return "map"; }
85
+ Map(SourceSpan pstate, size_t size = 0);
86
+ sass::string type() const override { return "map"; }
87
+ static sass::string type_name() { return "map"; }
99
88
  bool is_invisible() const override { return empty(); }
100
- List_Obj to_list(ParserState& pstate);
89
+ List_Obj to_list(SourceSpan& pstate);
101
90
 
102
91
  virtual size_t hash() const override;
92
+
93
+ virtual bool operator< (const Expression& rhs) const override;
103
94
  virtual bool operator== (const Expression& rhs) const override;
104
95
 
105
96
  ATTACH_AST_OPERATIONS(Map)
@@ -115,21 +106,22 @@ namespace Sass {
115
106
  class Binary_Expression : public PreValue {
116
107
  private:
117
108
  HASH_PROPERTY(Operand, op)
118
- HASH_PROPERTY(Expression_Obj, left)
119
- HASH_PROPERTY(Expression_Obj, right)
109
+ HASH_PROPERTY(ExpressionObj, left)
110
+ HASH_PROPERTY(ExpressionObj, right)
120
111
  mutable size_t hash_;
121
112
  public:
122
- Binary_Expression(ParserState pstate,
123
- Operand op, Expression_Obj lhs, Expression_Obj rhs);
113
+ Binary_Expression(SourceSpan pstate,
114
+ Operand op, ExpressionObj lhs, ExpressionObj rhs);
124
115
 
125
- const std::string type_name();
126
- const std::string separator();
116
+ const sass::string type_name();
117
+ const sass::string separator();
127
118
  bool is_left_interpolant(void) const override;
128
119
  bool is_right_interpolant(void) const override;
129
120
  bool has_interpolant() const override;
130
121
 
131
122
  virtual void set_delayed(bool delayed) override;
132
123
 
124
+ virtual bool operator< (const Expression& rhs) const override;
133
125
  virtual bool operator==(const Expression& rhs) const override;
134
126
 
135
127
  virtual size_t hash() const override;
@@ -146,14 +138,15 @@ namespace Sass {
146
138
  ADD_PROPERTY(Definition_Obj, definition)
147
139
  ADD_PROPERTY(bool, is_css)
148
140
  public:
149
- Function(ParserState pstate, Definition_Obj def, bool css);
141
+ Function(SourceSpan pstate, Definition_Obj def, bool css);
150
142
 
151
- std::string type() const override { return "function"; }
152
- static std::string type_name() { return "function"; }
143
+ sass::string type() const override { return "function"; }
144
+ static sass::string type_name() { return "function"; }
153
145
  bool is_invisible() const override { return true; }
154
146
 
155
- std::string name();
147
+ sass::string name();
156
148
 
149
+ bool operator< (const Expression& rhs) const override;
157
150
  bool operator== (const Expression& rhs) const override;
158
151
 
159
152
  ATTACH_AST_OPERATIONS(Function)
@@ -171,15 +164,15 @@ namespace Sass {
171
164
  ADD_PROPERTY(void*, cookie)
172
165
  mutable size_t hash_;
173
166
  public:
174
- Function_Call(ParserState pstate, std::string n, Arguments_Obj args, void* cookie);
175
- Function_Call(ParserState pstate, std::string n, Arguments_Obj args, Function_Obj func);
176
- Function_Call(ParserState pstate, std::string n, Arguments_Obj args);
167
+ Function_Call(SourceSpan pstate, sass::string n, Arguments_Obj args, void* cookie);
168
+ Function_Call(SourceSpan pstate, sass::string n, Arguments_Obj args, Function_Obj func);
169
+ Function_Call(SourceSpan pstate, sass::string n, Arguments_Obj args);
177
170
 
178
- Function_Call(ParserState pstate, String_Obj n, Arguments_Obj args, void* cookie);
179
- Function_Call(ParserState pstate, String_Obj n, Arguments_Obj args, Function_Obj func);
180
- Function_Call(ParserState pstate, String_Obj n, Arguments_Obj args);
171
+ Function_Call(SourceSpan pstate, String_Obj n, Arguments_Obj args, void* cookie);
172
+ Function_Call(SourceSpan pstate, String_Obj n, Arguments_Obj args, Function_Obj func);
173
+ Function_Call(SourceSpan pstate, String_Obj n, Arguments_Obj args);
181
174
 
182
- std::string name() const;
175
+ sass::string name() const;
183
176
  bool is_css();
184
177
 
185
178
  bool operator==(const Expression& rhs) const override;
@@ -194,9 +187,9 @@ namespace Sass {
194
187
  // Variable references.
195
188
  ///////////////////////
196
189
  class Variable final : public PreValue {
197
- ADD_CONSTREF(std::string, name)
190
+ ADD_CONSTREF(sass::string, name)
198
191
  public:
199
- Variable(ParserState pstate, std::string n);
192
+ Variable(SourceSpan pstate, sass::string n);
200
193
  virtual bool operator==(const Expression& rhs) const override;
201
194
  virtual size_t hash() const override;
202
195
  ATTACH_AST_OPERATIONS(Variable)
@@ -211,12 +204,12 @@ namespace Sass {
211
204
  ADD_PROPERTY(bool, zero)
212
205
  mutable size_t hash_;
213
206
  public:
214
- Number(ParserState pstate, double val, std::string u = "", bool zero = true);
207
+ Number(SourceSpan pstate, double val, sass::string u = "", bool zero = true);
215
208
 
216
209
  bool zero() { return zero_; }
217
210
 
218
- std::string type() const override { return "number"; }
219
- static std::string type_name() { return "number"; }
211
+ sass::string type() const override { return "number"; }
212
+ static sass::string type_name() { return "number"; }
220
213
 
221
214
  // cancel out unnecessary units
222
215
  // result will be in input units
@@ -230,6 +223,7 @@ namespace Sass {
230
223
 
231
224
  bool operator< (const Number& rhs) const;
232
225
  bool operator== (const Number& rhs) const;
226
+ bool operator< (const Expression& rhs) const override;
233
227
  bool operator== (const Expression& rhs) const override;
234
228
  ATTACH_AST_OPERATIONS(Number)
235
229
  ATTACH_CRTP_PERFORM_METHODS()
@@ -239,18 +233,19 @@ namespace Sass {
239
233
  // Colors.
240
234
  //////////
241
235
  class Color : public Value {
242
- ADD_CONSTREF(std::string, disp)
236
+ ADD_CONSTREF(sass::string, disp)
243
237
  HASH_PROPERTY(double, a)
244
238
  protected:
245
239
  mutable size_t hash_;
246
240
  public:
247
- Color(ParserState pstate, double a = 1, const std::string disp = "");
241
+ Color(SourceSpan pstate, double a = 1, const sass::string disp = "");
248
242
 
249
- std::string type() const override { return "color"; }
250
- static std::string type_name() { return "color"; }
243
+ sass::string type() const override { return "color"; }
244
+ static sass::string type_name() { return "color"; }
251
245
 
252
246
  virtual size_t hash() const override = 0;
253
247
 
248
+ bool operator< (const Expression& rhs) const override;
254
249
  bool operator== (const Expression& rhs) const override;
255
250
 
256
251
  virtual Color_RGBA* copyAsRGBA() const = 0;
@@ -270,10 +265,10 @@ namespace Sass {
270
265
  HASH_PROPERTY(double, g)
271
266
  HASH_PROPERTY(double, b)
272
267
  public:
273
- Color_RGBA(ParserState pstate, double r, double g, double b, double a = 1, const std::string disp = "");
268
+ Color_RGBA(SourceSpan pstate, double r, double g, double b, double a = 1, const sass::string disp = "");
274
269
 
275
- std::string type() const override { return "color"; }
276
- static std::string type_name() { return "color"; }
270
+ sass::string type() const override { return "color"; }
271
+ static sass::string type_name() { return "color"; }
277
272
 
278
273
  size_t hash() const override;
279
274
 
@@ -283,6 +278,7 @@ namespace Sass {
283
278
  Color_HSLA* copyAsHSLA() const override;
284
279
  Color_HSLA* toHSLA() override { return copyAsHSLA(); }
285
280
 
281
+ bool operator< (const Expression& rhs) const override;
286
282
  bool operator== (const Expression& rhs) const override;
287
283
 
288
284
  ATTACH_AST_OPERATIONS(Color_RGBA)
@@ -298,10 +294,10 @@ namespace Sass {
298
294
  HASH_PROPERTY(double, s)
299
295
  HASH_PROPERTY(double, l)
300
296
  public:
301
- Color_HSLA(ParserState pstate, double h, double s, double l, double a = 1, const std::string disp = "");
297
+ Color_HSLA(SourceSpan pstate, double h, double s, double l, double a = 1, const sass::string disp = "");
302
298
 
303
- std::string type() const override { return "color"; }
304
- static std::string type_name() { return "color"; }
299
+ sass::string type() const override { return "color"; }
300
+ static sass::string type_name() { return "color"; }
305
301
 
306
302
  size_t hash() const override;
307
303
 
@@ -311,6 +307,7 @@ namespace Sass {
311
307
  Color_HSLA* copyAsHSLA() const override;
312
308
  Color_HSLA* toHSLA() override { return this; }
313
309
 
310
+ bool operator< (const Expression& rhs) const override;
314
311
  bool operator== (const Expression& rhs) const override;
315
312
 
316
313
  ATTACH_AST_OPERATIONS(Color_HSLA)
@@ -321,9 +318,10 @@ namespace Sass {
321
318
  // Errors from Sass_Values.
322
319
  //////////////////////////////
323
320
  class Custom_Error final : public Value {
324
- ADD_CONSTREF(std::string, message)
321
+ ADD_CONSTREF(sass::string, message)
325
322
  public:
326
- Custom_Error(ParserState pstate, std::string msg);
323
+ Custom_Error(SourceSpan pstate, sass::string msg);
324
+ bool operator< (const Expression& rhs) const override;
327
325
  bool operator== (const Expression& rhs) const override;
328
326
  ATTACH_AST_OPERATIONS(Custom_Error)
329
327
  ATTACH_CRTP_PERFORM_METHODS()
@@ -333,9 +331,10 @@ namespace Sass {
333
331
  // Warnings from Sass_Values.
334
332
  //////////////////////////////
335
333
  class Custom_Warning final : public Value {
336
- ADD_CONSTREF(std::string, message)
334
+ ADD_CONSTREF(sass::string, message)
337
335
  public:
338
- Custom_Warning(ParserState pstate, std::string msg);
336
+ Custom_Warning(SourceSpan pstate, sass::string msg);
337
+ bool operator< (const Expression& rhs) const override;
339
338
  bool operator== (const Expression& rhs) const override;
340
339
  ATTACH_AST_OPERATIONS(Custom_Warning)
341
340
  ATTACH_CRTP_PERFORM_METHODS()
@@ -348,16 +347,17 @@ namespace Sass {
348
347
  HASH_PROPERTY(bool, value)
349
348
  mutable size_t hash_;
350
349
  public:
351
- Boolean(ParserState pstate, bool val);
350
+ Boolean(SourceSpan pstate, bool val);
352
351
  operator bool() override { return value_; }
353
352
 
354
- std::string type() const override { return "bool"; }
355
- static std::string type_name() { return "bool"; }
353
+ sass::string type() const override { return "bool"; }
354
+ static sass::string type_name() { return "bool"; }
356
355
 
357
356
  size_t hash() const override;
358
357
 
359
358
  bool is_false() override { return !value_; }
360
359
 
360
+ bool operator< (const Expression& rhs) const override;
361
361
  bool operator== (const Expression& rhs) const override;
362
362
 
363
363
  ATTACH_AST_OPERATIONS(Boolean)
@@ -370,13 +370,16 @@ namespace Sass {
370
370
  ////////////////////////////////////////////////////////////////////////
371
371
  class String : public Value {
372
372
  public:
373
- String(ParserState pstate, bool delayed = false);
374
- static std::string type_name() { return "string"; }
373
+ String(SourceSpan pstate, bool delayed = false);
374
+ static sass::string type_name() { return "string"; }
375
375
  virtual ~String() = 0;
376
376
  virtual void rtrim() = 0;
377
377
  virtual bool operator<(const Expression& rhs) const override {
378
378
  return this->to_string() < rhs.to_string();
379
379
  };
380
+ virtual bool operator==(const Expression& rhs) const override {
381
+ return this->to_string() == rhs.to_string();
382
+ };
380
383
  ATTACH_VIRTUAL_AST_OPERATIONS(String);
381
384
  ATTACH_CRTP_PERFORM_METHODS()
382
385
  };
@@ -386,14 +389,14 @@ namespace Sass {
386
389
  // Interpolated strings. Meant to be reduced to flat strings during the
387
390
  // evaluation phase.
388
391
  ///////////////////////////////////////////////////////////////////////
389
- class String_Schema final : public String, public Vectorized<PreValue_Obj> {
392
+ class String_Schema final : public String, public Vectorized<PreValueObj> {
390
393
  ADD_PROPERTY(bool, css)
391
394
  mutable size_t hash_;
392
395
  public:
393
- String_Schema(ParserState pstate, size_t size = 0, bool css = true);
396
+ String_Schema(SourceSpan pstate, size_t size = 0, bool css = true);
394
397
 
395
- std::string type() const override { return "string"; }
396
- static std::string type_name() { return "string"; }
398
+ sass::string type() const override { return "string"; }
399
+ static sass::string type_name() { return "string"; }
397
400
 
398
401
  bool is_left_interpolant(void) const override;
399
402
  bool is_right_interpolant(void) const override;
@@ -403,6 +406,7 @@ namespace Sass {
403
406
  size_t hash() const override;
404
407
  virtual void set_delayed(bool delayed) override;
405
408
 
409
+ bool operator< (const Expression& rhs) const override;
406
410
  bool operator==(const Expression& rhs) const override;
407
411
  ATTACH_AST_OPERATIONS(String_Schema)
408
412
  ATTACH_CRTP_PERFORM_METHODS()
@@ -413,23 +417,23 @@ namespace Sass {
413
417
  ////////////////////////////////////////////////////////
414
418
  class String_Constant : public String {
415
419
  ADD_PROPERTY(char, quote_mark)
416
- ADD_PROPERTY(bool, can_compress_whitespace)
417
- HASH_CONSTREF(std::string, value)
420
+ HASH_CONSTREF(sass::string, value)
418
421
  protected:
419
422
  mutable size_t hash_;
420
423
  public:
421
- String_Constant(ParserState pstate, std::string val, bool css = true);
422
- String_Constant(ParserState pstate, const char* beg, bool css = true);
423
- String_Constant(ParserState pstate, const char* beg, const char* end, bool css = true);
424
- String_Constant(ParserState pstate, const Token& tok, bool css = true);
425
- std::string type() const override { return "string"; }
426
- static std::string type_name() { return "string"; }
424
+ String_Constant(SourceSpan pstate, sass::string val, bool css = true);
425
+ String_Constant(SourceSpan pstate, const char* beg, bool css = true);
426
+ String_Constant(SourceSpan pstate, const char* beg, const char* end, bool css = true);
427
+ String_Constant(SourceSpan pstate, const Token& tok, bool css = true);
428
+ sass::string type() const override { return "string"; }
429
+ static sass::string type_name() { return "string"; }
427
430
  bool is_invisible() const override;
428
431
  virtual void rtrim() override;
429
432
  size_t hash() const override;
433
+ bool operator< (const Expression& rhs) const override;
430
434
  bool operator==(const Expression& rhs) const override;
431
435
  // quotes are forced on inspection
432
- virtual std::string inspect() const override;
436
+ virtual sass::string inspect() const override;
433
437
  ATTACH_AST_OPERATIONS(String_Constant)
434
438
  ATTACH_CRTP_PERFORM_METHODS()
435
439
  };
@@ -439,12 +443,13 @@ namespace Sass {
439
443
  ////////////////////////////////////////////////////////
440
444
  class String_Quoted final : public String_Constant {
441
445
  public:
442
- String_Quoted(ParserState pstate, std::string val, char q = 0,
446
+ String_Quoted(SourceSpan pstate, sass::string val, char q = 0,
443
447
  bool keep_utf8_escapes = false, bool skip_unquoting = false,
444
448
  bool strict_unquoting = true, bool css = true);
449
+ bool operator< (const Expression& rhs) const override;
445
450
  bool operator==(const Expression& rhs) const override;
446
451
  // quotes are forced on inspection
447
- std::string inspect() const override;
452
+ sass::string inspect() const override;
448
453
  ATTACH_AST_OPERATIONS(String_Quoted)
449
454
  ATTACH_CRTP_PERFORM_METHODS()
450
455
  };
@@ -454,15 +459,16 @@ namespace Sass {
454
459
  //////////////////
455
460
  class Null final : public Value {
456
461
  public:
457
- Null(ParserState pstate);
458
- std::string type() const override { return "null"; }
459
- static std::string type_name() { return "null"; }
462
+ Null(SourceSpan pstate);
463
+ sass::string type() const override { return "null"; }
464
+ static sass::string type_name() { return "null"; }
460
465
  bool is_invisible() const override { return true; }
461
466
  operator bool() override { return false; }
462
467
  bool is_false() override { return true; }
463
468
 
464
469
  size_t hash() const override;
465
470
 
471
+ bool operator< (const Expression& rhs) const override;
466
472
  bool operator== (const Expression& rhs) const override;
467
473
 
468
474
  ATTACH_AST_OPERATIONS(Null)
@@ -474,11 +480,14 @@ namespace Sass {
474
480
  //////////////////////////////////
475
481
  class Parent_Reference final : public Value {
476
482
  public:
477
- Parent_Reference(ParserState pstate);
478
- std::string type() const override { return "parent"; }
479
- static std::string type_name() { return "parent"; }
483
+ Parent_Reference(SourceSpan pstate);
484
+ sass::string type() const override { return "parent"; }
485
+ static sass::string type_name() { return "parent"; }
486
+ bool operator< (const Expression& rhs) const override {
487
+ return false; // they are always equal
488
+ }
480
489
  bool operator==(const Expression& rhs) const override {
481
- return true; // can they ever be not equal?
490
+ return true; // they are always equal
482
491
  };
483
492
  ATTACH_AST_OPERATIONS(Parent_Reference)
484
493
  ATTACH_CRTP_PERFORM_METHODS()
@@ -2,20 +2,20 @@
2
2
 
3
3
  namespace Sass {
4
4
 
5
- const std::string traces_to_string(Backtraces traces, std::string indent) {
5
+ const sass::string traces_to_string(Backtraces traces, sass::string indent) {
6
6
 
7
- std::stringstream ss;
8
- std::string cwd(File::get_cwd());
7
+ sass::ostream ss;
8
+ sass::string cwd(File::get_cwd());
9
9
 
10
10
  bool first = true;
11
11
  size_t i_beg = traces.size() - 1;
12
- size_t i_end = std::string::npos;
12
+ size_t i_end = sass::string::npos;
13
13
  for (size_t i = i_beg; i != i_end; i --) {
14
14
 
15
15
  const Backtrace& trace = traces[i];
16
16
 
17
17
  // make path relative to the current directory
18
- std::string rel_path(File::abs2rel(trace.pstate.path, cwd, cwd));
18
+ sass::string rel_path(File::abs2rel(trace.pstate.getPath(), cwd, cwd));
19
19
 
20
20
  // skip functions on error cases (unsure why ruby sass does this)
21
21
  // if (trace.caller.substr(0, 6) == ", in f") continue;
@@ -23,9 +23,9 @@ namespace Sass {
23
23
  if (first) {
24
24
  ss << indent;
25
25
  ss << "on line ";
26
- ss << trace.pstate.line + 1;
26
+ ss << trace.pstate.getLine();
27
27
  ss << ":";
28
- ss << trace.pstate.column + 1;
28
+ ss << trace.pstate.getColumn();
29
29
  ss << " of " << rel_path;
30
30
  // ss << trace.caller;
31
31
  first = false;
@@ -34,9 +34,9 @@ namespace Sass {
34
34
  ss << std::endl;
35
35
  ss << indent;
36
36
  ss << "from line ";
37
- ss << trace.pstate.line + 1;
37
+ ss << trace.pstate.getLine();
38
38
  ss << ":";
39
- ss << trace.pstate.column + 1;
39
+ ss << trace.pstate.getColumn();
40
40
  ss << " of " << rel_path;
41
41
  }
42
42
 
@@ -10,19 +10,19 @@ namespace Sass {
10
10
 
11
11
  struct Backtrace {
12
12
 
13
- ParserState pstate;
14
- std::string caller;
13
+ SourceSpan pstate;
14
+ sass::string caller;
15
15
 
16
- Backtrace(ParserState pstate, std::string c = "")
16
+ Backtrace(SourceSpan pstate, sass::string c = "")
17
17
  : pstate(pstate),
18
18
  caller(c)
19
19
  { }
20
20
 
21
21
  };
22
22
 
23
- typedef std::vector<Backtrace> Backtraces;
23
+ typedef sass::vector<Backtrace> Backtraces;
24
24
 
25
- const std::string traces_to_string(Backtraces traces, std::string indent = "\t");
25
+ const sass::string traces_to_string(Backtraces traces, sass::string indent = "\t");
26
26
 
27
27
  }
28
28
 
@@ -6,9 +6,9 @@
6
6
 
7
7
  namespace Sass {
8
8
 
9
- std::string Base64VLQ::encode(const int number) const
9
+ sass::string Base64VLQ::encode(const int number) const
10
10
  {
11
- std::string encoded = "";
11
+ sass::string encoded = "";
12
12
 
13
13
  int vlq = to_vlq_signed(number);
14
14
 
@@ -9,7 +9,7 @@ namespace Sass {
9
9
 
10
10
  public:
11
11
 
12
- std::string encode(const int number) const;
12
+ sass::string encode(const int number) const;
13
13
 
14
14
  private:
15
15