sassc 2.2.1 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
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
  };