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
@@ -1,99 +1,83 @@
1
1
  // sass.hpp must go before all system headers to get the
2
2
  // __EXTENSIONS__ fix on Solaris.
3
3
  #include "sass.hpp"
4
-
5
4
  #include "ast.hpp"
6
- #include "context.hpp"
7
- #include "node.hpp"
8
- #include "eval.hpp"
9
- #include "extend.hpp"
10
- #include "emitter.hpp"
11
- #include "color_maps.hpp"
12
- #include "ast_fwd_decl.hpp"
13
- #include <set>
14
- #include <iomanip>
15
- #include <iostream>
16
- #include <algorithm>
17
- #include <functional>
18
- #include <cctype>
19
- #include <locale>
20
-
21
- #include "ast_values.hpp"
5
+
22
6
 
23
7
  namespace Sass {
24
8
 
25
9
  /////////////////////////////////////////////////////////////////////////
26
10
  /////////////////////////////////////////////////////////////////////////
27
11
 
28
- Supports_Block::Supports_Block(ParserState pstate, Supports_Condition_Obj condition, Block_Obj block)
29
- : Has_Block(pstate, block), condition_(condition)
12
+ SupportsRule::SupportsRule(SourceSpan pstate, SupportsConditionObj condition, Block_Obj block)
13
+ : ParentStatement(pstate, block), condition_(condition)
30
14
  { statement_type(SUPPORTS); }
31
- Supports_Block::Supports_Block(const Supports_Block* ptr)
32
- : Has_Block(ptr), condition_(ptr->condition_)
15
+ SupportsRule::SupportsRule(const SupportsRule* ptr)
16
+ : ParentStatement(ptr), condition_(ptr->condition_)
33
17
  { statement_type(SUPPORTS); }
34
- bool Supports_Block::bubbles() { return true; }
18
+ bool SupportsRule::bubbles() { return true; }
35
19
 
36
20
  /////////////////////////////////////////////////////////////////////////
37
21
  /////////////////////////////////////////////////////////////////////////
38
22
 
39
- Supports_Condition::Supports_Condition(ParserState pstate)
23
+ SupportsCondition::SupportsCondition(SourceSpan pstate)
40
24
  : Expression(pstate)
41
25
  { }
42
26
 
43
- Supports_Condition::Supports_Condition(const Supports_Condition* ptr)
27
+ SupportsCondition::SupportsCondition(const SupportsCondition* ptr)
44
28
  : Expression(ptr)
45
29
  { }
46
30
 
47
31
  /////////////////////////////////////////////////////////////////////////
48
32
  /////////////////////////////////////////////////////////////////////////
49
33
 
50
- Supports_Operator::Supports_Operator(ParserState pstate, Supports_Condition_Obj l, Supports_Condition_Obj r, Operand o)
51
- : Supports_Condition(pstate), left_(l), right_(r), operand_(o)
34
+ SupportsOperation::SupportsOperation(SourceSpan pstate, SupportsConditionObj l, SupportsConditionObj r, Operand o)
35
+ : SupportsCondition(pstate), left_(l), right_(r), operand_(o)
52
36
  { }
53
- Supports_Operator::Supports_Operator(const Supports_Operator* ptr)
54
- : Supports_Condition(ptr),
37
+ SupportsOperation::SupportsOperation(const SupportsOperation* ptr)
38
+ : SupportsCondition(ptr),
55
39
  left_(ptr->left_),
56
40
  right_(ptr->right_),
57
41
  operand_(ptr->operand_)
58
42
  { }
59
43
 
60
- bool Supports_Operator::needs_parens(Supports_Condition_Obj cond) const
44
+ bool SupportsOperation::needs_parens(SupportsConditionObj cond) const
61
45
  {
62
- if (Supports_Operator_Obj op = Cast<Supports_Operator>(cond)) {
46
+ if (SupportsOperationObj op = Cast<SupportsOperation>(cond)) {
63
47
  return op->operand() != operand();
64
48
  }
65
- return Cast<Supports_Negation>(cond) != NULL;
49
+ return Cast<SupportsNegation>(cond) != NULL;
66
50
  }
67
51
 
68
52
  /////////////////////////////////////////////////////////////////////////
69
53
  /////////////////////////////////////////////////////////////////////////
70
54
 
71
- Supports_Negation::Supports_Negation(ParserState pstate, Supports_Condition_Obj c)
72
- : Supports_Condition(pstate), condition_(c)
55
+ SupportsNegation::SupportsNegation(SourceSpan pstate, SupportsConditionObj c)
56
+ : SupportsCondition(pstate), condition_(c)
73
57
  { }
74
- Supports_Negation::Supports_Negation(const Supports_Negation* ptr)
75
- : Supports_Condition(ptr), condition_(ptr->condition_)
58
+ SupportsNegation::SupportsNegation(const SupportsNegation* ptr)
59
+ : SupportsCondition(ptr), condition_(ptr->condition_)
76
60
  { }
77
61
 
78
- bool Supports_Negation::needs_parens(Supports_Condition_Obj cond) const
62
+ bool SupportsNegation::needs_parens(SupportsConditionObj cond) const
79
63
  {
80
- return Cast<Supports_Negation>(cond) ||
81
- Cast<Supports_Operator>(cond);
64
+ return Cast<SupportsNegation>(cond) ||
65
+ Cast<SupportsOperation>(cond);
82
66
  }
83
67
 
84
68
  /////////////////////////////////////////////////////////////////////////
85
69
  /////////////////////////////////////////////////////////////////////////
86
70
 
87
- Supports_Declaration::Supports_Declaration(ParserState pstate, Expression_Obj f, Expression_Obj v)
88
- : Supports_Condition(pstate), feature_(f), value_(v)
71
+ SupportsDeclaration::SupportsDeclaration(SourceSpan pstate, ExpressionObj f, ExpressionObj v)
72
+ : SupportsCondition(pstate), feature_(f), value_(v)
89
73
  { }
90
- Supports_Declaration::Supports_Declaration(const Supports_Declaration* ptr)
91
- : Supports_Condition(ptr),
74
+ SupportsDeclaration::SupportsDeclaration(const SupportsDeclaration* ptr)
75
+ : SupportsCondition(ptr),
92
76
  feature_(ptr->feature_),
93
77
  value_(ptr->value_)
94
78
  { }
95
79
 
96
- bool Supports_Declaration::needs_parens(Supports_Condition_Obj cond) const
80
+ bool SupportsDeclaration::needs_parens(SupportsConditionObj cond) const
97
81
  {
98
82
  return false;
99
83
  }
@@ -101,15 +85,15 @@ namespace Sass {
101
85
  /////////////////////////////////////////////////////////////////////////
102
86
  /////////////////////////////////////////////////////////////////////////
103
87
 
104
- Supports_Interpolation::Supports_Interpolation(ParserState pstate, Expression_Obj v)
105
- : Supports_Condition(pstate), value_(v)
88
+ Supports_Interpolation::Supports_Interpolation(SourceSpan pstate, ExpressionObj v)
89
+ : SupportsCondition(pstate), value_(v)
106
90
  { }
107
91
  Supports_Interpolation::Supports_Interpolation(const Supports_Interpolation* ptr)
108
- : Supports_Condition(ptr),
92
+ : SupportsCondition(ptr),
109
93
  value_(ptr->value_)
110
94
  { }
111
95
 
112
- bool Supports_Interpolation::needs_parens(Supports_Condition_Obj cond) const
96
+ bool Supports_Interpolation::needs_parens(SupportsConditionObj cond) const
113
97
  {
114
98
  return false;
115
99
  }
@@ -117,11 +101,11 @@ namespace Sass {
117
101
  /////////////////////////////////////////////////////////////////////////
118
102
  /////////////////////////////////////////////////////////////////////////
119
103
 
120
- IMPLEMENT_AST_OPERATORS(Supports_Block);
121
- IMPLEMENT_AST_OPERATORS(Supports_Condition);
122
- IMPLEMENT_AST_OPERATORS(Supports_Operator);
123
- IMPLEMENT_AST_OPERATORS(Supports_Negation);
124
- IMPLEMENT_AST_OPERATORS(Supports_Declaration);
104
+ IMPLEMENT_AST_OPERATORS(SupportsRule);
105
+ IMPLEMENT_AST_OPERATORS(SupportsCondition);
106
+ IMPLEMENT_AST_OPERATORS(SupportsOperation);
107
+ IMPLEMENT_AST_OPERATORS(SupportsNegation);
108
+ IMPLEMENT_AST_OPERATORS(SupportsDeclaration);
125
109
  IMPLEMENT_AST_OPERATORS(Supports_Interpolation);
126
110
 
127
111
  /////////////////////////////////////////////////////////////////////////
@@ -39,79 +39,79 @@ namespace Sass {
39
39
  ////////////////////
40
40
  // `@supports` rule.
41
41
  ////////////////////
42
- class Supports_Block : public Has_Block {
43
- ADD_PROPERTY(Supports_Condition_Obj, condition)
42
+ class SupportsRule : public ParentStatement {
43
+ ADD_PROPERTY(SupportsConditionObj, condition)
44
44
  public:
45
- Supports_Block(ParserState pstate, Supports_Condition_Obj condition, Block_Obj block = {});
45
+ SupportsRule(SourceSpan pstate, SupportsConditionObj condition, Block_Obj block = {});
46
46
  bool bubbles() override;
47
- ATTACH_AST_OPERATIONS(Supports_Block)
47
+ ATTACH_AST_OPERATIONS(SupportsRule)
48
48
  ATTACH_CRTP_PERFORM_METHODS()
49
49
  };
50
50
 
51
51
  //////////////////////////////////////////////////////
52
52
  // The abstract superclass of all Supports conditions.
53
53
  //////////////////////////////////////////////////////
54
- class Supports_Condition : public Expression {
54
+ class SupportsCondition : public Expression {
55
55
  public:
56
- Supports_Condition(ParserState pstate);
57
- virtual bool needs_parens(Supports_Condition_Obj cond) const { return false; }
58
- ATTACH_AST_OPERATIONS(Supports_Condition)
56
+ SupportsCondition(SourceSpan pstate);
57
+ virtual bool needs_parens(SupportsConditionObj cond) const { return false; }
58
+ ATTACH_AST_OPERATIONS(SupportsCondition)
59
59
  ATTACH_CRTP_PERFORM_METHODS()
60
60
  };
61
61
 
62
62
  ////////////////////////////////////////////////////////////
63
63
  // An operator condition (e.g. `CONDITION1 and CONDITION2`).
64
64
  ////////////////////////////////////////////////////////////
65
- class Supports_Operator : public Supports_Condition {
65
+ class SupportsOperation : public SupportsCondition {
66
66
  public:
67
67
  enum Operand { AND, OR };
68
68
  private:
69
- ADD_PROPERTY(Supports_Condition_Obj, left);
70
- ADD_PROPERTY(Supports_Condition_Obj, right);
69
+ ADD_PROPERTY(SupportsConditionObj, left);
70
+ ADD_PROPERTY(SupportsConditionObj, right);
71
71
  ADD_PROPERTY(Operand, operand);
72
72
  public:
73
- Supports_Operator(ParserState pstate, Supports_Condition_Obj l, Supports_Condition_Obj r, Operand o);
74
- virtual bool needs_parens(Supports_Condition_Obj cond) const override;
75
- ATTACH_AST_OPERATIONS(Supports_Operator)
73
+ SupportsOperation(SourceSpan pstate, SupportsConditionObj l, SupportsConditionObj r, Operand o);
74
+ virtual bool needs_parens(SupportsConditionObj cond) const override;
75
+ ATTACH_AST_OPERATIONS(SupportsOperation)
76
76
  ATTACH_CRTP_PERFORM_METHODS()
77
77
  };
78
78
 
79
79
  //////////////////////////////////////////
80
80
  // A negation condition (`not CONDITION`).
81
81
  //////////////////////////////////////////
82
- class Supports_Negation : public Supports_Condition {
82
+ class SupportsNegation : public SupportsCondition {
83
83
  private:
84
- ADD_PROPERTY(Supports_Condition_Obj, condition);
84
+ ADD_PROPERTY(SupportsConditionObj, condition);
85
85
  public:
86
- Supports_Negation(ParserState pstate, Supports_Condition_Obj c);
87
- virtual bool needs_parens(Supports_Condition_Obj cond) const override;
88
- ATTACH_AST_OPERATIONS(Supports_Negation)
86
+ SupportsNegation(SourceSpan pstate, SupportsConditionObj c);
87
+ virtual bool needs_parens(SupportsConditionObj cond) const override;
88
+ ATTACH_AST_OPERATIONS(SupportsNegation)
89
89
  ATTACH_CRTP_PERFORM_METHODS()
90
90
  };
91
91
 
92
92
  /////////////////////////////////////////////////////
93
93
  // A declaration condition (e.g. `(feature: value)`).
94
94
  /////////////////////////////////////////////////////
95
- class Supports_Declaration : public Supports_Condition {
95
+ class SupportsDeclaration : public SupportsCondition {
96
96
  private:
97
- ADD_PROPERTY(Expression_Obj, feature);
98
- ADD_PROPERTY(Expression_Obj, value);
97
+ ADD_PROPERTY(ExpressionObj, feature);
98
+ ADD_PROPERTY(ExpressionObj, value);
99
99
  public:
100
- Supports_Declaration(ParserState pstate, Expression_Obj f, Expression_Obj v);
101
- virtual bool needs_parens(Supports_Condition_Obj cond) const override;
102
- ATTACH_AST_OPERATIONS(Supports_Declaration)
100
+ SupportsDeclaration(SourceSpan pstate, ExpressionObj f, ExpressionObj v);
101
+ virtual bool needs_parens(SupportsConditionObj cond) const override;
102
+ ATTACH_AST_OPERATIONS(SupportsDeclaration)
103
103
  ATTACH_CRTP_PERFORM_METHODS()
104
104
  };
105
105
 
106
106
  ///////////////////////////////////////////////
107
107
  // An interpolation condition (e.g. `#{$var}`).
108
108
  ///////////////////////////////////////////////
109
- class Supports_Interpolation : public Supports_Condition {
109
+ class Supports_Interpolation : public SupportsCondition {
110
110
  private:
111
- ADD_PROPERTY(Expression_Obj, value);
111
+ ADD_PROPERTY(ExpressionObj, value);
112
112
  public:
113
- Supports_Interpolation(ParserState pstate, Expression_Obj v);
114
- virtual bool needs_parens(Supports_Condition_Obj cond) const override;
113
+ Supports_Interpolation(SourceSpan pstate, ExpressionObj v);
114
+ virtual bool needs_parens(SupportsConditionObj cond) const override;
115
115
  ATTACH_AST_OPERATIONS(Supports_Interpolation)
116
116
  ATTACH_CRTP_PERFORM_METHODS()
117
117
  };