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,7 +1,11 @@
1
1
  #ifndef SASS_EVAL_H
2
2
  #define SASS_EVAL_H
3
3
 
4
+ // sass.hpp must go before all system headers to get the
5
+ // __EXTENSIONS__ fix on Solaris.
6
+ #include "sass.hpp"
4
7
  #include "ast.hpp"
8
+
5
9
  #include "context.hpp"
6
10
  #include "listize.hpp"
7
11
  #include "operation.hpp"
@@ -30,26 +34,22 @@ namespace Sass {
30
34
 
31
35
  Env* environment();
32
36
  EnvStack& env_stack();
33
- const std::string cwd();
34
- Selector_List_Obj selector();
37
+ const sass::string cwd();
35
38
  CalleeStack& callee_stack();
36
- SelectorStack& selector_stack();
37
- bool& old_at_root_without_rule();
38
39
  struct Sass_Inspect_Options& options();
39
- struct Sass_Inspect_Options options2();
40
40
  struct Sass_Compiler* compiler();
41
41
 
42
42
  // for evaluating function bodies
43
43
  Expression* operator()(Block*);
44
44
  Expression* operator()(Assignment*);
45
45
  Expression* operator()(If*);
46
- Expression* operator()(For*);
47
- Expression* operator()(Each*);
48
- Expression* operator()(While*);
46
+ Expression* operator()(ForRule*);
47
+ Expression* operator()(EachRule*);
48
+ Expression* operator()(WhileRule*);
49
49
  Expression* operator()(Return*);
50
- Expression* operator()(Warning*);
51
- Expression* operator()(Error*);
52
- Expression* operator()(Debug*);
50
+ Expression* operator()(WarningRule*);
51
+ Expression* operator()(ErrorRule*);
52
+ Expression* operator()(DebugRule*);
53
53
 
54
54
  Expression* operator()(List*);
55
55
  Expression* operator()(Map*);
@@ -64,13 +64,12 @@ namespace Sass {
64
64
  Expression* operator()(String_Schema*);
65
65
  Expression* operator()(String_Quoted*);
66
66
  Expression* operator()(String_Constant*);
67
- // Expression* operator()(Selector_List*);
68
67
  Media_Query* operator()(Media_Query*);
69
68
  Expression* operator()(Media_Query_Expression*);
70
69
  Expression* operator()(At_Root_Query*);
71
- Expression* operator()(Supports_Operator*);
72
- Expression* operator()(Supports_Negation*);
73
- Expression* operator()(Supports_Declaration*);
70
+ Expression* operator()(SupportsOperation*);
71
+ Expression* operator()(SupportsNegation*);
72
+ Expression* operator()(SupportsDeclaration*);
74
73
  Expression* operator()(Supports_Interpolation*);
75
74
  Expression* operator()(Null*);
76
75
  Expression* operator()(Argument*);
@@ -78,23 +77,22 @@ namespace Sass {
78
77
  Expression* operator()(Comment*);
79
78
 
80
79
  // these will return selectors
81
- Selector_List* operator()(Selector_List*);
82
- Selector_List* operator()(Complex_Selector*);
83
- Compound_Selector* operator()(Compound_Selector*);
84
- Simple_Selector* operator()(Simple_Selector* s);
85
- Wrapped_Selector* operator()(Wrapped_Selector* s);
80
+ SelectorList* operator()(SelectorList*);
81
+ SelectorList* operator()(ComplexSelector*);
82
+ CompoundSelector* operator()(CompoundSelector*);
83
+ SelectorComponent* operator()(SelectorComponent*);
84
+ SimpleSelector* operator()(SimpleSelector* s);
85
+ PseudoSelector* operator()(PseudoSelector* s);
86
86
 
87
87
  // they don't have any specific implementation (yet)
88
- Id_Selector* operator()(Id_Selector* s) { return s; };
89
- Class_Selector* operator()(Class_Selector* s) { return s; };
90
- Pseudo_Selector* operator()(Pseudo_Selector* s) { return s; };
91
- Type_Selector* operator()(Type_Selector* s) { return s; };
92
- Attribute_Selector* operator()(Attribute_Selector* s) { return s; };
93
- Placeholder_Selector* operator()(Placeholder_Selector* s) { return s; };
88
+ IDSelector* operator()(IDSelector* s) { return s; };
89
+ ClassSelector* operator()(ClassSelector* s) { return s; };
90
+ TypeSelector* operator()(TypeSelector* s) { return s; };
91
+ AttributeSelector* operator()(AttributeSelector* s) { return s; };
92
+ PlaceholderSelector* operator()(PlaceholderSelector* s) { return s; };
94
93
 
95
94
  // actual evaluated selectors
96
- Selector_List* operator()(Selector_Schema*);
97
- Expression* operator()(Parent_Selector*);
95
+ SelectorList* operator()(Selector_Schema*);
98
96
  Expression* operator()(Parent_Reference*);
99
97
 
100
98
  // generic fallback
@@ -103,7 +101,7 @@ namespace Sass {
103
101
  { return Cast<Expression>(x); }
104
102
 
105
103
  private:
106
- void interpolation(Context& ctx, std::string& res, Expression_Obj ex, bool into_quotes, bool was_itpl = false);
104
+ void interpolation(Context& ctx, sass::string& res, ExpressionObj ex, bool into_quotes, bool was_itpl = false);
107
105
 
108
106
  };
109
107
 
@@ -0,0 +1,75 @@
1
+ // sass.hpp must go before all system headers to get the
2
+ // __EXTENSIONS__ fix on Solaris.
3
+ #include "sass.hpp"
4
+ #include "expand.hpp"
5
+ #include "eval.hpp"
6
+ #include "ast.hpp"
7
+
8
+
9
+ namespace Sass {
10
+
11
+ SelectorList* Eval::operator()(SelectorList* s)
12
+ {
13
+ sass::vector<SelectorListObj> rv;
14
+ SelectorListObj sl = SASS_MEMORY_NEW(SelectorList, s->pstate());
15
+ for (size_t i = 0, iL = s->length(); i < iL; ++i) {
16
+ rv.push_back(operator()(s->get(i)));
17
+ }
18
+
19
+ // we should actually permutate parent first
20
+ // but here we have permutated the selector first
21
+ size_t round = 0;
22
+ while (round != sass::string::npos) {
23
+ bool abort = true;
24
+ for (size_t i = 0, iL = rv.size(); i < iL; ++i) {
25
+ if (rv[i]->length() > round) {
26
+ sl->append((*rv[i])[round]);
27
+ abort = false;
28
+ }
29
+ }
30
+ if (abort) {
31
+ round = sass::string::npos;
32
+ }
33
+ else {
34
+ ++round;
35
+ }
36
+
37
+ }
38
+ return sl.detach();
39
+ }
40
+
41
+ SelectorComponent* Eval::operator()(SelectorComponent* s)
42
+ {
43
+ return {};
44
+ }
45
+
46
+ SelectorList* Eval::operator()(ComplexSelector* s)
47
+ {
48
+ bool implicit_parent = !exp.old_at_root_without_rule;
49
+ if (is_in_selector_schema) exp.pushNullSelector();
50
+ SelectorListObj other = s->resolve_parent_refs(
51
+ exp.getOriginalStack(), traces, implicit_parent);
52
+ if (is_in_selector_schema) exp.popNullSelector();
53
+
54
+ for (size_t i = 0; i < other->length(); i++) {
55
+ ComplexSelectorObj sel = other->at(i);
56
+ for (size_t n = 0; n < sel->length(); n++) {
57
+ if (CompoundSelectorObj comp = Cast<CompoundSelector>(sel->at(n))) {
58
+ sel->at(n) = operator()(comp);
59
+ }
60
+ }
61
+ }
62
+
63
+ return other.detach();
64
+ }
65
+
66
+ CompoundSelector* Eval::operator()(CompoundSelector* s)
67
+ {
68
+ for (size_t i = 0; i < s->length(); i++) {
69
+ SimpleSelector* ss = s->at(i);
70
+ // skip parents here (called via resolve_parent_refs)
71
+ s->at(i) = Cast<SimpleSelector>(ss->perform(this));
72
+ }
73
+ return s;
74
+ }
75
+ }