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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.gitmodules +1 -1
- data/.travis.yml +7 -3
- data/CHANGELOG.md +3 -0
- data/CODE_OF_CONDUCT.md +1 -1
- data/README.md +1 -1
- data/Rakefile +23 -8
- data/ext/extconf.rb +39 -0
- data/ext/libsass/.gitignore +1 -0
- data/ext/libsass/GNUmakefile.am +23 -39
- data/ext/libsass/Makefile +56 -91
- data/ext/libsass/Makefile.conf +16 -2
- data/ext/libsass/configure.ac +8 -12
- data/ext/libsass/include/sass/base.h +1 -0
- data/ext/libsass/include/sass/context.h +1 -1
- data/ext/libsass/src/GNUmakefile.am +1 -5
- data/ext/libsass/src/ast.cpp +747 -2010
- data/ext/libsass/src/ast.hpp +239 -2383
- data/ext/libsass/src/{to_c.cpp → ast2c.cpp} +22 -16
- data/ext/libsass/src/ast2c.hpp +39 -0
- data/ext/libsass/src/ast_def_macros.hpp +62 -10
- data/ext/libsass/src/ast_fwd_decl.cpp +1 -0
- data/ext/libsass/src/ast_fwd_decl.hpp +43 -165
- data/ext/libsass/src/ast_sel_cmp.cpp +909 -0
- data/ext/libsass/src/ast_sel_unify.cpp +280 -0
- data/ext/libsass/src/ast_selectors.cpp +1475 -0
- data/ext/libsass/src/ast_selectors.hpp +568 -0
- data/ext/libsass/src/ast_supports.cpp +130 -0
- data/ext/libsass/src/ast_supports.hpp +121 -0
- data/ext/libsass/src/ast_values.cpp +967 -0
- data/ext/libsass/src/ast_values.hpp +489 -0
- data/ext/libsass/src/backtrace.cpp +4 -0
- data/ext/libsass/src/base64vlq.cpp +3 -0
- data/ext/libsass/src/bind.cpp +18 -17
- data/ext/libsass/src/bind.hpp +3 -1
- data/ext/libsass/src/c2ast.cpp +64 -0
- data/ext/libsass/src/c2ast.hpp +14 -0
- data/ext/libsass/src/cencode.c +2 -2
- data/ext/libsass/src/check_nesting.cpp +52 -56
- data/ext/libsass/src/check_nesting.hpp +35 -34
- data/ext/libsass/src/color_maps.cpp +156 -153
- data/ext/libsass/src/color_maps.hpp +152 -152
- data/ext/libsass/src/constants.cpp +15 -0
- data/ext/libsass/src/constants.hpp +13 -0
- data/ext/libsass/src/context.cpp +24 -14
- data/ext/libsass/src/context.hpp +6 -6
- data/ext/libsass/src/cssize.cpp +69 -71
- data/ext/libsass/src/cssize.hpp +50 -50
- data/ext/libsass/src/debugger.hpp +117 -110
- data/ext/libsass/src/emitter.cpp +13 -12
- data/ext/libsass/src/emitter.hpp +13 -9
- data/ext/libsass/src/environment.cpp +15 -1
- data/ext/libsass/src/environment.hpp +6 -0
- data/ext/libsass/src/error_handling.cpp +36 -59
- data/ext/libsass/src/error_handling.hpp +29 -16
- data/ext/libsass/src/eval.cpp +302 -323
- data/ext/libsass/src/eval.hpp +64 -55
- data/ext/libsass/src/expand.cpp +94 -88
- data/ext/libsass/src/expand.hpp +33 -37
- data/ext/libsass/src/extend.cpp +38 -36
- data/ext/libsass/src/extend.hpp +15 -15
- data/ext/libsass/src/file.cpp +34 -2
- data/ext/libsass/src/fn_colors.cpp +594 -0
- data/ext/libsass/src/fn_colors.hpp +85 -0
- data/ext/libsass/src/fn_lists.cpp +284 -0
- data/ext/libsass/src/fn_lists.hpp +34 -0
- data/ext/libsass/src/fn_maps.cpp +94 -0
- data/ext/libsass/src/fn_maps.hpp +30 -0
- data/ext/libsass/src/fn_miscs.cpp +256 -0
- data/ext/libsass/src/fn_miscs.hpp +40 -0
- data/ext/libsass/src/fn_numbers.cpp +220 -0
- data/ext/libsass/src/fn_numbers.hpp +45 -0
- data/ext/libsass/src/fn_selectors.cpp +235 -0
- data/ext/libsass/src/fn_selectors.hpp +35 -0
- data/ext/libsass/src/fn_strings.cpp +254 -0
- data/ext/libsass/src/fn_strings.hpp +34 -0
- data/ext/libsass/src/fn_utils.cpp +156 -0
- data/ext/libsass/src/fn_utils.hpp +56 -0
- data/ext/libsass/src/inspect.cpp +101 -152
- data/ext/libsass/src/inspect.hpp +69 -73
- data/ext/libsass/src/json.cpp +2 -2
- data/ext/libsass/src/lexer.cpp +6 -3
- data/ext/libsass/src/listize.cpp +9 -11
- data/ext/libsass/src/listize.hpp +11 -7
- data/ext/libsass/src/memory/SharedPtr.cpp +2 -83
- data/ext/libsass/src/memory/SharedPtr.hpp +127 -143
- data/ext/libsass/src/node.cpp +13 -10
- data/ext/libsass/src/node.hpp +3 -3
- data/ext/libsass/src/operation.hpp +184 -144
- data/ext/libsass/src/operators.cpp +43 -17
- data/ext/libsass/src/operators.hpp +5 -5
- data/ext/libsass/src/output.cpp +21 -18
- data/ext/libsass/src/output.hpp +14 -21
- data/ext/libsass/src/parser.cpp +215 -183
- data/ext/libsass/src/parser.hpp +28 -24
- data/ext/libsass/src/plugins.cpp +5 -1
- data/ext/libsass/src/position.cpp +3 -0
- data/ext/libsass/src/prelexer.cpp +9 -3
- data/ext/libsass/src/prelexer.hpp +9 -9
- data/ext/libsass/src/remove_placeholders.cpp +14 -11
- data/ext/libsass/src/remove_placeholders.hpp +8 -9
- data/ext/libsass/src/sass.cpp +9 -3
- data/ext/libsass/src/sass.hpp +12 -9
- data/ext/libsass/src/sass2scss.cpp +45 -14
- data/ext/libsass/src/sass_context.cpp +18 -15
- data/ext/libsass/src/sass_functions.cpp +6 -3
- data/ext/libsass/src/sass_functions.hpp +1 -1
- data/ext/libsass/src/sass_util.cpp +3 -0
- data/ext/libsass/src/sass_values.cpp +21 -13
- data/ext/libsass/src/source_map.cpp +5 -2
- data/ext/libsass/src/source_map.hpp +2 -2
- data/ext/libsass/src/subset_map.cpp +4 -1
- data/ext/libsass/src/to_value.cpp +23 -21
- data/ext/libsass/src/to_value.hpp +18 -22
- data/ext/libsass/src/units.cpp +4 -0
- data/ext/libsass/src/units.hpp +1 -0
- data/ext/libsass/src/utf8/checked.h +12 -10
- data/ext/libsass/src/utf8/core.h +3 -0
- data/ext/libsass/src/utf8_string.cpp +3 -0
- data/ext/libsass/src/util.cpp +67 -75
- data/ext/libsass/src/util.hpp +64 -19
- data/ext/libsass/src/util_string.cpp +75 -0
- data/ext/libsass/src/util_string.hpp +19 -0
- data/ext/libsass/src/values.cpp +22 -13
- data/ext/libsass/src/values.hpp +2 -2
- data/ext/libsass/win/libsass.targets +30 -4
- data/ext/libsass/win/libsass.vcxproj.filters +82 -4
- data/lib/sassc.rb +24 -0
- data/lib/sassc/engine.rb +2 -2
- data/lib/sassc/native.rb +8 -1
- data/lib/sassc/version.rb +1 -1
- data/sassc.gemspec +19 -11
- data/test/engine_test.rb +26 -1
- data/test/native_test.rb +1 -1
- metadata +66 -72
- data/ext/Rakefile +0 -3
- data/ext/libsass/.github/CONTRIBUTING.md +0 -65
- data/ext/libsass/.github/ISSUE_TEMPLATE.md +0 -54
- data/ext/libsass/.travis.yml +0 -64
- data/ext/libsass/Readme.md +0 -104
- data/ext/libsass/SECURITY.md +0 -10
- data/ext/libsass/appveyor.yml +0 -91
- data/ext/libsass/docs/README.md +0 -20
- data/ext/libsass/docs/api-context-example.md +0 -45
- data/ext/libsass/docs/api-context-internal.md +0 -163
- data/ext/libsass/docs/api-context.md +0 -295
- data/ext/libsass/docs/api-doc.md +0 -215
- data/ext/libsass/docs/api-function-example.md +0 -67
- data/ext/libsass/docs/api-function-internal.md +0 -8
- data/ext/libsass/docs/api-function.md +0 -74
- data/ext/libsass/docs/api-importer-example.md +0 -112
- data/ext/libsass/docs/api-importer-internal.md +0 -20
- data/ext/libsass/docs/api-importer.md +0 -86
- data/ext/libsass/docs/api-value-example.md +0 -55
- data/ext/libsass/docs/api-value-internal.md +0 -76
- data/ext/libsass/docs/api-value.md +0 -154
- data/ext/libsass/docs/build-on-darwin.md +0 -27
- data/ext/libsass/docs/build-on-gentoo.md +0 -55
- data/ext/libsass/docs/build-on-windows.md +0 -139
- data/ext/libsass/docs/build-shared-library.md +0 -35
- data/ext/libsass/docs/build-with-autotools.md +0 -78
- data/ext/libsass/docs/build-with-makefiles.md +0 -68
- data/ext/libsass/docs/build-with-mingw.md +0 -107
- data/ext/libsass/docs/build-with-visual-studio.md +0 -90
- data/ext/libsass/docs/build.md +0 -97
- data/ext/libsass/docs/compatibility-plan.md +0 -48
- data/ext/libsass/docs/contributing.md +0 -17
- data/ext/libsass/docs/custom-functions-internal.md +0 -122
- data/ext/libsass/docs/dev-ast-memory.md +0 -223
- data/ext/libsass/docs/implementations.md +0 -56
- data/ext/libsass/docs/plugins.md +0 -47
- data/ext/libsass/docs/setup-environment.md +0 -68
- data/ext/libsass/docs/source-map-internals.md +0 -51
- data/ext/libsass/docs/trace.md +0 -26
- data/ext/libsass/docs/triage.md +0 -17
- data/ext/libsass/docs/unicode.md +0 -39
- data/ext/libsass/extconf.rb +0 -6
- data/ext/libsass/script/bootstrap +0 -13
- data/ext/libsass/script/branding +0 -10
- data/ext/libsass/script/ci-build-libsass +0 -134
- data/ext/libsass/script/ci-build-plugin +0 -62
- data/ext/libsass/script/ci-install-compiler +0 -6
- data/ext/libsass/script/ci-install-deps +0 -20
- data/ext/libsass/script/ci-report-coverage +0 -42
- data/ext/libsass/script/spec +0 -5
- data/ext/libsass/script/tap-driver +0 -652
- data/ext/libsass/script/tap-runner +0 -1
- data/ext/libsass/script/test-leaks.pl +0 -103
- data/ext/libsass/src/functions.cpp +0 -2234
- data/ext/libsass/src/functions.hpp +0 -198
- data/ext/libsass/src/to_c.hpp +0 -39
- data/ext/libsass/test/test_node.cpp +0 -94
- data/ext/libsass/test/test_paths.cpp +0 -28
- data/ext/libsass/test/test_selector_difference.cpp +0 -25
- data/ext/libsass/test/test_specificity.cpp +0 -25
- data/ext/libsass/test/test_subset_map.cpp +0 -472
- data/ext/libsass/test/test_superselector.cpp +0 -69
- data/ext/libsass/test/test_unification.cpp +0 -31
- 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
|
data/ext/libsass/src/to_c.hpp
DELETED
@@ -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
|
-
}
|