sassc 2.0.1 → 2.1.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (200) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.gitmodules +1 -1
  4. data/.travis.yml +7 -3
  5. data/CHANGELOG.md +3 -0
  6. data/CODE_OF_CONDUCT.md +1 -1
  7. data/README.md +1 -1
  8. data/Rakefile +23 -8
  9. data/ext/extconf.rb +39 -0
  10. data/ext/libsass/.gitignore +1 -0
  11. data/ext/libsass/GNUmakefile.am +23 -39
  12. data/ext/libsass/Makefile +56 -91
  13. data/ext/libsass/Makefile.conf +16 -2
  14. data/ext/libsass/configure.ac +8 -12
  15. data/ext/libsass/include/sass/base.h +1 -0
  16. data/ext/libsass/include/sass/context.h +1 -1
  17. data/ext/libsass/src/GNUmakefile.am +1 -5
  18. data/ext/libsass/src/ast.cpp +747 -2010
  19. data/ext/libsass/src/ast.hpp +239 -2383
  20. data/ext/libsass/src/{to_c.cpp → ast2c.cpp} +22 -16
  21. data/ext/libsass/src/ast2c.hpp +39 -0
  22. data/ext/libsass/src/ast_def_macros.hpp +62 -10
  23. data/ext/libsass/src/ast_fwd_decl.cpp +1 -0
  24. data/ext/libsass/src/ast_fwd_decl.hpp +43 -165
  25. data/ext/libsass/src/ast_sel_cmp.cpp +909 -0
  26. data/ext/libsass/src/ast_sel_unify.cpp +280 -0
  27. data/ext/libsass/src/ast_selectors.cpp +1475 -0
  28. data/ext/libsass/src/ast_selectors.hpp +568 -0
  29. data/ext/libsass/src/ast_supports.cpp +130 -0
  30. data/ext/libsass/src/ast_supports.hpp +121 -0
  31. data/ext/libsass/src/ast_values.cpp +967 -0
  32. data/ext/libsass/src/ast_values.hpp +489 -0
  33. data/ext/libsass/src/backtrace.cpp +4 -0
  34. data/ext/libsass/src/base64vlq.cpp +3 -0
  35. data/ext/libsass/src/bind.cpp +18 -17
  36. data/ext/libsass/src/bind.hpp +3 -1
  37. data/ext/libsass/src/c2ast.cpp +64 -0
  38. data/ext/libsass/src/c2ast.hpp +14 -0
  39. data/ext/libsass/src/cencode.c +2 -2
  40. data/ext/libsass/src/check_nesting.cpp +52 -56
  41. data/ext/libsass/src/check_nesting.hpp +35 -34
  42. data/ext/libsass/src/color_maps.cpp +156 -153
  43. data/ext/libsass/src/color_maps.hpp +152 -152
  44. data/ext/libsass/src/constants.cpp +15 -0
  45. data/ext/libsass/src/constants.hpp +13 -0
  46. data/ext/libsass/src/context.cpp +24 -14
  47. data/ext/libsass/src/context.hpp +6 -6
  48. data/ext/libsass/src/cssize.cpp +69 -71
  49. data/ext/libsass/src/cssize.hpp +50 -50
  50. data/ext/libsass/src/debugger.hpp +117 -110
  51. data/ext/libsass/src/emitter.cpp +13 -12
  52. data/ext/libsass/src/emitter.hpp +13 -9
  53. data/ext/libsass/src/environment.cpp +15 -1
  54. data/ext/libsass/src/environment.hpp +6 -0
  55. data/ext/libsass/src/error_handling.cpp +36 -59
  56. data/ext/libsass/src/error_handling.hpp +29 -16
  57. data/ext/libsass/src/eval.cpp +302 -323
  58. data/ext/libsass/src/eval.hpp +64 -55
  59. data/ext/libsass/src/expand.cpp +94 -88
  60. data/ext/libsass/src/expand.hpp +33 -37
  61. data/ext/libsass/src/extend.cpp +38 -36
  62. data/ext/libsass/src/extend.hpp +15 -15
  63. data/ext/libsass/src/file.cpp +34 -2
  64. data/ext/libsass/src/fn_colors.cpp +594 -0
  65. data/ext/libsass/src/fn_colors.hpp +85 -0
  66. data/ext/libsass/src/fn_lists.cpp +284 -0
  67. data/ext/libsass/src/fn_lists.hpp +34 -0
  68. data/ext/libsass/src/fn_maps.cpp +94 -0
  69. data/ext/libsass/src/fn_maps.hpp +30 -0
  70. data/ext/libsass/src/fn_miscs.cpp +256 -0
  71. data/ext/libsass/src/fn_miscs.hpp +40 -0
  72. data/ext/libsass/src/fn_numbers.cpp +220 -0
  73. data/ext/libsass/src/fn_numbers.hpp +45 -0
  74. data/ext/libsass/src/fn_selectors.cpp +235 -0
  75. data/ext/libsass/src/fn_selectors.hpp +35 -0
  76. data/ext/libsass/src/fn_strings.cpp +254 -0
  77. data/ext/libsass/src/fn_strings.hpp +34 -0
  78. data/ext/libsass/src/fn_utils.cpp +156 -0
  79. data/ext/libsass/src/fn_utils.hpp +56 -0
  80. data/ext/libsass/src/inspect.cpp +101 -152
  81. data/ext/libsass/src/inspect.hpp +69 -73
  82. data/ext/libsass/src/json.cpp +2 -2
  83. data/ext/libsass/src/lexer.cpp +6 -3
  84. data/ext/libsass/src/listize.cpp +9 -11
  85. data/ext/libsass/src/listize.hpp +11 -7
  86. data/ext/libsass/src/memory/SharedPtr.cpp +2 -83
  87. data/ext/libsass/src/memory/SharedPtr.hpp +127 -143
  88. data/ext/libsass/src/node.cpp +13 -10
  89. data/ext/libsass/src/node.hpp +3 -3
  90. data/ext/libsass/src/operation.hpp +184 -144
  91. data/ext/libsass/src/operators.cpp +43 -17
  92. data/ext/libsass/src/operators.hpp +5 -5
  93. data/ext/libsass/src/output.cpp +21 -18
  94. data/ext/libsass/src/output.hpp +14 -21
  95. data/ext/libsass/src/parser.cpp +215 -183
  96. data/ext/libsass/src/parser.hpp +28 -24
  97. data/ext/libsass/src/plugins.cpp +5 -1
  98. data/ext/libsass/src/position.cpp +3 -0
  99. data/ext/libsass/src/prelexer.cpp +9 -3
  100. data/ext/libsass/src/prelexer.hpp +9 -9
  101. data/ext/libsass/src/remove_placeholders.cpp +14 -11
  102. data/ext/libsass/src/remove_placeholders.hpp +8 -9
  103. data/ext/libsass/src/sass.cpp +9 -3
  104. data/ext/libsass/src/sass.hpp +12 -9
  105. data/ext/libsass/src/sass2scss.cpp +45 -14
  106. data/ext/libsass/src/sass_context.cpp +18 -15
  107. data/ext/libsass/src/sass_functions.cpp +6 -3
  108. data/ext/libsass/src/sass_functions.hpp +1 -1
  109. data/ext/libsass/src/sass_util.cpp +3 -0
  110. data/ext/libsass/src/sass_values.cpp +21 -13
  111. data/ext/libsass/src/source_map.cpp +5 -2
  112. data/ext/libsass/src/source_map.hpp +2 -2
  113. data/ext/libsass/src/subset_map.cpp +4 -1
  114. data/ext/libsass/src/to_value.cpp +23 -21
  115. data/ext/libsass/src/to_value.hpp +18 -22
  116. data/ext/libsass/src/units.cpp +4 -0
  117. data/ext/libsass/src/units.hpp +1 -0
  118. data/ext/libsass/src/utf8/checked.h +12 -10
  119. data/ext/libsass/src/utf8/core.h +3 -0
  120. data/ext/libsass/src/utf8_string.cpp +3 -0
  121. data/ext/libsass/src/util.cpp +67 -75
  122. data/ext/libsass/src/util.hpp +64 -19
  123. data/ext/libsass/src/util_string.cpp +75 -0
  124. data/ext/libsass/src/util_string.hpp +19 -0
  125. data/ext/libsass/src/values.cpp +22 -13
  126. data/ext/libsass/src/values.hpp +2 -2
  127. data/ext/libsass/win/libsass.targets +30 -4
  128. data/ext/libsass/win/libsass.vcxproj.filters +82 -4
  129. data/lib/sassc.rb +24 -0
  130. data/lib/sassc/engine.rb +2 -2
  131. data/lib/sassc/native.rb +8 -1
  132. data/lib/sassc/version.rb +1 -1
  133. data/sassc.gemspec +19 -11
  134. data/test/engine_test.rb +26 -1
  135. data/test/native_test.rb +1 -1
  136. metadata +66 -72
  137. data/ext/Rakefile +0 -3
  138. data/ext/libsass/.github/CONTRIBUTING.md +0 -65
  139. data/ext/libsass/.github/ISSUE_TEMPLATE.md +0 -54
  140. data/ext/libsass/.travis.yml +0 -64
  141. data/ext/libsass/Readme.md +0 -104
  142. data/ext/libsass/SECURITY.md +0 -10
  143. data/ext/libsass/appveyor.yml +0 -91
  144. data/ext/libsass/docs/README.md +0 -20
  145. data/ext/libsass/docs/api-context-example.md +0 -45
  146. data/ext/libsass/docs/api-context-internal.md +0 -163
  147. data/ext/libsass/docs/api-context.md +0 -295
  148. data/ext/libsass/docs/api-doc.md +0 -215
  149. data/ext/libsass/docs/api-function-example.md +0 -67
  150. data/ext/libsass/docs/api-function-internal.md +0 -8
  151. data/ext/libsass/docs/api-function.md +0 -74
  152. data/ext/libsass/docs/api-importer-example.md +0 -112
  153. data/ext/libsass/docs/api-importer-internal.md +0 -20
  154. data/ext/libsass/docs/api-importer.md +0 -86
  155. data/ext/libsass/docs/api-value-example.md +0 -55
  156. data/ext/libsass/docs/api-value-internal.md +0 -76
  157. data/ext/libsass/docs/api-value.md +0 -154
  158. data/ext/libsass/docs/build-on-darwin.md +0 -27
  159. data/ext/libsass/docs/build-on-gentoo.md +0 -55
  160. data/ext/libsass/docs/build-on-windows.md +0 -139
  161. data/ext/libsass/docs/build-shared-library.md +0 -35
  162. data/ext/libsass/docs/build-with-autotools.md +0 -78
  163. data/ext/libsass/docs/build-with-makefiles.md +0 -68
  164. data/ext/libsass/docs/build-with-mingw.md +0 -107
  165. data/ext/libsass/docs/build-with-visual-studio.md +0 -90
  166. data/ext/libsass/docs/build.md +0 -97
  167. data/ext/libsass/docs/compatibility-plan.md +0 -48
  168. data/ext/libsass/docs/contributing.md +0 -17
  169. data/ext/libsass/docs/custom-functions-internal.md +0 -122
  170. data/ext/libsass/docs/dev-ast-memory.md +0 -223
  171. data/ext/libsass/docs/implementations.md +0 -56
  172. data/ext/libsass/docs/plugins.md +0 -47
  173. data/ext/libsass/docs/setup-environment.md +0 -68
  174. data/ext/libsass/docs/source-map-internals.md +0 -51
  175. data/ext/libsass/docs/trace.md +0 -26
  176. data/ext/libsass/docs/triage.md +0 -17
  177. data/ext/libsass/docs/unicode.md +0 -39
  178. data/ext/libsass/extconf.rb +0 -6
  179. data/ext/libsass/script/bootstrap +0 -13
  180. data/ext/libsass/script/branding +0 -10
  181. data/ext/libsass/script/ci-build-libsass +0 -134
  182. data/ext/libsass/script/ci-build-plugin +0 -62
  183. data/ext/libsass/script/ci-install-compiler +0 -6
  184. data/ext/libsass/script/ci-install-deps +0 -20
  185. data/ext/libsass/script/ci-report-coverage +0 -42
  186. data/ext/libsass/script/spec +0 -5
  187. data/ext/libsass/script/tap-driver +0 -652
  188. data/ext/libsass/script/tap-runner +0 -1
  189. data/ext/libsass/script/test-leaks.pl +0 -103
  190. data/ext/libsass/src/functions.cpp +0 -2234
  191. data/ext/libsass/src/functions.hpp +0 -198
  192. data/ext/libsass/src/to_c.hpp +0 -39
  193. data/ext/libsass/test/test_node.cpp +0 -94
  194. data/ext/libsass/test/test_paths.cpp +0 -28
  195. data/ext/libsass/test/test_selector_difference.cpp +0 -25
  196. data/ext/libsass/test/test_specificity.cpp +0 -25
  197. data/ext/libsass/test/test_subset_map.cpp +0 -472
  198. data/ext/libsass/test/test_superselector.cpp +0 -69
  199. data/ext/libsass/test/test_unification.cpp +0 -31
  200. data/lib/tasks/libsass.rb +0 -33
@@ -1,198 +0,0 @@
1
- #ifndef SASS_FUNCTIONS_H
2
- #define SASS_FUNCTIONS_H
3
-
4
- #include "listize.hpp"
5
- #include "position.hpp"
6
- #include "environment.hpp"
7
- #include "ast_fwd_decl.hpp"
8
- #include "sass/functions.h"
9
-
10
- #define BUILT_IN(name) Expression_Ptr \
11
- name(Env& env, Env& d_env, Context& ctx, Signature sig, ParserState pstate, Backtraces traces, std::vector<Selector_List_Obj> selector_stack)
12
-
13
- namespace Sass {
14
- struct Backtrace;
15
- typedef const char* Signature;
16
- typedef Expression_Ptr (*Native_Function)(Env&, Env&, Context&, Signature, ParserState, Backtraces, std::vector<Selector_List_Obj>);
17
-
18
- Definition_Ptr make_native_function(Signature, Native_Function, Context& ctx);
19
- Definition_Ptr make_c_function(Sass_Function_Entry c_func, Context& ctx);
20
-
21
- std::string function_name(Signature);
22
-
23
- namespace Functions {
24
-
25
- extern Signature rgb_sig;
26
- extern Signature rgba_4_sig;
27
- extern Signature rgba_2_sig;
28
- extern Signature red_sig;
29
- extern Signature green_sig;
30
- extern Signature blue_sig;
31
- extern Signature mix_sig;
32
- extern Signature hsl_sig;
33
- extern Signature hsla_sig;
34
- extern Signature hue_sig;
35
- extern Signature saturation_sig;
36
- extern Signature lightness_sig;
37
- extern Signature adjust_hue_sig;
38
- extern Signature lighten_sig;
39
- extern Signature darken_sig;
40
- extern Signature saturate_sig;
41
- extern Signature desaturate_sig;
42
- extern Signature grayscale_sig;
43
- extern Signature complement_sig;
44
- extern Signature invert_sig;
45
- extern Signature alpha_sig;
46
- extern Signature opacity_sig;
47
- extern Signature opacify_sig;
48
- extern Signature fade_in_sig;
49
- extern Signature transparentize_sig;
50
- extern Signature fade_out_sig;
51
- extern Signature adjust_color_sig;
52
- extern Signature scale_color_sig;
53
- extern Signature change_color_sig;
54
- extern Signature ie_hex_str_sig;
55
- extern Signature unquote_sig;
56
- extern Signature quote_sig;
57
- extern Signature str_length_sig;
58
- extern Signature str_insert_sig;
59
- extern Signature str_index_sig;
60
- extern Signature str_slice_sig;
61
- extern Signature to_upper_case_sig;
62
- extern Signature to_lower_case_sig;
63
- extern Signature percentage_sig;
64
- extern Signature round_sig;
65
- extern Signature ceil_sig;
66
- extern Signature floor_sig;
67
- extern Signature abs_sig;
68
- extern Signature min_sig;
69
- extern Signature max_sig;
70
- extern Signature inspect_sig;
71
- extern Signature random_sig;
72
- extern Signature length_sig;
73
- extern Signature nth_sig;
74
- extern Signature index_sig;
75
- extern Signature join_sig;
76
- extern Signature append_sig;
77
- extern Signature zip_sig;
78
- extern Signature list_separator_sig;
79
- extern Signature type_of_sig;
80
- extern Signature unit_sig;
81
- extern Signature unitless_sig;
82
- extern Signature comparable_sig;
83
- extern Signature variable_exists_sig;
84
- extern Signature global_variable_exists_sig;
85
- extern Signature function_exists_sig;
86
- extern Signature mixin_exists_sig;
87
- extern Signature feature_exists_sig;
88
- extern Signature call_sig;
89
- extern Signature not_sig;
90
- extern Signature if_sig;
91
- extern Signature map_get_sig;
92
- extern Signature map_merge_sig;
93
- extern Signature map_remove_sig;
94
- extern Signature map_keys_sig;
95
- extern Signature map_values_sig;
96
- extern Signature map_has_key_sig;
97
- extern Signature keywords_sig;
98
- extern Signature set_nth_sig;
99
- extern Signature unique_id_sig;
100
- extern Signature selector_nest_sig;
101
- extern Signature selector_append_sig;
102
- extern Signature selector_extend_sig;
103
- extern Signature selector_replace_sig;
104
- extern Signature selector_unify_sig;
105
- extern Signature is_superselector_sig;
106
- extern Signature simple_selectors_sig;
107
- extern Signature selector_parse_sig;
108
- extern Signature is_bracketed_sig;
109
- extern Signature content_exists_sig;
110
- extern Signature get_function_sig;
111
-
112
- BUILT_IN(rgb);
113
- BUILT_IN(rgba_4);
114
- BUILT_IN(rgba_2);
115
- BUILT_IN(red);
116
- BUILT_IN(green);
117
- BUILT_IN(blue);
118
- BUILT_IN(mix);
119
- BUILT_IN(hsl);
120
- BUILT_IN(hsla);
121
- BUILT_IN(hue);
122
- BUILT_IN(saturation);
123
- BUILT_IN(lightness);
124
- BUILT_IN(adjust_hue);
125
- BUILT_IN(lighten);
126
- BUILT_IN(darken);
127
- BUILT_IN(saturate);
128
- BUILT_IN(desaturate);
129
- BUILT_IN(grayscale);
130
- BUILT_IN(complement);
131
- BUILT_IN(invert);
132
- BUILT_IN(alpha);
133
- BUILT_IN(opacify);
134
- BUILT_IN(transparentize);
135
- BUILT_IN(adjust_color);
136
- BUILT_IN(scale_color);
137
- BUILT_IN(change_color);
138
- BUILT_IN(ie_hex_str);
139
- BUILT_IN(sass_unquote);
140
- BUILT_IN(sass_quote);
141
- BUILT_IN(str_length);
142
- BUILT_IN(str_insert);
143
- BUILT_IN(str_index);
144
- BUILT_IN(str_slice);
145
- BUILT_IN(to_upper_case);
146
- BUILT_IN(to_lower_case);
147
- BUILT_IN(percentage);
148
- BUILT_IN(round);
149
- BUILT_IN(ceil);
150
- BUILT_IN(floor);
151
- BUILT_IN(abs);
152
- BUILT_IN(min);
153
- BUILT_IN(max);
154
- BUILT_IN(inspect);
155
- BUILT_IN(random);
156
- BUILT_IN(length);
157
- BUILT_IN(nth);
158
- BUILT_IN(index);
159
- BUILT_IN(join);
160
- BUILT_IN(append);
161
- BUILT_IN(zip);
162
- BUILT_IN(list_separator);
163
- BUILT_IN(type_of);
164
- BUILT_IN(unit);
165
- BUILT_IN(unitless);
166
- BUILT_IN(comparable);
167
- BUILT_IN(variable_exists);
168
- BUILT_IN(global_variable_exists);
169
- BUILT_IN(function_exists);
170
- BUILT_IN(mixin_exists);
171
- BUILT_IN(feature_exists);
172
- BUILT_IN(call);
173
- BUILT_IN(sass_not);
174
- BUILT_IN(sass_if);
175
- BUILT_IN(map_get);
176
- BUILT_IN(map_merge);
177
- BUILT_IN(map_remove);
178
- BUILT_IN(map_keys);
179
- BUILT_IN(map_values);
180
- BUILT_IN(map_has_key);
181
- BUILT_IN(keywords);
182
- BUILT_IN(set_nth);
183
- BUILT_IN(unique_id);
184
- BUILT_IN(selector_nest);
185
- BUILT_IN(selector_append);
186
- BUILT_IN(selector_extend);
187
- BUILT_IN(selector_replace);
188
- BUILT_IN(selector_unify);
189
- BUILT_IN(is_superselector);
190
- BUILT_IN(simple_selectors);
191
- BUILT_IN(selector_parse);
192
- BUILT_IN(is_bracketed);
193
- BUILT_IN(content_exists);
194
- BUILT_IN(get_function);
195
- }
196
- }
197
-
198
- #endif
@@ -1,39 +0,0 @@
1
- #ifndef SASS_TO_C_H
2
- #define SASS_TO_C_H
3
-
4
- #include "ast_fwd_decl.hpp"
5
- #include "operation.hpp"
6
- #include "sass/values.h"
7
-
8
- namespace Sass {
9
-
10
- class To_C : public Operation_CRTP<union Sass_Value*, To_C> {
11
- // override this to define a catch-all
12
- union Sass_Value* fallback_impl(AST_Node_Ptr n);
13
-
14
- public:
15
-
16
- To_C() { }
17
- ~To_C() { }
18
-
19
- union Sass_Value* operator()(Boolean_Ptr);
20
- union Sass_Value* operator()(Number_Ptr);
21
- union Sass_Value* operator()(Color_Ptr);
22
- union Sass_Value* operator()(String_Constant_Ptr);
23
- union Sass_Value* operator()(String_Quoted_Ptr);
24
- union Sass_Value* operator()(Custom_Warning_Ptr);
25
- union Sass_Value* operator()(Custom_Error_Ptr);
26
- union Sass_Value* operator()(List_Ptr);
27
- union Sass_Value* operator()(Map_Ptr);
28
- union Sass_Value* operator()(Null_Ptr);
29
- union Sass_Value* operator()(Arguments_Ptr);
30
- union Sass_Value* operator()(Argument_Ptr);
31
-
32
- // dispatch to fallback implementation
33
- union Sass_Value* fallback(AST_Node_Ptr x)
34
- { return fallback_impl(x); }
35
- };
36
-
37
- }
38
-
39
- #endif
@@ -1,94 +0,0 @@
1
- #include <assert.h>
2
- #include <sstream>
3
-
4
- #include "node.hpp"
5
- #include "parser.hpp"
6
-
7
-
8
- #define STATIC_ARRAY_SIZE(array) (sizeof((array))/sizeof((array[0])))
9
-
10
-
11
- namespace Sass {
12
-
13
- Context ctx = Context::Data();
14
-
15
- const char* const ROUNDTRIP_TESTS[] = {
16
- NULL,
17
- "~",
18
- "CMPD",
19
- "~ CMPD",
20
- "CMPD >",
21
- "> > CMPD",
22
- "CMPD ~ ~",
23
- "> + CMPD1.CMPD2 > ~",
24
- "> + CMPD1.CMPD2 CMPD3.CMPD4 > ~",
25
- "+ CMPD1 CMPD2 ~ CMPD3 + CMPD4 > CMPD5 > ~"
26
- };
27
-
28
-
29
-
30
- static Complex_Selector* createComplexSelector(std::string src) {
31
- std::string temp(src);
32
- temp += ";";
33
- return (*Parser::from_c_str(temp.c_str(), ctx, "", Position()).parse_selector_list())[0];
34
- }
35
-
36
-
37
- void roundtripTest(const char* toTest) {
38
-
39
- // Create the initial selector
40
-
41
- Complex_Selector* pOrigSelector = NULL;
42
- if (toTest) {
43
- pOrigSelector = createComplexSelector(toTest);
44
- }
45
-
46
- std::string expected(pOrigSelector ? pOrigSelector->to_string() : "NULL");
47
-
48
-
49
- // Roundtrip the selector into a node and back
50
-
51
- Node node = complexSelectorToNode(pOrigSelector, ctx);
52
-
53
- std::stringstream nodeStringStream;
54
- nodeStringStream << node;
55
- std::string nodeString = nodeStringStream.str();
56
- cout << "ASNODE: " << node << endl;
57
-
58
- Complex_Selector* pNewSelector = nodeToComplexSelector(node, ctx);
59
-
60
- // Show the result
61
-
62
- std::string result(pNewSelector ? pNewSelector->to_string() : "NULL");
63
-
64
- cout << "SELECTOR: " << expected << endl;
65
- cout << "NEW SELECTOR: " << result << endl;
66
-
67
-
68
- // Test that they are equal using the equality operator
69
-
70
- assert( (!pOrigSelector && !pNewSelector ) || (pOrigSelector && pNewSelector) );
71
- if (pOrigSelector) {
72
- assert( *pOrigSelector == *pNewSelector );
73
- }
74
-
75
-
76
- // Test that they are equal by comparing the string versions of the selectors
77
-
78
- assert(expected == result);
79
-
80
- }
81
-
82
-
83
- int main() {
84
- for (int index = 0; index < STATIC_ARRAY_SIZE(ROUNDTRIP_TESTS); index++) {
85
- const char* const toTest = ROUNDTRIP_TESTS[index];
86
- cout << "\nINPUT STRING: " << (toTest ? toTest : "NULL") << endl;
87
- roundtripTest(toTest);
88
- }
89
-
90
- cout << "\nTesting Done.\n";
91
- }
92
-
93
-
94
- }
@@ -1,28 +0,0 @@
1
- #include <iostream>
2
- #include "../paths.hpp"
3
-
4
- using namespace Sass;
5
-
6
- template<typename T>
7
- std::vector<T>& operator<<(std::vector<T>& v, const T& e)
8
- {
9
- v.push_back(e);
10
- return v;
11
- }
12
-
13
- int main()
14
- {
15
- std::vector<int> v1, v2, v3;
16
- v1 << 1 << 2;
17
- v2 << 3;
18
- v3 << 4 << 5 << 6;
19
-
20
- std::vector<std::vector<int> > ss;
21
- ss << v1 << v2 << v3;
22
-
23
- std::vector<std::vector<int> > ps = paths(ss);
24
- for (size_t i = 0, S = ps.size(); i < S; ++i) {
25
- std::cout << vector_to_string(ps[i]) << std::endl;
26
- }
27
- return 0;
28
- }
@@ -1,25 +0,0 @@
1
- #include "../ast.hpp"
2
- #include "../context.hpp"
3
- #include "../parser.hpp"
4
- #include <string>
5
- #include <iostream>
6
-
7
- using namespace Sass;
8
-
9
- Context ctx = Context::Data();
10
-
11
- Compound_Selector* selector(std::string src)
12
- { return Parser::from_c_str(src.c_str(), ctx, "", Position()).parse_compound_selector(); }
13
-
14
- void diff(std::string s, std::string t)
15
- {
16
- std::cout << s << " - " << t << " = " << selector(s + ";")->minus(selector(t + ";"), ctx)->to_string() << std::endl;
17
- }
18
-
19
- int main()
20
- {
21
- diff(".a.b.c", ".c.b");
22
- diff(".a.b.c", ".fludge.b");
23
-
24
- return 0;
25
- }
@@ -1,25 +0,0 @@
1
- #include "../ast.hpp"
2
- #include "../context.hpp"
3
- #include "../parser.hpp"
4
- #include <string>
5
- #include <iostream>
6
-
7
- using namespace Sass;
8
-
9
- Context ctx = Context::Data();
10
-
11
- Selector* selector(std::string src)
12
- { return Parser::from_c_str(src.c_str(), ctx, "", Position()).parse_selector_list(); }
13
-
14
- void spec(std::string sel)
15
- { std::cout << sel << "\t::\t" << selector(sel + ";")->specificity() << std::endl; }
16
-
17
- int main()
18
- {
19
- spec("foo bar hux");
20
- spec(".foo .bar hux");
21
- spec("#foo .bar[hux='mux']");
22
- spec("a b c d e f");
23
-
24
- return 0;
25
- }
@@ -1,472 +0,0 @@
1
- #include <string>
2
- #include <iostream>
3
- #include <assert.h>
4
- #include "../subset_map.hpp"
5
-
6
- Subset_Map<std::string, std::string> ssm;
7
-
8
- string toString(std::vector<std::string> v);
9
- string toString(std::vector<std::pair<std::string, std::vector<std::string>>> v);
10
- void assertEqual(string std::sExpected, std::string sResult);
11
-
12
- void setup() {
13
- ssm.clear();
14
-
15
- //@ssm[Set[1, 2]] = "Foo"
16
- std::vector<std::string> s1;
17
- s1.push_back("1");
18
- s1.push_back("2");
19
- ssm.put(s1, "Foo");
20
-
21
- //@ssm[Set["fizz", "fazz"]] = "Bar"
22
- std::vector<std::string> s2;
23
- s2.push_back("fizz");
24
- s2.push_back("fazz");
25
- ssm.put(s2, "Bar");
26
-
27
- //@ssm[Set[:foo, :bar]] = "Baz"
28
- std::vector<std::string> s3;
29
- s3.push_back(":foo");
30
- s3.push_back(":bar");
31
- ssm.put(s3, "Baz");
32
-
33
- //@ssm[Set[:foo, :bar, :baz]] = "Bang"
34
- std::vector<std::string> s4;
35
- s4.push_back(":foo");
36
- s4.push_back(":bar");
37
- s4.push_back(":baz");
38
- ssm.put(s4, "Bang");
39
-
40
- //@ssm[Set[:bip, :bop, :blip]] = "Qux"
41
- std::vector<std::string> s5;
42
- s5.push_back(":bip");
43
- s5.push_back(":bop");
44
- s5.push_back(":blip");
45
- ssm.put(s5, "Qux");
46
-
47
- //@ssm[Set[:bip, :bop]] = "Thram"
48
- std::vector<std::string> s6;
49
- s6.push_back(":bip");
50
- s6.push_back(":bop");
51
- ssm.put(s6, "Thram");
52
- }
53
-
54
- void testEqualKeys() {
55
- std::cout << "testEqualKeys" << std::endl;
56
-
57
- //assert_equal [["Foo", Set[1, 2]]], @ssm.get(Set[1, 2])
58
- std::vector<std::string> k1;
59
- k1.push_back("1");
60
- k1.push_back("2");
61
- assertEqual("[[Foo, Set[1, 2]]]", toString(ssm.get_kv(k1)));
62
-
63
- //assert_equal [["Bar", Set["fizz", "fazz"]]], @ssm.get(Set["fizz", "fazz"])
64
- std::vector<std::string> k2;
65
- k2.push_back("fizz");
66
- k2.push_back("fazz");
67
- assertEqual("[[Bar, Set[fizz, fazz]]]", toString(ssm.get_kv(k2)));
68
-
69
- std::cout << std::endl;
70
- }
71
-
72
- void testSubsetKeys() {
73
- std::cout << "testSubsetKeys" << std::endl;
74
-
75
- //assert_equal [["Foo", Set[1, 2]]], @ssm.get(Set[1, 2, "fuzz"])
76
- std::vector<std::string> k1;
77
- k1.push_back("1");
78
- k1.push_back("2");
79
- k1.push_back("fuzz");
80
- assertEqual("[[Foo, Set[1, 2]]]", toString(ssm.get_kv(k1)));
81
-
82
- //assert_equal [["Bar", Set["fizz", "fazz"]]], @ssm.get(Set["fizz", "fazz", 3])
83
- std::vector<std::string> k2;
84
- k2.push_back("fizz");
85
- k2.push_back("fazz");
86
- k2.push_back("3");
87
- assertEqual("[[Bar, Set[fizz, fazz]]]", toString(ssm.get_kv(k2)));
88
-
89
- std::cout << std::endl;
90
- }
91
-
92
- void testSupersetKeys() {
93
- std::cout << "testSupersetKeys" << std::endl;
94
-
95
- //assert_equal [], @ssm.get(Set[1])
96
- std::vector<std::string> k1;
97
- k1.push_back("1");
98
- assertEqual("[]", toString(ssm.get_kv(k1)));
99
-
100
- //assert_equal [], @ssm.get(Set[2])
101
- std::vector<std::string> k2;
102
- k2.push_back("2");
103
- assertEqual("[]", toString(ssm.get_kv(k2)));
104
-
105
- //assert_equal [], @ssm.get(Set["fizz"])
106
- std::vector<std::string> k3;
107
- k3.push_back("fizz");
108
- assertEqual("[]", toString(ssm.get_kv(k3)));
109
-
110
- //assert_equal [], @ssm.get(Set["fazz"])
111
- std::vector<std::string> k4;
112
- k4.push_back("fazz");
113
- assertEqual("[]", toString(ssm.get_kv(k4)));
114
-
115
- std::cout << std::endl;
116
- }
117
-
118
- void testDisjointKeys() {
119
- std::cout << "testDisjointKeys" << std::endl;
120
-
121
- //assert_equal [], @ssm.get(Set[3, 4])
122
- std::vector<std::string> k1;
123
- k1.push_back("3");
124
- k1.push_back("4");
125
- assertEqual("[]", toString(ssm.get_kv(k1)));
126
-
127
- //assert_equal [], @ssm.get(Set["fuzz", "frizz"])
128
- std::vector<std::string> k2;
129
- k2.push_back("fuzz");
130
- k2.push_back("frizz");
131
- assertEqual("[]", toString(ssm.get_kv(k2)));
132
-
133
- //assert_equal [], @ssm.get(Set["gran", 15])
134
- std::vector<std::string> k3;
135
- k3.push_back("gran");
136
- k3.push_back("15");
137
- assertEqual("[]", toString(ssm.get_kv(k3)));
138
-
139
- std::cout << std::endl;
140
- }
141
-
142
- void testSemiDisjointKeys() {
143
- std::cout << "testSemiDisjointKeys" << std::endl;
144
-
145
- //assert_equal [], @ssm.get(Set[2, 3])
146
- std::vector<std::string> k1;
147
- k1.push_back("2");
148
- k1.push_back("3");
149
- assertEqual("[]", toString(ssm.get_kv(k1)));
150
-
151
- //assert_equal [], @ssm.get(Set["fizz", "fuzz"])
152
- std::vector<std::string> k2;
153
- k2.push_back("fizz");
154
- k2.push_back("fuzz");
155
- assertEqual("[]", toString(ssm.get_kv(k2)));
156
-
157
- //assert_equal [], @ssm.get(Set[1, "fazz"])
158
- std::vector<std::string> k3;
159
- k3.push_back("1");
160
- k3.push_back("fazz");
161
- assertEqual("[]", toString(ssm.get_kv(k3)));
162
-
163
- std::cout << std::endl;
164
- }
165
-
166
- void testEmptyKeySet() {
167
- std::cout << "testEmptyKeySet" << std::endl;
168
-
169
- //assert_raises(ArgumentError) {@ssm[Set[]] = "Fail"}
170
- std::vector<std::string> s1;
171
- try {
172
- ssm.put(s1, "Fail");
173
- }
174
- catch (const char* &e) {
175
- assertEqual("internal error: subset map keys may not be empty", e);
176
- }
177
- }
178
-
179
- void testEmptyKeyGet() {
180
- std::cout << "testEmptyKeyGet" << std::endl;
181
-
182
- //assert_equal [], @ssm.get(Set[])
183
- std::vector<std::string> k1;
184
- assertEqual("[]", toString(ssm.get_kv(k1)));
185
-
186
- std::cout << std::endl;
187
- }
188
- void testMultipleSubsets() {
189
- std::cout << "testMultipleSubsets" << std::endl;
190
-
191
- //assert_equal [["Foo", Set[1, 2]], ["Bar", Set["fizz", "fazz"]]], @ssm.get(Set[1, 2, "fizz", "fazz"])
192
- std::vector<std::string> k1;
193
- k1.push_back("1");
194
- k1.push_back("2");
195
- k1.push_back("fizz");
196
- k1.push_back("fazz");
197
- assertEqual("[[Foo, Set[1, 2]], [Bar, Set[fizz, fazz]]]", toString(ssm.get_kv(k1)));
198
-
199
- //assert_equal [["Foo", Set[1, 2]], ["Bar", Set["fizz", "fazz"]]], @ssm.get(Set[1, 2, 3, "fizz", "fazz", "fuzz"])
200
- std::vector<std::string> k2;
201
- k2.push_back("1");
202
- k2.push_back("2");
203
- k2.push_back("3");
204
- k2.push_back("fizz");
205
- k2.push_back("fazz");
206
- k2.push_back("fuzz");
207
- assertEqual("[[Foo, Set[1, 2]], [Bar, Set[fizz, fazz]]]", toString(ssm.get_kv(k2)));
208
-
209
- //assert_equal [["Baz", Set[:foo, :bar]]], @ssm.get(Set[:foo, :bar])
210
- std::vector<std::string> k3;
211
- k3.push_back(":foo");
212
- k3.push_back(":bar");
213
- assertEqual("[[Baz, Set[:foo, :bar]]]", toString(ssm.get_kv(k3)));
214
-
215
- //assert_equal [["Baz", Set[:foo, :bar]], ["Bang", Set[:foo, :bar, :baz]]], @ssm.get(Set[:foo, :bar, :baz])
216
- std::vector<std::string> k4;
217
- k4.push_back(":foo");
218
- k4.push_back(":bar");
219
- k4.push_back(":baz");
220
- assertEqual("[[Baz, Set[:foo, :bar]], [Bang, Set[:foo, :bar, :baz]]]", toString(ssm.get_kv(k4)));
221
-
222
- std::cout << std::endl;
223
- }
224
- void testBracketBracket() {
225
- std::cout << "testBracketBracket" << std::endl;
226
-
227
- //assert_equal ["Foo"], @ssm[Set[1, 2, "fuzz"]]
228
- std::vector<std::string> k1;
229
- k1.push_back("1");
230
- k1.push_back("2");
231
- k1.push_back("fuzz");
232
- assertEqual("[Foo]", toString(ssm.get_v(k1)));
233
-
234
- //assert_equal ["Baz", "Bang"], @ssm[Set[:foo, :bar, :baz]]
235
- std::vector<std::string> k2;
236
- k2.push_back(":foo");
237
- k2.push_back(":bar");
238
- k2.push_back(":baz");
239
- assertEqual("[Baz, Bang]", toString(ssm.get_v(k2)));
240
-
241
- std::cout << std::endl;
242
- }
243
-
244
- void testKeyOrder() {
245
- std::cout << "testEqualKeys" << std::endl;
246
-
247
- //assert_equal [["Foo", Set[1, 2]]], @ssm.get(Set[2, 1])
248
- std::vector<std::string> k1;
249
- k1.push_back("2");
250
- k1.push_back("1");
251
- assertEqual("[[Foo, Set[1, 2]]]", toString(ssm.get_kv(k1)));
252
-
253
- std::cout << std::endl;
254
- }
255
-
256
- void testOrderPreserved() {
257
- std::cout << "testOrderPreserved" << std::endl;
258
- //@ssm[Set[10, 11, 12]] = 1
259
- std::vector<std::string> s1;
260
- s1.push_back("10");
261
- s1.push_back("11");
262
- s1.push_back("12");
263
- ssm.put(s1, "1");
264
-
265
- //@ssm[Set[10, 11]] = 2
266
- std::vector<std::string> s2;
267
- s2.push_back("10");
268
- s2.push_back("11");
269
- ssm.put(s2, "2");
270
-
271
- //@ssm[Set[11]] = 3
272
- std::vector<std::string> s3;
273
- s3.push_back("11");
274
- ssm.put(s3, "3");
275
-
276
- //@ssm[Set[11, 12]] = 4
277
- std::vector<std::string> s4;
278
- s4.push_back("11");
279
- s4.push_back("12");
280
- ssm.put(s4, "4");
281
-
282
- //@ssm[Set[9, 10, 11, 12, 13]] = 5
283
- std::vector<std::string> s5;
284
- s5.push_back("9");
285
- s5.push_back("10");
286
- s5.push_back("11");
287
- s5.push_back("12");
288
- s5.push_back("13");
289
- ssm.put(s5, "5");
290
-
291
- //@ssm[Set[10, 13]] = 6
292
- std::vector<std::string> s6;
293
- s6.push_back("10");
294
- s6.push_back("13");
295
- ssm.put(s6, "6");
296
-
297
- //assert_equal([[1, Set[10, 11, 12]], [2, Set[10, 11]], [3, Set[11]], [4, Set[11, 12]], [5, Set[9, 10, 11, 12, 13]], [6, Set[10, 13]]], @ssm.get(Set[9, 10, 11, 12, 13]))
298
- std::vector<std::string> k1;
299
- k1.push_back("9");
300
- k1.push_back("10");
301
- k1.push_back("11");
302
- k1.push_back("12");
303
- k1.push_back("13");
304
- assertEqual("[[1, Set[10, 11, 12]], [2, Set[10, 11]], [3, Set[11]], [4, Set[11, 12]], [5, Set[9, 10, 11, 12, 13]], [6, Set[10, 13]]]", toString(ssm.get_kv(k1)));
305
-
306
- std::cout << std::endl;
307
- }
308
- void testMultipleEqualValues() {
309
- std::cout << "testMultipleEqualValues" << std::endl;
310
- //@ssm[Set[11, 12]] = 1
311
- std::vector<std::string> s1;
312
- s1.push_back("11");
313
- s1.push_back("12");
314
- ssm.put(s1, "1");
315
-
316
- //@ssm[Set[12, 13]] = 2
317
- std::vector<std::string> s2;
318
- s2.push_back("12");
319
- s2.push_back("13");
320
- ssm.put(s2, "2");
321
-
322
- //@ssm[Set[13, 14]] = 1
323
- std::vector<std::string> s3;
324
- s3.push_back("13");
325
- s3.push_back("14");
326
- ssm.put(s3, "1");
327
-
328
- //@ssm[Set[14, 15]] = 1
329
- std::vector<std::string> s4;
330
- s4.push_back("14");
331
- s4.push_back("15");
332
- ssm.put(s4, "1");
333
-
334
- //assert_equal([[1, Set[11, 12]], [2, Set[12, 13]], [1, Set[13, 14]], [1, Set[14, 15]]], @ssm.get(Set[11, 12, 13, 14, 15]))
335
- std::vector<std::string> k1;
336
- k1.push_back("11");
337
- k1.push_back("12");
338
- k1.push_back("13");
339
- k1.push_back("14");
340
- k1.push_back("15");
341
- assertEqual("[[1, Set[11, 12]], [2, Set[12, 13]], [1, Set[13, 14]], [1, Set[14, 15]]]", toString(ssm.get_kv(k1)));
342
-
343
- std::cout << std::endl;
344
- }
345
-
346
- int main()
347
- {
348
- std::vector<std::string> s1;
349
- s1.push_back("1");
350
- s1.push_back("2");
351
-
352
- std::vector<std::string> s2;
353
- s2.push_back("2");
354
- s2.push_back("3");
355
-
356
- std::vector<std::string> s3;
357
- s3.push_back("3");
358
- s3.push_back("4");
359
-
360
- ssm.put(s1, "value1");
361
- ssm.put(s2, "value2");
362
- ssm.put(s3, "value3");
363
-
364
- std::vector<std::string> s4;
365
- s4.push_back("1");
366
- s4.push_back("2");
367
- s4.push_back("3");
368
-
369
- std::vector<std::pair<string, std::vector<std::string> > > fetched(ssm.get_kv(s4));
370
-
371
- std::cout << "PRINTING RESULTS:" << std::endl;
372
- for (size_t i = 0, S = fetched.size(); i < S; ++i) {
373
- std::cout << fetched[i].first << std::endl;
374
- }
375
-
376
- Subset_Map<string, string> ssm2;
377
- ssm2.put(s1, "foo");
378
- ssm2.put(s2, "bar");
379
- ssm2.put(s4, "hux");
380
-
381
- std::vector<std::pair<string, std::vector<std::string> > > fetched2(ssm2.get_kv(s4));
382
-
383
- std::cout << std::endl << "PRINTING RESULTS:" << std::endl;
384
- for (size_t i = 0, S = fetched2.size(); i < S; ++i) {
385
- std::cout << fetched2[i].first << std::endl;
386
- }
387
-
388
- std::cout << "TRYING ON A SELECTOR-LIKE OBJECT" << std::endl;
389
-
390
- Subset_Map<string, string> sel_ssm;
391
- std::vector<std::string> target;
392
- target.push_back("desk");
393
- target.push_back(".wood");
394
-
395
- std::vector<std::string> actual;
396
- actual.push_back("desk");
397
- actual.push_back(".wood");
398
- actual.push_back(".mine");
399
-
400
- sel_ssm.put(target, "has-aquarium");
401
- std::vector<std::pair<string, std::vector<std::string> > > fetched3(sel_ssm.get_kv(actual));
402
- std::cout << "RESULTS:" << std::endl;
403
- for (size_t i = 0, S = fetched3.size(); i < S; ++i) {
404
- std::cout << fetched3[i].first << std::endl;
405
- }
406
-
407
- std::cout << std::endl;
408
-
409
- // BEGIN PORTED RUBY TESTS FROM /test/sass/util/subset_map_test.rb
410
-
411
- setup();
412
- testEqualKeys();
413
- testSubsetKeys();
414
- testSupersetKeys();
415
- testDisjointKeys();
416
- testSemiDisjointKeys();
417
- testEmptyKeySet();
418
- testEmptyKeyGet();
419
- testMultipleSubsets();
420
- testBracketBracket();
421
- testKeyOrder();
422
-
423
- setup();
424
- testOrderPreserved();
425
-
426
- setup();
427
- testMultipleEqualValues();
428
-
429
- return 0;
430
- }
431
-
432
- string toString(std::vector<std::pair<string, std::vector<std::string>>> v)
433
- {
434
- std::stringstream buffer;
435
- buffer << "[";
436
- for (size_t i = 0, S = v.size(); i < S; ++i) {
437
- buffer << "[" << v[i].first;
438
- buffer << ", Set[";
439
- for (size_t j = 0, S = v[i].second.size(); j < S; ++j) {
440
- buffer << v[i].second[j];
441
- if (j < S-1) {
442
- buffer << ", ";
443
- }
444
- }
445
- buffer << "]]";
446
- if (i < S-1) {
447
- buffer << ", ";
448
- }
449
- }
450
- buffer << "]";
451
- return buffer.str();
452
- }
453
-
454
- string toString(std::vector<std::string> v)
455
- {
456
- std::stringstream buffer;
457
- buffer << "[";
458
- for (size_t i = 0, S = v.size(); i < S; ++i) {
459
- buffer << v[i];
460
- if (i < S-1) {
461
- buffer << ", ";
462
- }
463
- }
464
- buffer << "]";
465
- return buffer.str();
466
- }
467
-
468
- void assertEqual(string sExpected, string sResult) {
469
- std::cout << "Expected: " << sExpected << std::endl;
470
- std::cout << "Result: " << sResult << std::endl;
471
- assert(sExpected == sResult);
472
- }