sassc 2.0.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.gitmodules +1 -1
- data/.travis.yml +9 -3
- data/CHANGELOG.md +36 -0
- data/CODE_OF_CONDUCT.md +1 -1
- data/README.md +1 -1
- data/Rakefile +43 -7
- data/ext/depend +4 -0
- data/ext/extconf.rb +92 -0
- data/ext/libsass/VERSION +1 -0
- data/ext/libsass/include/sass/base.h +9 -1
- data/ext/libsass/include/sass/context.h +5 -1
- data/ext/libsass/src/MurmurHash2.hpp +91 -0
- data/ext/libsass/src/ast.cpp +755 -2028
- data/ext/libsass/src/ast.hpp +492 -2477
- 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 +70 -10
- data/ext/libsass/src/ast_fwd_decl.cpp +5 -3
- data/ext/libsass/src/ast_fwd_decl.hpp +107 -296
- data/ext/libsass/src/ast_helpers.hpp +292 -0
- data/ext/libsass/src/ast_sel_cmp.cpp +396 -0
- data/ext/libsass/src/ast_sel_super.cpp +539 -0
- data/ext/libsass/src/ast_sel_unify.cpp +275 -0
- data/ext/libsass/src/ast_sel_weave.cpp +616 -0
- data/ext/libsass/src/ast_selectors.cpp +1043 -0
- data/ext/libsass/src/ast_selectors.hpp +522 -0
- data/ext/libsass/src/ast_supports.cpp +114 -0
- data/ext/libsass/src/ast_supports.hpp +121 -0
- data/ext/libsass/src/ast_values.cpp +1154 -0
- data/ext/libsass/src/ast_values.hpp +498 -0
- data/ext/libsass/src/backtrace.cpp +11 -7
- data/ext/libsass/src/backtrace.hpp +5 -5
- data/ext/libsass/src/base64vlq.cpp +5 -2
- data/ext/libsass/src/base64vlq.hpp +1 -1
- data/ext/libsass/src/bind.cpp +35 -34
- 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 +4 -6
- data/ext/libsass/src/check_nesting.cpp +83 -88
- data/ext/libsass/src/check_nesting.hpp +39 -34
- data/ext/libsass/src/color_maps.cpp +168 -164
- data/ext/libsass/src/color_maps.hpp +152 -160
- data/ext/libsass/src/constants.cpp +20 -0
- data/ext/libsass/src/constants.hpp +19 -0
- data/ext/libsass/src/context.cpp +104 -121
- data/ext/libsass/src/context.hpp +43 -55
- data/ext/libsass/src/cssize.cpp +103 -188
- data/ext/libsass/src/cssize.hpp +45 -51
- data/ext/libsass/src/dart_helpers.hpp +199 -0
- data/ext/libsass/src/debugger.hpp +524 -361
- data/ext/libsass/src/emitter.cpp +26 -26
- data/ext/libsass/src/emitter.hpp +20 -18
- data/ext/libsass/src/environment.cpp +41 -27
- data/ext/libsass/src/environment.hpp +33 -22
- data/ext/libsass/src/error_handling.cpp +92 -94
- data/ext/libsass/src/error_handling.hpp +73 -50
- data/ext/libsass/src/eval.cpp +380 -515
- data/ext/libsass/src/eval.hpp +64 -57
- data/ext/libsass/src/eval_selectors.cpp +75 -0
- data/ext/libsass/src/expand.cpp +322 -263
- data/ext/libsass/src/expand.hpp +55 -39
- data/ext/libsass/src/extender.cpp +1188 -0
- data/ext/libsass/src/extender.hpp +399 -0
- data/ext/libsass/src/extension.cpp +43 -0
- data/ext/libsass/src/extension.hpp +89 -0
- data/ext/libsass/src/file.cpp +134 -88
- data/ext/libsass/src/file.hpp +28 -37
- data/ext/libsass/src/fn_colors.cpp +596 -0
- data/ext/libsass/src/fn_colors.hpp +85 -0
- data/ext/libsass/src/fn_lists.cpp +285 -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 +244 -0
- data/ext/libsass/src/fn_miscs.hpp +40 -0
- data/ext/libsass/src/fn_numbers.cpp +227 -0
- data/ext/libsass/src/fn_numbers.hpp +45 -0
- data/ext/libsass/src/fn_selectors.cpp +205 -0
- data/ext/libsass/src/fn_selectors.hpp +35 -0
- data/ext/libsass/src/fn_strings.cpp +268 -0
- data/ext/libsass/src/fn_strings.hpp +34 -0
- data/ext/libsass/src/fn_utils.cpp +158 -0
- data/ext/libsass/src/fn_utils.hpp +62 -0
- data/ext/libsass/src/inspect.cpp +253 -266
- data/ext/libsass/src/inspect.hpp +72 -74
- data/ext/libsass/src/json.cpp +2 -2
- data/ext/libsass/src/lexer.cpp +25 -84
- data/ext/libsass/src/lexer.hpp +5 -16
- data/ext/libsass/src/listize.cpp +27 -43
- data/ext/libsass/src/listize.hpp +14 -11
- data/ext/libsass/src/mapping.hpp +1 -0
- data/ext/libsass/src/memory.hpp +12 -0
- data/ext/libsass/src/memory/allocator.cpp +48 -0
- data/ext/libsass/src/memory/allocator.hpp +138 -0
- data/ext/libsass/src/memory/config.hpp +20 -0
- data/ext/libsass/src/memory/memory_pool.hpp +186 -0
- data/ext/libsass/src/memory/shared_ptr.cpp +33 -0
- data/ext/libsass/src/memory/shared_ptr.hpp +332 -0
- data/ext/libsass/src/operation.hpp +193 -143
- data/ext/libsass/src/operators.cpp +56 -29
- data/ext/libsass/src/operators.hpp +11 -11
- data/ext/libsass/src/ordered_map.hpp +112 -0
- data/ext/libsass/src/output.cpp +59 -75
- data/ext/libsass/src/output.hpp +15 -22
- data/ext/libsass/src/parser.cpp +662 -818
- data/ext/libsass/src/parser.hpp +96 -100
- data/ext/libsass/src/parser_selectors.cpp +189 -0
- data/ext/libsass/src/permutate.hpp +164 -0
- data/ext/libsass/src/plugins.cpp +12 -8
- data/ext/libsass/src/plugins.hpp +8 -8
- data/ext/libsass/src/position.cpp +10 -26
- data/ext/libsass/src/position.hpp +44 -21
- data/ext/libsass/src/prelexer.cpp +14 -8
- data/ext/libsass/src/prelexer.hpp +9 -9
- data/ext/libsass/src/remove_placeholders.cpp +59 -57
- data/ext/libsass/src/remove_placeholders.hpp +20 -18
- data/ext/libsass/src/sass.cpp +25 -18
- data/ext/libsass/src/sass.hpp +22 -14
- data/ext/libsass/src/sass2scss.cpp +49 -18
- data/ext/libsass/src/sass_context.cpp +104 -132
- data/ext/libsass/src/sass_context.hpp +2 -2
- data/ext/libsass/src/sass_functions.cpp +7 -4
- data/ext/libsass/src/sass_functions.hpp +1 -1
- data/ext/libsass/src/sass_values.cpp +26 -21
- data/ext/libsass/src/settings.hpp +19 -0
- data/ext/libsass/src/source.cpp +69 -0
- data/ext/libsass/src/source.hpp +95 -0
- data/ext/libsass/src/source_data.hpp +32 -0
- data/ext/libsass/src/source_map.cpp +27 -20
- data/ext/libsass/src/source_map.hpp +14 -11
- data/ext/libsass/src/stylesheet.cpp +22 -0
- data/ext/libsass/src/stylesheet.hpp +57 -0
- data/ext/libsass/src/to_value.cpp +24 -22
- data/ext/libsass/src/to_value.hpp +18 -22
- data/ext/libsass/src/units.cpp +28 -22
- data/ext/libsass/src/units.hpp +9 -8
- 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 +12 -10
- data/ext/libsass/src/utf8_string.hpp +7 -6
- data/ext/libsass/src/util.cpp +97 -107
- data/ext/libsass/src/util.hpp +74 -30
- data/ext/libsass/src/util_string.cpp +125 -0
- data/ext/libsass/src/util_string.hpp +73 -0
- data/ext/libsass/src/values.cpp +33 -24
- data/ext/libsass/src/values.hpp +2 -2
- data/lib/sassc.rb +24 -0
- data/lib/sassc/engine.rb +7 -5
- data/lib/sassc/functions_handler.rb +11 -13
- data/lib/sassc/native.rb +10 -9
- data/lib/sassc/native/native_functions_api.rb +0 -5
- data/lib/sassc/script.rb +4 -6
- data/lib/sassc/version.rb +1 -1
- data/sassc.gemspec +32 -12
- data/test/engine_test.rb +32 -2
- data/test/functions_test.rb +38 -1
- data/test/native_test.rb +4 -4
- metadata +95 -109
- data/ext/Rakefile +0 -3
- data/ext/libsass/.editorconfig +0 -15
- data/ext/libsass/.gitattributes +0 -2
- data/ext/libsass/.github/CONTRIBUTING.md +0 -65
- data/ext/libsass/.github/ISSUE_TEMPLATE.md +0 -54
- data/ext/libsass/.gitignore +0 -85
- data/ext/libsass/.travis.yml +0 -64
- data/ext/libsass/COPYING +0 -25
- data/ext/libsass/GNUmakefile.am +0 -88
- data/ext/libsass/INSTALL +0 -1
- data/ext/libsass/LICENSE +0 -25
- data/ext/libsass/Makefile +0 -351
- data/ext/libsass/Makefile.conf +0 -55
- data/ext/libsass/Readme.md +0 -104
- data/ext/libsass/SECURITY.md +0 -10
- data/ext/libsass/appveyor.yml +0 -91
- data/ext/libsass/configure.ac +0 -138
- data/ext/libsass/contrib/libsass.spec +0 -66
- 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/include/sass/version.h.in +0 -12
- data/ext/libsass/m4/.gitkeep +0 -0
- data/ext/libsass/m4/m4-ax_cxx_compile_stdcxx_11.m4 +0 -167
- data/ext/libsass/res/resource.rc +0 -35
- 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/GNUmakefile.am +0 -54
- data/ext/libsass/src/extend.cpp +0 -2130
- data/ext/libsass/src/extend.hpp +0 -86
- data/ext/libsass/src/functions.cpp +0 -2234
- data/ext/libsass/src/functions.hpp +0 -198
- data/ext/libsass/src/memory/SharedPtr.cpp +0 -114
- data/ext/libsass/src/memory/SharedPtr.hpp +0 -206
- data/ext/libsass/src/node.cpp +0 -319
- data/ext/libsass/src/node.hpp +0 -118
- data/ext/libsass/src/paths.hpp +0 -71
- data/ext/libsass/src/sass_util.cpp +0 -149
- data/ext/libsass/src/sass_util.hpp +0 -256
- data/ext/libsass/src/subset_map.cpp +0 -55
- data/ext/libsass/src/subset_map.hpp +0 -76
- data/ext/libsass/src/support/libsass.pc.in +0 -11
- 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/ext/libsass/version.sh +0 -10
- data/ext/libsass/win/libsass.sln +0 -39
- data/ext/libsass/win/libsass.sln.DotSettings +0 -9
- data/ext/libsass/win/libsass.targets +0 -118
- data/ext/libsass/win/libsass.vcxproj +0 -188
- data/ext/libsass/win/libsass.vcxproj.filters +0 -357
- data/lib/sassc/native/lib_c.rb +0 -21
- data/lib/tasks/libsass.rb +0 -33
data/ext/libsass/src/inspect.hpp
CHANGED
|
@@ -13,90 +13,88 @@ namespace Sass {
|
|
|
13
13
|
// import all the class-specific methods and override as desired
|
|
14
14
|
using Operation_CRTP<void, Inspect>::operator();
|
|
15
15
|
|
|
16
|
-
void fallback_impl(AST_Node_Ptr n);
|
|
17
|
-
|
|
18
16
|
public:
|
|
19
17
|
|
|
20
18
|
Inspect(const Emitter& emi);
|
|
21
19
|
virtual ~Inspect();
|
|
22
20
|
|
|
23
21
|
// statements
|
|
24
|
-
virtual void operator()(
|
|
25
|
-
virtual void operator()(
|
|
26
|
-
virtual void operator()(
|
|
27
|
-
virtual void operator()(
|
|
28
|
-
virtual void operator()(
|
|
29
|
-
virtual void operator()(
|
|
30
|
-
virtual void operator()(
|
|
31
|
-
virtual void operator()(
|
|
32
|
-
virtual void operator()(
|
|
33
|
-
virtual void operator()(
|
|
34
|
-
virtual void operator()(
|
|
35
|
-
virtual void operator()(
|
|
36
|
-
virtual void operator()(
|
|
37
|
-
virtual void operator()(
|
|
38
|
-
virtual void operator()(
|
|
39
|
-
virtual void operator()(
|
|
40
|
-
virtual void operator()(
|
|
41
|
-
virtual void operator()(
|
|
42
|
-
virtual void operator()(
|
|
43
|
-
virtual void operator()(
|
|
44
|
-
virtual void operator()(
|
|
45
|
-
virtual void operator()(
|
|
46
|
-
virtual void operator()(
|
|
47
|
-
virtual void operator()(
|
|
48
|
-
virtual void operator()(Content_Ptr);
|
|
22
|
+
virtual void operator()(Block*);
|
|
23
|
+
virtual void operator()(StyleRule*);
|
|
24
|
+
virtual void operator()(Bubble*);
|
|
25
|
+
virtual void operator()(SupportsRule*);
|
|
26
|
+
virtual void operator()(AtRootRule*);
|
|
27
|
+
virtual void operator()(AtRule*);
|
|
28
|
+
virtual void operator()(Keyframe_Rule*);
|
|
29
|
+
virtual void operator()(Declaration*);
|
|
30
|
+
virtual void operator()(Assignment*);
|
|
31
|
+
virtual void operator()(Import*);
|
|
32
|
+
virtual void operator()(Import_Stub*);
|
|
33
|
+
virtual void operator()(WarningRule*);
|
|
34
|
+
virtual void operator()(ErrorRule*);
|
|
35
|
+
virtual void operator()(DebugRule*);
|
|
36
|
+
virtual void operator()(Comment*);
|
|
37
|
+
virtual void operator()(If*);
|
|
38
|
+
virtual void operator()(ForRule*);
|
|
39
|
+
virtual void operator()(EachRule*);
|
|
40
|
+
virtual void operator()(WhileRule*);
|
|
41
|
+
virtual void operator()(Return*);
|
|
42
|
+
virtual void operator()(ExtendRule*);
|
|
43
|
+
virtual void operator()(Definition*);
|
|
44
|
+
virtual void operator()(Mixin_Call*);
|
|
45
|
+
virtual void operator()(Content*);
|
|
49
46
|
// expressions
|
|
50
|
-
virtual void operator()(
|
|
51
|
-
virtual void operator()(
|
|
52
|
-
virtual void operator()(
|
|
53
|
-
virtual void operator()(
|
|
54
|
-
virtual void operator()(
|
|
55
|
-
virtual void operator()(
|
|
56
|
-
virtual void operator()(
|
|
57
|
-
// virtual void operator()(
|
|
58
|
-
|
|
59
|
-
virtual void operator()(
|
|
60
|
-
virtual void operator()(
|
|
61
|
-
virtual void operator()(
|
|
62
|
-
virtual void operator()(
|
|
63
|
-
virtual void operator()(
|
|
64
|
-
virtual void operator()(
|
|
65
|
-
virtual void operator()(
|
|
66
|
-
virtual void operator()(
|
|
67
|
-
virtual void operator()(
|
|
68
|
-
virtual void operator()(
|
|
69
|
-
virtual void operator()(
|
|
70
|
-
virtual void operator()(
|
|
71
|
-
virtual void operator()(
|
|
72
|
-
virtual void operator()(
|
|
73
|
-
virtual void operator()(
|
|
74
|
-
virtual void operator()(
|
|
75
|
-
virtual void operator()(
|
|
76
|
-
virtual void operator()(
|
|
47
|
+
virtual void operator()(Map*);
|
|
48
|
+
virtual void operator()(Function*);
|
|
49
|
+
virtual void operator()(List*);
|
|
50
|
+
virtual void operator()(Binary_Expression*);
|
|
51
|
+
virtual void operator()(Unary_Expression*);
|
|
52
|
+
virtual void operator()(Function_Call*);
|
|
53
|
+
// virtual void operator()(Custom_Warning*);
|
|
54
|
+
// virtual void operator()(Custom_Error*);
|
|
55
|
+
virtual void operator()(Variable*);
|
|
56
|
+
virtual void operator()(Number*);
|
|
57
|
+
virtual void operator()(Color_RGBA*);
|
|
58
|
+
virtual void operator()(Color_HSLA*);
|
|
59
|
+
virtual void operator()(Boolean*);
|
|
60
|
+
virtual void operator()(String_Schema*);
|
|
61
|
+
virtual void operator()(String_Constant*);
|
|
62
|
+
virtual void operator()(String_Quoted*);
|
|
63
|
+
virtual void operator()(Custom_Error*);
|
|
64
|
+
virtual void operator()(Custom_Warning*);
|
|
65
|
+
virtual void operator()(SupportsOperation*);
|
|
66
|
+
virtual void operator()(SupportsNegation*);
|
|
67
|
+
virtual void operator()(SupportsDeclaration*);
|
|
68
|
+
virtual void operator()(Supports_Interpolation*);
|
|
69
|
+
virtual void operator()(MediaRule*);
|
|
70
|
+
virtual void operator()(CssMediaRule*);
|
|
71
|
+
virtual void operator()(CssMediaQuery*);
|
|
72
|
+
virtual void operator()(Media_Query*);
|
|
73
|
+
virtual void operator()(Media_Query_Expression*);
|
|
74
|
+
virtual void operator()(At_Root_Query*);
|
|
75
|
+
virtual void operator()(Null*);
|
|
76
|
+
virtual void operator()(Parent_Reference* p);
|
|
77
77
|
// parameters and arguments
|
|
78
|
-
virtual void operator()(
|
|
79
|
-
virtual void operator()(
|
|
80
|
-
virtual void operator()(
|
|
81
|
-
virtual void operator()(
|
|
78
|
+
virtual void operator()(Parameter*);
|
|
79
|
+
virtual void operator()(Parameters*);
|
|
80
|
+
virtual void operator()(Argument*);
|
|
81
|
+
virtual void operator()(Arguments*);
|
|
82
82
|
// selectors
|
|
83
|
-
virtual void operator()(
|
|
84
|
-
virtual void operator()(
|
|
85
|
-
virtual void operator()(
|
|
86
|
-
virtual void operator()(
|
|
87
|
-
virtual void operator()(
|
|
88
|
-
virtual void operator()(
|
|
89
|
-
virtual void operator()(
|
|
90
|
-
virtual void operator()(
|
|
91
|
-
virtual void operator()(
|
|
92
|
-
virtual void operator()(
|
|
93
|
-
virtual void operator()(
|
|
94
|
-
|
|
95
|
-
virtual
|
|
96
|
-
virtual
|
|
83
|
+
virtual void operator()(Selector_Schema*);
|
|
84
|
+
virtual void operator()(PlaceholderSelector*);
|
|
85
|
+
virtual void operator()(TypeSelector*);
|
|
86
|
+
virtual void operator()(ClassSelector*);
|
|
87
|
+
virtual void operator()(IDSelector*);
|
|
88
|
+
virtual void operator()(AttributeSelector*);
|
|
89
|
+
virtual void operator()(PseudoSelector*);
|
|
90
|
+
virtual void operator()(SelectorComponent*);
|
|
91
|
+
virtual void operator()(SelectorCombinator*);
|
|
92
|
+
virtual void operator()(CompoundSelector*);
|
|
93
|
+
virtual void operator()(ComplexSelector*);
|
|
94
|
+
virtual void operator()(SelectorList*);
|
|
95
|
+
virtual sass::string lbracket(List*);
|
|
96
|
+
virtual sass::string rbracket(List*);
|
|
97
97
|
|
|
98
|
-
// template <typename U>
|
|
99
|
-
// void fallback(U x) { fallback_impl(reinterpret_cast<AST_Node_Ptr>(x)); }
|
|
100
98
|
};
|
|
101
99
|
|
|
102
100
|
}
|
data/ext/libsass/src/json.cpp
CHANGED
|
@@ -402,7 +402,7 @@ char *json_encode_string(const char *str)
|
|
|
402
402
|
try {
|
|
403
403
|
emit_string(&sb, str);
|
|
404
404
|
}
|
|
405
|
-
catch (std::exception) {
|
|
405
|
+
catch (std::exception&) {
|
|
406
406
|
sb_free(&sb);
|
|
407
407
|
throw;
|
|
408
408
|
}
|
|
@@ -421,7 +421,7 @@ char *json_stringify(const JsonNode *node, const char *space)
|
|
|
421
421
|
else
|
|
422
422
|
emit_value(&sb, node);
|
|
423
423
|
}
|
|
424
|
-
catch (std::exception) {
|
|
424
|
+
catch (std::exception&) {
|
|
425
425
|
sb_free(&sb);
|
|
426
426
|
throw;
|
|
427
427
|
}
|
data/ext/libsass/src/lexer.cpp
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
// sass.hpp must go before all system headers to get the
|
|
2
|
+
// __EXTENSIONS__ fix on Solaris.
|
|
1
3
|
#include "sass.hpp"
|
|
2
|
-
|
|
4
|
+
|
|
3
5
|
#include <iostream>
|
|
4
6
|
#include <iomanip>
|
|
5
7
|
#include "lexer.hpp"
|
|
6
8
|
#include "constants.hpp"
|
|
9
|
+
#include "util_string.hpp"
|
|
7
10
|
|
|
8
11
|
|
|
9
12
|
namespace Sass {
|
|
@@ -25,77 +28,14 @@ namespace Sass {
|
|
|
25
28
|
const char* kwd_minus(const char* src) { return exactly<'-'>(src); };
|
|
26
29
|
const char* kwd_slash(const char* src) { return exactly<'/'>(src); };
|
|
27
30
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
// this even seems to improve performance by quite a bit
|
|
32
|
-
//####################################
|
|
33
|
-
|
|
34
|
-
bool is_alpha(const char& chr)
|
|
35
|
-
{
|
|
36
|
-
return unsigned(chr - 'A') <= 'Z' - 'A' ||
|
|
37
|
-
unsigned(chr - 'a') <= 'z' - 'a';
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
bool is_space(const char& chr)
|
|
41
|
-
{
|
|
42
|
-
// adapted the technique from is_alpha
|
|
43
|
-
return chr == ' ' || unsigned(chr - '\t') <= '\r' - '\t';
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
bool is_digit(const char& chr)
|
|
47
|
-
{
|
|
48
|
-
// adapted the technique from is_alpha
|
|
49
|
-
return unsigned(chr - '0') <= '9' - '0';
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
bool is_number(const char& chr)
|
|
53
|
-
{
|
|
54
|
-
// adapted the technique from is_alpha
|
|
55
|
-
return is_digit(chr) || chr == '-' || chr == '+';
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
bool is_xdigit(const char& chr)
|
|
59
|
-
{
|
|
60
|
-
// adapted the technique from is_alpha
|
|
61
|
-
return unsigned(chr - '0') <= '9' - '0' ||
|
|
62
|
-
unsigned(chr - 'a') <= 'f' - 'a' ||
|
|
63
|
-
unsigned(chr - 'A') <= 'F' - 'A';
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
bool is_punct(const char& chr)
|
|
67
|
-
{
|
|
68
|
-
// locale independent
|
|
69
|
-
return chr == '.';
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
bool is_alnum(const char& chr)
|
|
73
|
-
{
|
|
74
|
-
return is_alpha(chr) || is_digit(chr);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
// check if char is outside ascii range
|
|
78
|
-
bool is_unicode(const char& chr)
|
|
79
|
-
{
|
|
80
|
-
// check for unicode range
|
|
81
|
-
return unsigned(chr) > 127;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
// check if char is outside ascii range
|
|
85
|
-
// but with specific ranges (copied from Ruby Sass)
|
|
86
|
-
bool is_nonascii(const char& chr)
|
|
87
|
-
{
|
|
88
|
-
unsigned int cmp = unsigned(chr);
|
|
89
|
-
return (
|
|
90
|
-
(cmp >= 128 && cmp <= 15572911) ||
|
|
91
|
-
(cmp >= 15630464 && cmp <= 15712189) ||
|
|
92
|
-
(cmp >= 4036001920)
|
|
93
|
-
);
|
|
31
|
+
bool is_number(char chr) {
|
|
32
|
+
return Util::ascii_isdigit(static_cast<unsigned char>(chr)) ||
|
|
33
|
+
chr == '-' || chr == '+';
|
|
94
34
|
}
|
|
95
35
|
|
|
96
36
|
// check if char is within a reduced ascii range
|
|
97
37
|
// valid in a uri (copied from Ruby Sass)
|
|
98
|
-
bool is_uri_character(
|
|
38
|
+
bool is_uri_character(char chr)
|
|
99
39
|
{
|
|
100
40
|
unsigned int cmp = unsigned(chr);
|
|
101
41
|
return (cmp > 41 && cmp < 127) ||
|
|
@@ -104,17 +44,19 @@ namespace Sass {
|
|
|
104
44
|
|
|
105
45
|
// check if char is within a reduced ascii range
|
|
106
46
|
// valid for escaping (copied from Ruby Sass)
|
|
107
|
-
bool is_escapable_character(
|
|
47
|
+
bool is_escapable_character(char chr)
|
|
108
48
|
{
|
|
109
49
|
unsigned int cmp = unsigned(chr);
|
|
110
50
|
return cmp > 31 && cmp < 127;
|
|
111
51
|
}
|
|
112
52
|
|
|
113
53
|
// Match word character (look ahead)
|
|
114
|
-
bool is_character(
|
|
54
|
+
bool is_character(char chr)
|
|
115
55
|
{
|
|
116
56
|
// valid alpha, numeric or unicode char (plus hyphen)
|
|
117
|
-
return
|
|
57
|
+
return Util::ascii_isalnum(static_cast<unsigned char>(chr)) ||
|
|
58
|
+
!Util::ascii_isascii(static_cast<unsigned char>(chr)) ||
|
|
59
|
+
chr == '-';
|
|
118
60
|
}
|
|
119
61
|
|
|
120
62
|
//####################################
|
|
@@ -122,16 +64,13 @@ namespace Sass {
|
|
|
122
64
|
//####################################
|
|
123
65
|
|
|
124
66
|
// create matchers that advance the position
|
|
125
|
-
const char* space(const char* src) { return
|
|
126
|
-
const char* alpha(const char* src) { return
|
|
127
|
-
const char*
|
|
128
|
-
const char*
|
|
129
|
-
const char*
|
|
130
|
-
const char*
|
|
131
|
-
const char*
|
|
132
|
-
const char* punct(const char* src) { return is_punct(*src) ? src + 1 : 0; }
|
|
133
|
-
const char* hyphen(const char* src) { return *src && *src == '-' ? src + 1 : 0; }
|
|
134
|
-
const char* character(const char* src) { return is_character(*src) ? src + 1 : 0; }
|
|
67
|
+
const char* space(const char* src) { return Util::ascii_isspace(static_cast<unsigned char>(*src)) ? src + 1 : nullptr; }
|
|
68
|
+
const char* alpha(const char* src) { return Util::ascii_isalpha(static_cast<unsigned char>(*src)) ? src + 1 : nullptr; }
|
|
69
|
+
const char* nonascii(const char* src) { return Util::ascii_isascii(static_cast<unsigned char>(*src)) ? nullptr : src + 1; }
|
|
70
|
+
const char* digit(const char* src) { return Util::ascii_isdigit(static_cast<unsigned char>(*src)) ? src + 1 : nullptr; }
|
|
71
|
+
const char* xdigit(const char* src) { return Util::ascii_isxdigit(static_cast<unsigned char>(*src)) ? src + 1 : nullptr; }
|
|
72
|
+
const char* alnum(const char* src) { return Util::ascii_isalnum(static_cast<unsigned char>(*src)) ? src + 1 : nullptr; }
|
|
73
|
+
const char* hyphen(const char* src) { return *src == '-' ? src + 1 : 0; }
|
|
135
74
|
const char* uri_character(const char* src) { return is_uri_character(*src) ? src + 1 : 0; }
|
|
136
75
|
const char* escapable_character(const char* src) { return is_escapable_character(*src) ? src + 1 : 0; }
|
|
137
76
|
|
|
@@ -150,11 +89,13 @@ namespace Sass {
|
|
|
150
89
|
// Match word boundary (zero-width lookahead).
|
|
151
90
|
const char* word_boundary(const char* src) { return is_character(*src) || *src == '#' ? 0 : src; }
|
|
152
91
|
|
|
153
|
-
// Match linefeed /(?:\n|\r\n
|
|
92
|
+
// Match linefeed /(?:\n|\r\n?|\f)/
|
|
154
93
|
const char* re_linebreak(const char* src)
|
|
155
94
|
{
|
|
156
95
|
// end of file or unix linefeed return here
|
|
157
|
-
if (*src == 0
|
|
96
|
+
if (*src == 0) return src;
|
|
97
|
+
// end of file or unix linefeed return here
|
|
98
|
+
if (*src == '\n' || *src == '\f') return src + 1;
|
|
158
99
|
// a carriage return may optionally be followed by a linefeed
|
|
159
100
|
if (*src == '\r') return *(src + 1) == '\n' ? src + 2 : src + 1;
|
|
160
101
|
// no linefeed
|
|
@@ -166,7 +107,7 @@ namespace Sass {
|
|
|
166
107
|
const char* end_of_line(const char* src)
|
|
167
108
|
{
|
|
168
109
|
// end of file or unix linefeed return here
|
|
169
|
-
return *src == 0 || *src == '\n' || *src == '\r' ? src : 0;
|
|
110
|
+
return *src == 0 || *src == '\n' || *src == '\r' || *src == '\f' ? src : 0;
|
|
170
111
|
}
|
|
171
112
|
|
|
172
113
|
// Assert end_of_file boundary (/\z/)
|
data/ext/libsass/src/lexer.hpp
CHANGED
|
@@ -24,19 +24,11 @@ namespace Sass {
|
|
|
24
24
|
// BASIC CLASS MATCHERS
|
|
25
25
|
//####################################
|
|
26
26
|
|
|
27
|
-
//
|
|
28
|
-
bool
|
|
29
|
-
|
|
30
|
-
bool
|
|
31
|
-
bool
|
|
32
|
-
bool is_number(const char& src);
|
|
33
|
-
bool is_alnum(const char& src);
|
|
34
|
-
bool is_xdigit(const char& src);
|
|
35
|
-
bool is_unicode(const char& src);
|
|
36
|
-
bool is_nonascii(const char& src);
|
|
37
|
-
bool is_character(const char& src);
|
|
38
|
-
bool is_uri_character(const char& src);
|
|
39
|
-
bool escapable_character(const char& src);
|
|
27
|
+
// Matches ASCII digits, +, and -.
|
|
28
|
+
bool is_number(char src);
|
|
29
|
+
|
|
30
|
+
bool is_uri_character(char src);
|
|
31
|
+
bool escapable_character(char src);
|
|
40
32
|
|
|
41
33
|
// Match a single ctype predicate.
|
|
42
34
|
const char* space(const char* src);
|
|
@@ -44,11 +36,8 @@ namespace Sass {
|
|
|
44
36
|
const char* digit(const char* src);
|
|
45
37
|
const char* xdigit(const char* src);
|
|
46
38
|
const char* alnum(const char* src);
|
|
47
|
-
const char* punct(const char* src);
|
|
48
39
|
const char* hyphen(const char* src);
|
|
49
|
-
const char* unicode(const char* src);
|
|
50
40
|
const char* nonascii(const char* src);
|
|
51
|
-
const char* character(const char* src);
|
|
52
41
|
const char* uri_character(const char* src);
|
|
53
42
|
const char* escapable_character(const char* src);
|
|
54
43
|
|
data/ext/libsass/src/listize.cpp
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
// sass.hpp must go before all system headers to get the
|
|
2
|
+
// __EXTENSIONS__ fix on Solaris.
|
|
1
3
|
#include "sass.hpp"
|
|
4
|
+
|
|
2
5
|
#include <iostream>
|
|
3
6
|
#include <typeinfo>
|
|
4
7
|
#include <string>
|
|
@@ -13,7 +16,13 @@ namespace Sass {
|
|
|
13
16
|
Listize::Listize()
|
|
14
17
|
{ }
|
|
15
18
|
|
|
16
|
-
|
|
19
|
+
Expression* Listize::perform(AST_Node* node)
|
|
20
|
+
{
|
|
21
|
+
Listize listize;
|
|
22
|
+
return node->perform(&listize);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
Expression* Listize::operator()(SelectorList* sel)
|
|
17
26
|
{
|
|
18
27
|
List_Obj l = SASS_MEMORY_NEW(List, sel->pstate(), sel->length(), SASS_COMMA);
|
|
19
28
|
l->from_selector(true);
|
|
@@ -25,62 +34,37 @@ namespace Sass {
|
|
|
25
34
|
return SASS_MEMORY_NEW(Null, l->pstate());
|
|
26
35
|
}
|
|
27
36
|
|
|
28
|
-
|
|
37
|
+
Expression* Listize::operator()(CompoundSelector* sel)
|
|
29
38
|
{
|
|
30
|
-
|
|
39
|
+
sass::string str;
|
|
31
40
|
for (size_t i = 0, L = sel->length(); i < L; ++i) {
|
|
32
|
-
|
|
41
|
+
Expression* e = (*sel)[i]->perform(this);
|
|
33
42
|
if (e) str += e->to_string();
|
|
34
43
|
}
|
|
35
44
|
return SASS_MEMORY_NEW(String_Quoted, sel->pstate(), str);
|
|
36
45
|
}
|
|
37
46
|
|
|
38
|
-
|
|
47
|
+
Expression* Listize::operator()(ComplexSelector* sel)
|
|
39
48
|
{
|
|
40
|
-
List_Obj l = SASS_MEMORY_NEW(List, sel->pstate()
|
|
49
|
+
List_Obj l = SASS_MEMORY_NEW(List, sel->pstate());
|
|
50
|
+
// ToDo: investigate what this does
|
|
51
|
+
// Note: seems reated to parent ref
|
|
41
52
|
l->from_selector(true);
|
|
42
|
-
Compound_Selector_Obj head = sel->head();
|
|
43
|
-
if (head && !head->is_empty_reference())
|
|
44
|
-
{
|
|
45
|
-
Expression_Ptr hh = head->perform(this);
|
|
46
|
-
if (hh) l->append(hh);
|
|
47
|
-
}
|
|
48
53
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
l->append(SASS_MEMORY_NEW(String_Quoted,
|
|
58
|
-
|
|
59
|
-
case Complex_Selector::REFERENCE:
|
|
60
|
-
l->append(SASS_MEMORY_NEW(String_Quoted, sel->pstate(), "/" + reference + "/"));
|
|
61
|
-
break;
|
|
62
|
-
case Complex_Selector::PRECEDES:
|
|
63
|
-
l->append(SASS_MEMORY_NEW(String_Quoted, sel->pstate(), "~"));
|
|
64
|
-
break;
|
|
65
|
-
case Complex_Selector::ANCESTOR_OF:
|
|
66
|
-
break;
|
|
67
|
-
default: break;
|
|
54
|
+
for (auto component : sel->elements()) {
|
|
55
|
+
if (CompoundSelectorObj compound = Cast<CompoundSelector>(component)) {
|
|
56
|
+
if (!compound->empty()) {
|
|
57
|
+
ExpressionObj hh = compound->perform(this);
|
|
58
|
+
if (hh) l->append(hh);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else if (component) {
|
|
62
|
+
l->append(SASS_MEMORY_NEW(String_Quoted, component->pstate(), component->to_string()));
|
|
63
|
+
}
|
|
68
64
|
}
|
|
69
65
|
|
|
70
|
-
Complex_Selector_Obj tail = sel->tail();
|
|
71
|
-
if (tail)
|
|
72
|
-
{
|
|
73
|
-
Expression_Obj tt = tail->perform(this);
|
|
74
|
-
if (List_Ptr ls = Cast<List>(tt))
|
|
75
|
-
{ l->concat(ls); }
|
|
76
|
-
}
|
|
77
66
|
if (l->length() == 0) return 0;
|
|
78
67
|
return l.detach();
|
|
79
68
|
}
|
|
80
69
|
|
|
81
|
-
Expression_Ptr Listize::fallback_impl(AST_Node_Ptr n)
|
|
82
|
-
{
|
|
83
|
-
return Cast<Expression>(n);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
70
|
}
|