sassc 2.1.0.pre3 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -0
- data/CHANGELOG.md +24 -0
- data/Rakefile +2 -4
- data/ext/extconf.rb +13 -5
- data/ext/libsass/VERSION +1 -1
- data/ext/libsass/include/sass/base.h +2 -1
- data/ext/libsass/include/sass/context.h +4 -0
- data/ext/libsass/src/MurmurHash2.hpp +91 -0
- data/ext/libsass/src/ast.cpp +158 -168
- data/ext/libsass/src/ast.hpp +389 -230
- data/ext/libsass/src/ast_def_macros.hpp +18 -10
- data/ext/libsass/src/ast_fwd_decl.cpp +4 -3
- data/ext/libsass/src/ast_fwd_decl.hpp +98 -165
- data/ext/libsass/src/ast_helpers.hpp +292 -0
- data/ext/libsass/src/ast_sel_cmp.cpp +219 -732
- data/ext/libsass/src/ast_sel_super.cpp +539 -0
- data/ext/libsass/src/ast_sel_unify.cpp +207 -212
- data/ext/libsass/src/ast_sel_weave.cpp +616 -0
- data/ext/libsass/src/ast_selectors.cpp +594 -1026
- data/ext/libsass/src/ast_selectors.hpp +339 -385
- data/ext/libsass/src/ast_supports.cpp +36 -52
- data/ext/libsass/src/ast_supports.hpp +29 -29
- data/ext/libsass/src/ast_values.cpp +271 -84
- data/ext/libsass/src/ast_values.hpp +116 -107
- data/ext/libsass/src/backtrace.cpp +9 -9
- data/ext/libsass/src/backtrace.hpp +5 -5
- data/ext/libsass/src/base64vlq.cpp +2 -2
- data/ext/libsass/src/base64vlq.hpp +1 -1
- data/ext/libsass/src/bind.cpp +18 -18
- data/ext/libsass/src/bind.hpp +1 -1
- data/ext/libsass/src/c2ast.cpp +3 -3
- data/ext/libsass/src/c2ast.hpp +1 -1
- data/ext/libsass/src/cencode.c +4 -6
- data/ext/libsass/src/check_nesting.cpp +40 -41
- data/ext/libsass/src/check_nesting.hpp +6 -2
- data/ext/libsass/src/color_maps.cpp +14 -13
- data/ext/libsass/src/color_maps.hpp +1 -9
- data/ext/libsass/src/constants.cpp +5 -0
- data/ext/libsass/src/constants.hpp +6 -0
- data/ext/libsass/src/context.cpp +92 -119
- data/ext/libsass/src/context.hpp +41 -53
- data/ext/libsass/src/cssize.cpp +66 -149
- data/ext/libsass/src/cssize.hpp +17 -23
- data/ext/libsass/src/dart_helpers.hpp +199 -0
- data/ext/libsass/src/debugger.hpp +451 -295
- data/ext/libsass/src/emitter.cpp +15 -16
- data/ext/libsass/src/emitter.hpp +10 -12
- data/ext/libsass/src/environment.cpp +27 -27
- data/ext/libsass/src/environment.hpp +29 -24
- data/ext/libsass/src/error_handling.cpp +62 -41
- data/ext/libsass/src/error_handling.hpp +61 -51
- data/ext/libsass/src/eval.cpp +167 -281
- data/ext/libsass/src/eval.hpp +27 -29
- data/ext/libsass/src/eval_selectors.cpp +75 -0
- data/ext/libsass/src/expand.cpp +275 -222
- data/ext/libsass/src/expand.hpp +36 -16
- 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 +81 -72
- data/ext/libsass/src/file.hpp +28 -37
- data/ext/libsass/src/fn_colors.cpp +20 -18
- data/ext/libsass/src/fn_lists.cpp +30 -29
- data/ext/libsass/src/fn_maps.cpp +3 -3
- data/ext/libsass/src/fn_miscs.cpp +34 -46
- data/ext/libsass/src/fn_numbers.cpp +20 -13
- data/ext/libsass/src/fn_selectors.cpp +98 -128
- data/ext/libsass/src/fn_strings.cpp +47 -33
- data/ext/libsass/src/fn_utils.cpp +31 -29
- data/ext/libsass/src/fn_utils.hpp +17 -11
- data/ext/libsass/src/inspect.cpp +186 -148
- data/ext/libsass/src/inspect.hpp +31 -29
- data/ext/libsass/src/lexer.cpp +20 -82
- data/ext/libsass/src/lexer.hpp +5 -16
- data/ext/libsass/src/listize.cpp +23 -37
- data/ext/libsass/src/listize.hpp +8 -9
- 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/{SharedPtr.cpp → shared_ptr.cpp} +2 -2
- data/ext/libsass/src/memory/{SharedPtr.hpp → shared_ptr.hpp} +55 -9
- data/ext/libsass/src/operation.hpp +71 -61
- data/ext/libsass/src/operators.cpp +19 -18
- data/ext/libsass/src/operators.hpp +11 -11
- data/ext/libsass/src/ordered_map.hpp +112 -0
- data/ext/libsass/src/output.cpp +45 -64
- data/ext/libsass/src/output.hpp +6 -6
- data/ext/libsass/src/parser.cpp +512 -700
- data/ext/libsass/src/parser.hpp +89 -97
- data/ext/libsass/src/parser_selectors.cpp +189 -0
- data/ext/libsass/src/permutate.hpp +164 -0
- data/ext/libsass/src/plugins.cpp +7 -7
- data/ext/libsass/src/plugins.hpp +8 -8
- data/ext/libsass/src/position.cpp +7 -26
- data/ext/libsass/src/position.hpp +44 -21
- data/ext/libsass/src/prelexer.cpp +6 -6
- data/ext/libsass/src/remove_placeholders.cpp +55 -56
- data/ext/libsass/src/remove_placeholders.hpp +21 -18
- data/ext/libsass/src/sass.cpp +16 -15
- data/ext/libsass/src/sass.hpp +10 -5
- data/ext/libsass/src/sass2scss.cpp +4 -4
- data/ext/libsass/src/sass_context.cpp +91 -122
- data/ext/libsass/src/sass_context.hpp +2 -2
- data/ext/libsass/src/sass_functions.cpp +1 -1
- data/ext/libsass/src/sass_values.cpp +8 -11
- 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 +22 -18
- data/ext/libsass/src/source_map.hpp +12 -9
- data/ext/libsass/src/stylesheet.cpp +22 -0
- data/ext/libsass/src/stylesheet.hpp +57 -0
- data/ext/libsass/src/to_value.cpp +2 -2
- data/ext/libsass/src/to_value.hpp +1 -1
- data/ext/libsass/src/units.cpp +24 -22
- data/ext/libsass/src/units.hpp +8 -8
- data/ext/libsass/src/utf8_string.cpp +9 -10
- data/ext/libsass/src/utf8_string.hpp +7 -6
- data/ext/libsass/src/util.cpp +48 -50
- data/ext/libsass/src/util.hpp +20 -21
- data/ext/libsass/src/util_string.cpp +111 -61
- data/ext/libsass/src/util_string.hpp +62 -8
- data/ext/libsass/src/values.cpp +12 -12
- data/lib/sassc/engine.rb +5 -3
- data/lib/sassc/functions_handler.rb +11 -13
- data/lib/sassc/native.rb +9 -7
- data/lib/sassc/script.rb +4 -6
- data/lib/sassc/version.rb +1 -1
- data/test/functions_test.rb +38 -1
- data/test/native_test.rb +4 -4
- metadata +31 -18
- data/ext/libsass/src/extend.cpp +0 -2132
- data/ext/libsass/src/extend.hpp +0 -86
- data/ext/libsass/src/node.cpp +0 -322
- data/ext/libsass/src/node.hpp +0 -118
- data/ext/libsass/src/paths.hpp +0 -71
- data/ext/libsass/src/sass_util.cpp +0 -152
- data/ext/libsass/src/sass_util.hpp +0 -256
- data/ext/libsass/src/subset_map.cpp +0 -58
- data/ext/libsass/src/subset_map.hpp +0 -76
- data/lib/sassc/native/lib_c.rb +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 75155de90eb3449ed2a1214ca6ab2b82ffe69b144c2a8eaf8a6a4fd522b58ea4
|
4
|
+
data.tar.gz: 8575ebe24a2d56a9bea0e4574ebd23753e283d3b34bf571489f318a357bce2b9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ae3eb9431fb5d9de9e1c1759844e1144aba73f59b7de40e1b06d77ba5567bc894a2f0a4ef2d3b6dcce9226044d52de5eeacb7759e715f3eb1bd4818b56b9876c
|
7
|
+
data.tar.gz: e4a07f5789ec2d9f4dbf04bfaf13b5d12224cf4ffd9f72721fac8edfd10eb2b7085af53d70248ce78112ee7af0ea06fb5e452388997eab810d07bd5a7de08a5c
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,27 @@
|
|
1
|
+
- **2.4.0**
|
2
|
+
- [Update libsass to 3.6.4](https://github.com/sass/sassc-ruby/pull/199)
|
3
|
+
- [Use FFI::MemoryPointer instead of libc's malloc()](https://github.com/sass/sassc-ruby/pull/205)
|
4
|
+
- [Test against Ruby 2.7.0](https://github.com/sass/sassc-ruby/pull/193)
|
5
|
+
|
6
|
+
- **2.3.0**
|
7
|
+
- [Fix rake gem:native task](https://github.com/sass/sassc-ruby/pull/196)
|
8
|
+
- [disable lto flag for darwin + nix](https://github.com/sass/sassc-ruby/pull/166)
|
9
|
+
- [Sort input file list](https://github.com/sass/sassc-ruby/pull/178)
|
10
|
+
- [Set appropriate encoding for source_map](https://github.com/sass/sassc-ruby/pull/152)
|
11
|
+
- [allow passing functions directly](https://github.com/sass/sassc-ruby/pull/162)
|
12
|
+
- [always dispose data context](https://github.com/sass/sassc-ruby/pull/161)
|
13
|
+
- [Update libsass to 3.6.3](https://github.com/sass/sassc-ruby/pull/164)
|
14
|
+
- [Restore strip symbols](https://github.com/sass/sassc-ruby/pull/184)
|
15
|
+
- [Default --march-tune-native to false](https://github.com/sass/sassc-ruby/pull/158)
|
16
|
+
- [Fix compile issue on Mac OS X](https://github.com/sass/sassc-ruby/pull/174)
|
17
|
+
- [Test on TruffleRuby in TravisCI](https://github.com/sass/sassc-ruby/pull/171)
|
18
|
+
- [Use RbConfig::MAKEFILE_CONFIG['DLEXT'] instead of hardcoding extensions](https://github.com/sass/sassc-ruby/pull/173)
|
19
|
+
- **2.2.1**
|
20
|
+
- [Fix LoadError on some non-rvm environments](https://github.com/sass/sassc-ruby/pull/156)
|
21
|
+
- **2.2.0**
|
22
|
+
- [Do not build precompiled gems for Linux](https://github.com/sass/sassc-ruby/pull/145)
|
23
|
+
- **2.1.0**
|
24
|
+
- Equivalent to 2.1.0.pre3
|
1
25
|
- **2.1.0.pre3**
|
2
26
|
- [extconf.rb: Always write VERSION if we have .git](https://github.com/sass/sassc-ruby/pull/131)
|
3
27
|
- [Update libsass to 3.6.1](https://github.com/sass/sassc-ruby/pull/130)
|
data/Rakefile
CHANGED
@@ -18,7 +18,7 @@ Rake::ExtensionTask.new('libsass', gem_spec) do |ext|
|
|
18
18
|
ext.ext_dir = 'ext'
|
19
19
|
ext.lib_dir = 'lib/sassc'
|
20
20
|
ext.cross_compile = true
|
21
|
-
ext.cross_platform = %w[x86-mingw32 x64-mingw32
|
21
|
+
ext.cross_platform = %w[x86-mingw32 x64-mingw32]
|
22
22
|
|
23
23
|
# Link C++ stdlib statically when building binary gems.
|
24
24
|
ext.cross_config_options << '--enable-static-stdlib'
|
@@ -36,9 +36,7 @@ task 'gem:native' do
|
|
36
36
|
|
37
37
|
# The RUBY_CC_VERSION here doesn't matter for the final package.
|
38
38
|
# Only one version should be specified, as the shared library is Ruby-agnostic.
|
39
|
-
|
40
|
-
# g++-multilib is installed for 64->32-bit cross-compilation.
|
41
|
-
RakeCompilerDock.sh "sudo apt-get install -y g++-multilib && bundle && gem i rake --no-document && "\
|
39
|
+
RakeCompilerDock.sh "gem i rake bundler --no-document && bundle && "\
|
42
40
|
"rake clean && rake cross native gem MAKE='nice make -j`nproc`' "\
|
43
41
|
"RUBY_CC_VERSION=2.6.0 CLEAN=1"
|
44
42
|
end
|
data/ext/extconf.rb
CHANGED
@@ -19,13 +19,17 @@ if enable_config('static-stdlib', false)
|
|
19
19
|
$LDFLAGS << ' -static-libgcc -static-libstdc++'
|
20
20
|
end
|
21
21
|
|
22
|
-
|
23
|
-
if enable_config('march-tune-native', true)
|
22
|
+
if enable_config('march-tune-native', false)
|
24
23
|
$CFLAGS << ' -march=native -mtune=native'
|
25
24
|
$CXXFLAGS << ' -march=native -mtune=native'
|
26
25
|
end
|
27
26
|
|
28
|
-
|
27
|
+
# darwin nix clang doesn't support lto
|
28
|
+
# disable -lto flag for darwin + nix
|
29
|
+
# see: https://github.com/sass/sassc-ruby/issues/148
|
30
|
+
enable_lto_by_default = (Gem::Platform.local.os == "darwin" && !ENV['NIX_CC'].nil?)
|
31
|
+
|
32
|
+
if enable_config('lto', enable_lto_by_default)
|
29
33
|
$CFLAGS << ' -flto'
|
30
34
|
$CXXFLAGS << ' -flto'
|
31
35
|
$LDFLAGS << ' -flto'
|
@@ -56,10 +60,14 @@ $INCFLAGS << " -I$(srcdir)/libsass/include"
|
|
56
60
|
$VPATH << "$(srcdir)/libsass/src"
|
57
61
|
Dir.chdir(__dir__) do
|
58
62
|
$VPATH += Dir['libsass/src/*/'].map { |p| "$(srcdir)/#{p}" }
|
59
|
-
$srcs = Dir['libsass/src/**/*.{c,cpp}']
|
63
|
+
$srcs = Dir['libsass/src/**/*.{c,cpp}'].sort
|
60
64
|
end
|
61
65
|
|
62
|
-
|
66
|
+
# libsass.bundle malformed object (unknown load command 7) on Mac OS X
|
67
|
+
# See https://github.com/sass/sassc-ruby/pull/174
|
68
|
+
if enable_config('strip', RbConfig::CONFIG['host_os'].downcase !~ /darwin/)
|
69
|
+
MakeMakefile::LINK_SO << "\nstrip -x $@"
|
70
|
+
end
|
63
71
|
|
64
72
|
# Don't link libruby.
|
65
73
|
$LIBRUBYARG = nil
|
data/ext/libsass/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.6.
|
1
|
+
3.6.4
|
@@ -125,6 +125,9 @@ ADDAPI char** ADDCALL sass_context_get_included_files (struct Sass_Context* ctx)
|
|
125
125
|
// Getters for options include path array
|
126
126
|
ADDAPI size_t ADDCALL sass_option_get_include_path_size(struct Sass_Options* options);
|
127
127
|
ADDAPI const char* ADDCALL sass_option_get_include_path(struct Sass_Options* options, size_t i);
|
128
|
+
// Plugin paths to load dynamic libraries work the same
|
129
|
+
ADDAPI size_t ADDCALL sass_option_get_plugin_path_size(struct Sass_Options* options);
|
130
|
+
ADDAPI const char* ADDCALL sass_option_get_plugin_path(struct Sass_Options* options, size_t i);
|
128
131
|
|
129
132
|
// Calculate the size of the stored null terminated array
|
130
133
|
ADDAPI size_t ADDCALL sass_context_get_included_files_size (struct Sass_Context* ctx);
|
@@ -134,6 +137,7 @@ ADDAPI char* ADDCALL sass_context_take_error_json (struct Sass_Context* ctx);
|
|
134
137
|
ADDAPI char* ADDCALL sass_context_take_error_text (struct Sass_Context* ctx);
|
135
138
|
ADDAPI char* ADDCALL sass_context_take_error_message (struct Sass_Context* ctx);
|
136
139
|
ADDAPI char* ADDCALL sass_context_take_error_file (struct Sass_Context* ctx);
|
140
|
+
ADDAPI char* ADDCALL sass_context_take_error_src (struct Sass_Context* ctx);
|
137
141
|
ADDAPI char* ADDCALL sass_context_take_output_string (struct Sass_Context* ctx);
|
138
142
|
ADDAPI char* ADDCALL sass_context_take_source_map_string (struct Sass_Context* ctx);
|
139
143
|
ADDAPI char** ADDCALL sass_context_take_included_files (struct Sass_Context* ctx);
|
@@ -0,0 +1,91 @@
|
|
1
|
+
//-----------------------------------------------------------------------------
|
2
|
+
// MurmurHash2 was written by Austin Appleby, and is placed in the public
|
3
|
+
// domain. The author hereby disclaims copyright to this source code.
|
4
|
+
//-----------------------------------------------------------------------------
|
5
|
+
// LibSass only needs MurmurHash2, so we made this header only
|
6
|
+
//-----------------------------------------------------------------------------
|
7
|
+
|
8
|
+
#ifndef _MURMURHASH2_H_
|
9
|
+
#define _MURMURHASH2_H_
|
10
|
+
|
11
|
+
//-----------------------------------------------------------------------------
|
12
|
+
// Platform-specific functions and macros
|
13
|
+
|
14
|
+
// Microsoft Visual Studio
|
15
|
+
|
16
|
+
#if defined(_MSC_VER) && (_MSC_VER < 1600)
|
17
|
+
|
18
|
+
typedef unsigned char uint8_t;
|
19
|
+
typedef unsigned int uint32_t;
|
20
|
+
typedef unsigned __int64 uint64_t;
|
21
|
+
|
22
|
+
// Other compilers
|
23
|
+
|
24
|
+
#else // defined(_MSC_VER)
|
25
|
+
|
26
|
+
#include <stdint.h>
|
27
|
+
|
28
|
+
#endif // !defined(_MSC_VER)
|
29
|
+
|
30
|
+
//-----------------------------------------------------------------------------
|
31
|
+
|
32
|
+
inline uint32_t MurmurHash2 ( const void * key, int len, uint32_t seed )
|
33
|
+
{
|
34
|
+
// 'm' and 'r' are mixing constants generated offline.
|
35
|
+
// They're not really 'magic', they just happen to work well.
|
36
|
+
|
37
|
+
const uint32_t m = 0x5bd1e995;
|
38
|
+
const int r = 24;
|
39
|
+
|
40
|
+
// Initialize the hash to a 'random' value
|
41
|
+
|
42
|
+
uint32_t h = seed ^ len;
|
43
|
+
|
44
|
+
// Mix 4 bytes at a time into the hash
|
45
|
+
|
46
|
+
const unsigned char * data = (const unsigned char *)key;
|
47
|
+
|
48
|
+
while(len >= 4)
|
49
|
+
{
|
50
|
+
uint32_t k = *(uint32_t*)data;
|
51
|
+
|
52
|
+
k *= m;
|
53
|
+
k ^= k >> r;
|
54
|
+
k *= m;
|
55
|
+
|
56
|
+
h *= m;
|
57
|
+
h ^= k;
|
58
|
+
|
59
|
+
data += 4;
|
60
|
+
len -= 4;
|
61
|
+
}
|
62
|
+
|
63
|
+
// Handle the last few bytes of the input array
|
64
|
+
|
65
|
+
switch(len)
|
66
|
+
{
|
67
|
+
case 3:
|
68
|
+
h ^= data[2] << 16;
|
69
|
+
/* fall through */
|
70
|
+
case 2:
|
71
|
+
h ^= data[1] << 8;
|
72
|
+
/* fall through */
|
73
|
+
case 1:
|
74
|
+
h ^= data[0];
|
75
|
+
h *= m;
|
76
|
+
};
|
77
|
+
|
78
|
+
// Do a few final mixes of the hash to ensure the last few
|
79
|
+
// bytes are well-incorporated.
|
80
|
+
|
81
|
+
h ^= h >> 13;
|
82
|
+
h *= m;
|
83
|
+
h ^= h >> 15;
|
84
|
+
|
85
|
+
return h;
|
86
|
+
}
|
87
|
+
|
88
|
+
//-----------------------------------------------------------------------------
|
89
|
+
|
90
|
+
#endif // _MURMURHASH2_H_
|
91
|
+
|
data/ext/libsass/src/ast.cpp
CHANGED
@@ -1,23 +1,12 @@
|
|
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 "ast.hpp"
|
3
|
-
#include "context.hpp"
|
4
|
-
#include "node.hpp"
|
5
|
-
#include "eval.hpp"
|
6
|
-
#include "extend.hpp"
|
7
|
-
#include "emitter.hpp"
|
8
|
-
#include "color_maps.hpp"
|
9
|
-
#include "ast_fwd_decl.hpp"
|
10
|
-
#include <set>
|
11
|
-
#include <iomanip>
|
12
|
-
#include <iostream>
|
13
|
-
#include <algorithm>
|
14
|
-
#include <functional>
|
15
|
-
#include <cctype>
|
16
|
-
#include <locale>
|
17
6
|
|
18
7
|
namespace Sass {
|
19
8
|
|
20
|
-
static Null sass_null(
|
9
|
+
static Null sass_null(SourceSpan("null"));
|
21
10
|
|
22
11
|
const char* sass_op_to_name(enum Sass_OP op) {
|
23
12
|
switch (op) {
|
@@ -64,12 +53,12 @@ namespace Sass {
|
|
64
53
|
/////////////////////////////////////////////////////////////////////////
|
65
54
|
/////////////////////////////////////////////////////////////////////////
|
66
55
|
|
67
|
-
void AST_Node::update_pstate(const
|
56
|
+
void AST_Node::update_pstate(const SourceSpan& pstate)
|
68
57
|
{
|
69
|
-
pstate_.offset += pstate - pstate_ + pstate.offset;
|
58
|
+
pstate_.offset += pstate.position - pstate_.position + pstate.offset;
|
70
59
|
}
|
71
60
|
|
72
|
-
|
61
|
+
sass::string AST_Node::to_string(Sass_Inspect_Options opt) const
|
73
62
|
{
|
74
63
|
Sass_Output_Options out(opt);
|
75
64
|
Emitter emitter(out);
|
@@ -80,25 +69,27 @@ namespace Sass {
|
|
80
69
|
return i.get_buffer();
|
81
70
|
}
|
82
71
|
|
83
|
-
|
72
|
+
sass::string AST_Node::to_css(Sass_Inspect_Options opt) const
|
84
73
|
{
|
85
|
-
|
74
|
+
opt.output_style = TO_CSS;
|
75
|
+
Sass_Output_Options out(opt);
|
76
|
+
Emitter emitter(out);
|
77
|
+
Inspect i(emitter);
|
78
|
+
i.in_declaration = true;
|
79
|
+
// ToDo: inspect should be const
|
80
|
+
const_cast<AST_Node*>(this)->perform(&i);
|
81
|
+
return i.get_buffer();
|
86
82
|
}
|
87
83
|
|
88
|
-
|
89
|
-
/////////////////////////////////////////////////////////////////////////
|
90
|
-
|
91
|
-
Expression_Obj Hashed::at(Expression_Obj k) const
|
84
|
+
sass::string AST_Node::to_string() const
|
92
85
|
{
|
93
|
-
|
94
|
-
{ return elements_.at(k); }
|
95
|
-
else { return {}; }
|
86
|
+
return to_string({ NESTED, 5 });
|
96
87
|
}
|
97
88
|
|
98
89
|
/////////////////////////////////////////////////////////////////////////
|
99
90
|
/////////////////////////////////////////////////////////////////////////
|
100
91
|
|
101
|
-
Statement::Statement(
|
92
|
+
Statement::Statement(SourceSpan pstate, Type st, size_t t)
|
102
93
|
: AST_Node(pstate), statement_type_(st), tabs_(t), group_end_(false)
|
103
94
|
{ }
|
104
95
|
Statement::Statement(const Statement* ptr)
|
@@ -126,7 +117,7 @@ namespace Sass {
|
|
126
117
|
/////////////////////////////////////////////////////////////////////////
|
127
118
|
/////////////////////////////////////////////////////////////////////////
|
128
119
|
|
129
|
-
Block::Block(
|
120
|
+
Block::Block(SourceSpan pstate, size_t s, bool r)
|
130
121
|
: Statement(pstate),
|
131
122
|
Vectorized<Statement_Obj>(s),
|
132
123
|
is_root_(r)
|
@@ -137,6 +128,14 @@ namespace Sass {
|
|
137
128
|
is_root_(ptr->is_root_)
|
138
129
|
{ }
|
139
130
|
|
131
|
+
bool Block::isInvisible() const
|
132
|
+
{
|
133
|
+
for (auto& item : elements()) {
|
134
|
+
if (!item->is_invisible()) return false;
|
135
|
+
}
|
136
|
+
return true;
|
137
|
+
}
|
138
|
+
|
140
139
|
bool Block::has_content()
|
141
140
|
{
|
142
141
|
for (size_t i = 0, L = elements().size(); i < L; ++i) {
|
@@ -148,14 +147,14 @@ namespace Sass {
|
|
148
147
|
/////////////////////////////////////////////////////////////////////////
|
149
148
|
/////////////////////////////////////////////////////////////////////////
|
150
149
|
|
151
|
-
|
150
|
+
ParentStatement::ParentStatement(SourceSpan pstate, Block_Obj b)
|
152
151
|
: Statement(pstate), block_(b)
|
153
152
|
{ }
|
154
|
-
|
153
|
+
ParentStatement::ParentStatement(const ParentStatement* ptr)
|
155
154
|
: Statement(ptr), block_(ptr->block_)
|
156
155
|
{ }
|
157
156
|
|
158
|
-
bool
|
157
|
+
bool ParentStatement::has_content()
|
159
158
|
{
|
160
159
|
return (block_ && block_->has_content()) || Statement::has_content();
|
161
160
|
}
|
@@ -163,19 +162,20 @@ namespace Sass {
|
|
163
162
|
/////////////////////////////////////////////////////////////////////////
|
164
163
|
/////////////////////////////////////////////////////////////////////////
|
165
164
|
|
166
|
-
|
167
|
-
:
|
165
|
+
StyleRule::StyleRule(SourceSpan pstate, SelectorListObj s, Block_Obj b)
|
166
|
+
: ParentStatement(pstate, b), selector_(s), schema_(), is_root_(false)
|
168
167
|
{ statement_type(RULESET); }
|
169
|
-
|
170
|
-
:
|
168
|
+
StyleRule::StyleRule(const StyleRule* ptr)
|
169
|
+
: ParentStatement(ptr),
|
171
170
|
selector_(ptr->selector_),
|
171
|
+
schema_(ptr->schema_),
|
172
172
|
is_root_(ptr->is_root_)
|
173
173
|
{ statement_type(RULESET); }
|
174
174
|
|
175
|
-
bool
|
176
|
-
if (
|
177
|
-
for (size_t i = 0, L = sl->length(); i < L;
|
178
|
-
if (!(*sl)[i]->
|
175
|
+
bool StyleRule::is_invisible() const {
|
176
|
+
if (const SelectorList * sl = Cast<SelectorList>(selector())) {
|
177
|
+
for (size_t i = 0, L = sl->length(); i < L; i += 1)
|
178
|
+
if (!(*sl)[i]->isInvisible()) return false;
|
179
179
|
}
|
180
180
|
return true;
|
181
181
|
}
|
@@ -183,7 +183,7 @@ namespace Sass {
|
|
183
183
|
/////////////////////////////////////////////////////////////////////////
|
184
184
|
/////////////////////////////////////////////////////////////////////////
|
185
185
|
|
186
|
-
Bubble::Bubble(
|
186
|
+
Bubble::Bubble(SourceSpan pstate, Statement_Obj n, Statement_Obj g, size_t t)
|
187
187
|
: Statement(pstate, Statement::BUBBLE, t), node_(n), group_end_(g == nullptr)
|
188
188
|
{ }
|
189
189
|
Bubble::Bubble(const Bubble* ptr)
|
@@ -200,11 +200,11 @@ namespace Sass {
|
|
200
200
|
/////////////////////////////////////////////////////////////////////////
|
201
201
|
/////////////////////////////////////////////////////////////////////////
|
202
202
|
|
203
|
-
Trace::Trace(
|
204
|
-
:
|
203
|
+
Trace::Trace(SourceSpan pstate, sass::string n, Block_Obj b, char type)
|
204
|
+
: ParentStatement(pstate, b), type_(type), name_(n)
|
205
205
|
{ }
|
206
206
|
Trace::Trace(const Trace* ptr)
|
207
|
-
:
|
207
|
+
: ParentStatement(ptr),
|
208
208
|
type_(ptr->type_),
|
209
209
|
name_(ptr->name_)
|
210
210
|
{ }
|
@@ -212,48 +212,25 @@ namespace Sass {
|
|
212
212
|
/////////////////////////////////////////////////////////////////////////
|
213
213
|
/////////////////////////////////////////////////////////////////////////
|
214
214
|
|
215
|
-
|
216
|
-
:
|
217
|
-
{ statement_type(MEDIA); }
|
218
|
-
Media_Block::Media_Block(const Media_Block* ptr)
|
219
|
-
: Has_Block(ptr), media_queries_(ptr->media_queries_)
|
220
|
-
{ statement_type(MEDIA); }
|
221
|
-
|
222
|
-
bool Media_Block::is_invisible() const {
|
223
|
-
for (size_t i = 0, L = block()->length(); i < L; ++i) {
|
224
|
-
Statement_Obj stm = block()->at(i);
|
225
|
-
if (!stm->is_invisible()) return false;
|
226
|
-
}
|
227
|
-
return true;
|
228
|
-
}
|
229
|
-
|
230
|
-
bool Media_Block::bubbles()
|
231
|
-
{
|
232
|
-
return true;
|
233
|
-
}
|
234
|
-
|
235
|
-
/////////////////////////////////////////////////////////////////////////
|
236
|
-
/////////////////////////////////////////////////////////////////////////
|
237
|
-
|
238
|
-
Directive::Directive(ParserState pstate, std::string kwd, Selector_List_Obj sel, Block_Obj b, Expression_Obj val)
|
239
|
-
: Has_Block(pstate, b), keyword_(kwd), selector_(sel), value_(val) // set value manually if needed
|
215
|
+
AtRule::AtRule(SourceSpan pstate, sass::string kwd, SelectorListObj sel, Block_Obj b, ExpressionObj val)
|
216
|
+
: ParentStatement(pstate, b), keyword_(kwd), selector_(sel), value_(val) // set value manually if needed
|
240
217
|
{ statement_type(DIRECTIVE); }
|
241
|
-
|
242
|
-
:
|
218
|
+
AtRule::AtRule(const AtRule* ptr)
|
219
|
+
: ParentStatement(ptr),
|
243
220
|
keyword_(ptr->keyword_),
|
244
221
|
selector_(ptr->selector_),
|
245
222
|
value_(ptr->value_) // set value manually if needed
|
246
223
|
{ statement_type(DIRECTIVE); }
|
247
224
|
|
248
|
-
bool
|
225
|
+
bool AtRule::bubbles() { return is_keyframes() || is_media(); }
|
249
226
|
|
250
|
-
bool
|
227
|
+
bool AtRule::is_media() {
|
251
228
|
return keyword_.compare("@-webkit-media") == 0 ||
|
252
229
|
keyword_.compare("@-moz-media") == 0 ||
|
253
230
|
keyword_.compare("@-o-media") == 0 ||
|
254
231
|
keyword_.compare("@media") == 0;
|
255
232
|
}
|
256
|
-
bool
|
233
|
+
bool AtRule::is_keyframes() {
|
257
234
|
return keyword_.compare("@-webkit-keyframes") == 0 ||
|
258
235
|
keyword_.compare("@-moz-keyframes") == 0 ||
|
259
236
|
keyword_.compare("@-o-keyframes") == 0 ||
|
@@ -263,21 +240,21 @@ namespace Sass {
|
|
263
240
|
/////////////////////////////////////////////////////////////////////////
|
264
241
|
/////////////////////////////////////////////////////////////////////////
|
265
242
|
|
266
|
-
Keyframe_Rule::Keyframe_Rule(
|
267
|
-
:
|
243
|
+
Keyframe_Rule::Keyframe_Rule(SourceSpan pstate, Block_Obj b)
|
244
|
+
: ParentStatement(pstate, b), name_()
|
268
245
|
{ statement_type(KEYFRAMERULE); }
|
269
246
|
Keyframe_Rule::Keyframe_Rule(const Keyframe_Rule* ptr)
|
270
|
-
:
|
247
|
+
: ParentStatement(ptr), name_(ptr->name_)
|
271
248
|
{ statement_type(KEYFRAMERULE); }
|
272
249
|
|
273
250
|
/////////////////////////////////////////////////////////////////////////
|
274
251
|
/////////////////////////////////////////////////////////////////////////
|
275
252
|
|
276
|
-
Declaration::Declaration(
|
277
|
-
:
|
253
|
+
Declaration::Declaration(SourceSpan pstate, String_Obj prop, ExpressionObj val, bool i, bool c, Block_Obj b)
|
254
|
+
: ParentStatement(pstate, b), property_(prop), value_(val), is_important_(i), is_custom_property_(c), is_indented_(false)
|
278
255
|
{ statement_type(DECLARATION); }
|
279
256
|
Declaration::Declaration(const Declaration* ptr)
|
280
|
-
:
|
257
|
+
: ParentStatement(ptr),
|
281
258
|
property_(ptr->property_),
|
282
259
|
value_(ptr->value_),
|
283
260
|
is_important_(ptr->is_important_),
|
@@ -294,7 +271,7 @@ namespace Sass {
|
|
294
271
|
/////////////////////////////////////////////////////////////////////////
|
295
272
|
/////////////////////////////////////////////////////////////////////////
|
296
273
|
|
297
|
-
Assignment::Assignment(
|
274
|
+
Assignment::Assignment(SourceSpan pstate, sass::string var, ExpressionObj val, bool is_default, bool is_global)
|
298
275
|
: Statement(pstate), variable_(var), value_(val), is_default_(is_default), is_global_(is_global)
|
299
276
|
{ statement_type(ASSIGNMENT); }
|
300
277
|
Assignment::Assignment(const Assignment* ptr)
|
@@ -308,10 +285,10 @@ namespace Sass {
|
|
308
285
|
/////////////////////////////////////////////////////////////////////////
|
309
286
|
/////////////////////////////////////////////////////////////////////////
|
310
287
|
|
311
|
-
Import::Import(
|
288
|
+
Import::Import(SourceSpan pstate)
|
312
289
|
: Statement(pstate),
|
313
|
-
urls_(
|
314
|
-
incs_(
|
290
|
+
urls_(sass::vector<ExpressionObj>()),
|
291
|
+
incs_(sass::vector<Include>()),
|
315
292
|
import_queries_()
|
316
293
|
{ statement_type(IMPORT); }
|
317
294
|
Import::Import(const Import* ptr)
|
@@ -321,56 +298,56 @@ namespace Sass {
|
|
321
298
|
import_queries_(ptr->import_queries_)
|
322
299
|
{ statement_type(IMPORT); }
|
323
300
|
|
324
|
-
|
325
|
-
|
301
|
+
sass::vector<Include>& Import::incs() { return incs_; }
|
302
|
+
sass::vector<ExpressionObj>& Import::urls() { return urls_; }
|
326
303
|
|
327
304
|
/////////////////////////////////////////////////////////////////////////
|
328
305
|
/////////////////////////////////////////////////////////////////////////
|
329
306
|
|
330
|
-
Import_Stub::Import_Stub(
|
307
|
+
Import_Stub::Import_Stub(SourceSpan pstate, Include res)
|
331
308
|
: Statement(pstate), resource_(res)
|
332
309
|
{ statement_type(IMPORT_STUB); }
|
333
310
|
Import_Stub::Import_Stub(const Import_Stub* ptr)
|
334
311
|
: Statement(ptr), resource_(ptr->resource_)
|
335
312
|
{ statement_type(IMPORT_STUB); }
|
336
313
|
Include Import_Stub::resource() { return resource_; };
|
337
|
-
|
338
|
-
|
314
|
+
sass::string Import_Stub::imp_path() { return resource_.imp_path; };
|
315
|
+
sass::string Import_Stub::abs_path() { return resource_.abs_path; };
|
339
316
|
|
340
317
|
/////////////////////////////////////////////////////////////////////////
|
341
318
|
/////////////////////////////////////////////////////////////////////////
|
342
319
|
|
343
|
-
|
320
|
+
WarningRule::WarningRule(SourceSpan pstate, ExpressionObj msg)
|
344
321
|
: Statement(pstate), message_(msg)
|
345
322
|
{ statement_type(WARNING); }
|
346
|
-
|
323
|
+
WarningRule::WarningRule(const WarningRule* ptr)
|
347
324
|
: Statement(ptr), message_(ptr->message_)
|
348
325
|
{ statement_type(WARNING); }
|
349
326
|
|
350
327
|
/////////////////////////////////////////////////////////////////////////
|
351
328
|
/////////////////////////////////////////////////////////////////////////
|
352
329
|
|
353
|
-
|
330
|
+
ErrorRule::ErrorRule(SourceSpan pstate, ExpressionObj msg)
|
354
331
|
: Statement(pstate), message_(msg)
|
355
332
|
{ statement_type(ERROR); }
|
356
|
-
|
333
|
+
ErrorRule::ErrorRule(const ErrorRule* ptr)
|
357
334
|
: Statement(ptr), message_(ptr->message_)
|
358
335
|
{ statement_type(ERROR); }
|
359
336
|
|
360
337
|
/////////////////////////////////////////////////////////////////////////
|
361
338
|
/////////////////////////////////////////////////////////////////////////
|
362
339
|
|
363
|
-
|
340
|
+
DebugRule::DebugRule(SourceSpan pstate, ExpressionObj val)
|
364
341
|
: Statement(pstate), value_(val)
|
365
342
|
{ statement_type(DEBUGSTMT); }
|
366
|
-
|
343
|
+
DebugRule::DebugRule(const DebugRule* ptr)
|
367
344
|
: Statement(ptr), value_(ptr->value_)
|
368
345
|
{ statement_type(DEBUGSTMT); }
|
369
346
|
|
370
347
|
/////////////////////////////////////////////////////////////////////////
|
371
348
|
/////////////////////////////////////////////////////////////////////////
|
372
349
|
|
373
|
-
Comment::Comment(
|
350
|
+
Comment::Comment(SourceSpan pstate, String_Obj txt, bool is_important)
|
374
351
|
: Statement(pstate), text_(txt), is_important_(is_important)
|
375
352
|
{ statement_type(COMMENT); }
|
376
353
|
Comment::Comment(const Comment* ptr)
|
@@ -387,30 +364,30 @@ namespace Sass {
|
|
387
364
|
/////////////////////////////////////////////////////////////////////////
|
388
365
|
/////////////////////////////////////////////////////////////////////////
|
389
366
|
|
390
|
-
If::If(
|
391
|
-
:
|
367
|
+
If::If(SourceSpan pstate, ExpressionObj pred, Block_Obj con, Block_Obj alt)
|
368
|
+
: ParentStatement(pstate, con), predicate_(pred), alternative_(alt)
|
392
369
|
{ statement_type(IF); }
|
393
370
|
If::If(const If* ptr)
|
394
|
-
:
|
371
|
+
: ParentStatement(ptr),
|
395
372
|
predicate_(ptr->predicate_),
|
396
373
|
alternative_(ptr->alternative_)
|
397
374
|
{ statement_type(IF); }
|
398
375
|
|
399
376
|
bool If::has_content()
|
400
377
|
{
|
401
|
-
return
|
378
|
+
return ParentStatement::has_content() || (alternative_ && alternative_->has_content());
|
402
379
|
}
|
403
380
|
|
404
381
|
/////////////////////////////////////////////////////////////////////////
|
405
382
|
/////////////////////////////////////////////////////////////////////////
|
406
383
|
|
407
|
-
|
408
|
-
|
409
|
-
:
|
384
|
+
ForRule::ForRule(SourceSpan pstate,
|
385
|
+
sass::string var, ExpressionObj lo, ExpressionObj hi, Block_Obj b, bool inc)
|
386
|
+
: ParentStatement(pstate, b),
|
410
387
|
variable_(var), lower_bound_(lo), upper_bound_(hi), is_inclusive_(inc)
|
411
388
|
{ statement_type(FOR); }
|
412
|
-
|
413
|
-
:
|
389
|
+
ForRule::ForRule(const ForRule* ptr)
|
390
|
+
: ParentStatement(ptr),
|
414
391
|
variable_(ptr->variable_),
|
415
392
|
lower_bound_(ptr->lower_bound_),
|
416
393
|
upper_bound_(ptr->upper_bound_),
|
@@ -420,27 +397,27 @@ namespace Sass {
|
|
420
397
|
/////////////////////////////////////////////////////////////////////////
|
421
398
|
/////////////////////////////////////////////////////////////////////////
|
422
399
|
|
423
|
-
|
424
|
-
:
|
400
|
+
EachRule::EachRule(SourceSpan pstate, sass::vector<sass::string> vars, ExpressionObj lst, Block_Obj b)
|
401
|
+
: ParentStatement(pstate, b), variables_(vars), list_(lst)
|
425
402
|
{ statement_type(EACH); }
|
426
|
-
|
427
|
-
:
|
403
|
+
EachRule::EachRule(const EachRule* ptr)
|
404
|
+
: ParentStatement(ptr), variables_(ptr->variables_), list_(ptr->list_)
|
428
405
|
{ statement_type(EACH); }
|
429
406
|
|
430
407
|
/////////////////////////////////////////////////////////////////////////
|
431
408
|
/////////////////////////////////////////////////////////////////////////
|
432
409
|
|
433
|
-
|
434
|
-
:
|
410
|
+
WhileRule::WhileRule(SourceSpan pstate, ExpressionObj pred, Block_Obj b)
|
411
|
+
: ParentStatement(pstate, b), predicate_(pred)
|
435
412
|
{ statement_type(WHILE); }
|
436
|
-
|
437
|
-
:
|
413
|
+
WhileRule::WhileRule(const WhileRule* ptr)
|
414
|
+
: ParentStatement(ptr), predicate_(ptr->predicate_)
|
438
415
|
{ statement_type(WHILE); }
|
439
416
|
|
440
417
|
/////////////////////////////////////////////////////////////////////////
|
441
418
|
/////////////////////////////////////////////////////////////////////////
|
442
419
|
|
443
|
-
Return::Return(
|
420
|
+
Return::Return(SourceSpan pstate, ExpressionObj val)
|
444
421
|
: Statement(pstate), value_(val)
|
445
422
|
{ statement_type(RETURN); }
|
446
423
|
Return::Return(const Return* ptr)
|
@@ -450,18 +427,26 @@ namespace Sass {
|
|
450
427
|
/////////////////////////////////////////////////////////////////////////
|
451
428
|
/////////////////////////////////////////////////////////////////////////
|
452
429
|
|
453
|
-
|
454
|
-
: Statement(pstate), selector_(s)
|
430
|
+
ExtendRule::ExtendRule(SourceSpan pstate, SelectorListObj s)
|
431
|
+
: Statement(pstate), isOptional_(false), selector_(s), schema_()
|
455
432
|
{ statement_type(EXTEND); }
|
456
|
-
|
457
|
-
|
433
|
+
ExtendRule::ExtendRule(SourceSpan pstate, Selector_Schema_Obj s)
|
434
|
+
: Statement(pstate), isOptional_(false), selector_(), schema_(s)
|
435
|
+
{
|
436
|
+
statement_type(EXTEND);
|
437
|
+
}
|
438
|
+
ExtendRule::ExtendRule(const ExtendRule* ptr)
|
439
|
+
: Statement(ptr),
|
440
|
+
isOptional_(ptr->isOptional_),
|
441
|
+
selector_(ptr->selector_),
|
442
|
+
schema_(ptr->schema_)
|
458
443
|
{ statement_type(EXTEND); }
|
459
444
|
|
460
445
|
/////////////////////////////////////////////////////////////////////////
|
461
446
|
/////////////////////////////////////////////////////////////////////////
|
462
447
|
|
463
448
|
Definition::Definition(const Definition* ptr)
|
464
|
-
:
|
449
|
+
: ParentStatement(ptr),
|
465
450
|
name_(ptr->name_),
|
466
451
|
parameters_(ptr->parameters_),
|
467
452
|
environment_(ptr->environment_),
|
@@ -473,12 +458,12 @@ namespace Sass {
|
|
473
458
|
signature_(ptr->signature_)
|
474
459
|
{ }
|
475
460
|
|
476
|
-
Definition::Definition(
|
477
|
-
|
461
|
+
Definition::Definition(SourceSpan pstate,
|
462
|
+
sass::string n,
|
478
463
|
Parameters_Obj params,
|
479
464
|
Block_Obj b,
|
480
465
|
Type t)
|
481
|
-
:
|
466
|
+
: ParentStatement(pstate, b),
|
482
467
|
name_(n),
|
483
468
|
parameters_(params),
|
484
469
|
environment_(0),
|
@@ -490,13 +475,13 @@ namespace Sass {
|
|
490
475
|
signature_(0)
|
491
476
|
{ }
|
492
477
|
|
493
|
-
Definition::Definition(
|
478
|
+
Definition::Definition(SourceSpan pstate,
|
494
479
|
Signature sig,
|
495
|
-
|
480
|
+
sass::string n,
|
496
481
|
Parameters_Obj params,
|
497
482
|
Native_Function func_ptr,
|
498
483
|
bool overload_stub)
|
499
|
-
:
|
484
|
+
: ParentStatement(pstate, {}),
|
500
485
|
name_(n),
|
501
486
|
parameters_(params),
|
502
487
|
environment_(0),
|
@@ -508,12 +493,12 @@ namespace Sass {
|
|
508
493
|
signature_(sig)
|
509
494
|
{ }
|
510
495
|
|
511
|
-
Definition::Definition(
|
496
|
+
Definition::Definition(SourceSpan pstate,
|
512
497
|
Signature sig,
|
513
|
-
|
498
|
+
sass::string n,
|
514
499
|
Parameters_Obj params,
|
515
500
|
Sass_Function_Entry c_func)
|
516
|
-
:
|
501
|
+
: ParentStatement(pstate, {}),
|
517
502
|
name_(n),
|
518
503
|
parameters_(params),
|
519
504
|
environment_(0),
|
@@ -528,11 +513,11 @@ namespace Sass {
|
|
528
513
|
/////////////////////////////////////////////////////////////////////////
|
529
514
|
/////////////////////////////////////////////////////////////////////////
|
530
515
|
|
531
|
-
Mixin_Call::Mixin_Call(
|
532
|
-
:
|
516
|
+
Mixin_Call::Mixin_Call(SourceSpan pstate, sass::string n, Arguments_Obj args, Parameters_Obj b_params, Block_Obj b)
|
517
|
+
: ParentStatement(pstate, b), name_(n), arguments_(args), block_parameters_(b_params)
|
533
518
|
{ }
|
534
519
|
Mixin_Call::Mixin_Call(const Mixin_Call* ptr)
|
535
|
-
:
|
520
|
+
: ParentStatement(ptr),
|
536
521
|
name_(ptr->name_),
|
537
522
|
arguments_(ptr->arguments_),
|
538
523
|
block_parameters_(ptr->block_parameters_)
|
@@ -541,7 +526,7 @@ namespace Sass {
|
|
541
526
|
/////////////////////////////////////////////////////////////////////////
|
542
527
|
/////////////////////////////////////////////////////////////////////////
|
543
528
|
|
544
|
-
Content::Content(
|
529
|
+
Content::Content(SourceSpan pstate, Arguments_Obj args)
|
545
530
|
: Statement(pstate),
|
546
531
|
arguments_(args)
|
547
532
|
{ statement_type(CONTENT); }
|
@@ -553,7 +538,7 @@ namespace Sass {
|
|
553
538
|
/////////////////////////////////////////////////////////////////////////
|
554
539
|
/////////////////////////////////////////////////////////////////////////
|
555
540
|
|
556
|
-
Expression::Expression(
|
541
|
+
Expression::Expression(SourceSpan pstate, bool d, bool e, bool i, Type ct)
|
557
542
|
: AST_Node(pstate),
|
558
543
|
is_delayed_(d),
|
559
544
|
is_expanded_(e),
|
@@ -572,7 +557,7 @@ namespace Sass {
|
|
572
557
|
/////////////////////////////////////////////////////////////////////////
|
573
558
|
/////////////////////////////////////////////////////////////////////////
|
574
559
|
|
575
|
-
Unary_Expression::Unary_Expression(
|
560
|
+
Unary_Expression::Unary_Expression(SourceSpan pstate, Type t, ExpressionObj o)
|
576
561
|
: Expression(pstate), optype_(t), operand_(o), hash_(0)
|
577
562
|
{ }
|
578
563
|
Unary_Expression::Unary_Expression(const Unary_Expression* ptr)
|
@@ -581,7 +566,7 @@ namespace Sass {
|
|
581
566
|
operand_(ptr->operand_),
|
582
567
|
hash_(ptr->hash_)
|
583
568
|
{ }
|
584
|
-
const
|
569
|
+
const sass::string Unary_Expression::type_name() {
|
585
570
|
switch (optype_) {
|
586
571
|
case PLUS: return "plus";
|
587
572
|
case MINUS: return "minus";
|
@@ -617,7 +602,7 @@ namespace Sass {
|
|
617
602
|
/////////////////////////////////////////////////////////////////////////
|
618
603
|
/////////////////////////////////////////////////////////////////////////
|
619
604
|
|
620
|
-
Argument::Argument(
|
605
|
+
Argument::Argument(SourceSpan pstate, ExpressionObj val, sass::string n, bool rest, bool keyword)
|
621
606
|
: Expression(pstate), value_(val), name_(n), is_rest_argument_(rest), is_keyword_argument_(keyword), hash_(0)
|
622
607
|
{
|
623
608
|
if (!name_.empty() && is_rest_argument_) {
|
@@ -661,7 +646,7 @@ namespace Sass {
|
|
661
646
|
size_t Argument::hash() const
|
662
647
|
{
|
663
648
|
if (hash_ == 0) {
|
664
|
-
hash_ = std::hash<
|
649
|
+
hash_ = std::hash<sass::string>()(name());
|
665
650
|
hash_combine(hash_, value()->hash());
|
666
651
|
}
|
667
652
|
return hash_;
|
@@ -670,7 +655,7 @@ namespace Sass {
|
|
670
655
|
/////////////////////////////////////////////////////////////////////////
|
671
656
|
/////////////////////////////////////////////////////////////////////////
|
672
657
|
|
673
|
-
Arguments::Arguments(
|
658
|
+
Arguments::Arguments(SourceSpan pstate)
|
674
659
|
: Expression(pstate),
|
675
660
|
Vectorized<Argument_Obj>(),
|
676
661
|
has_named_arguments_(false),
|
@@ -753,13 +738,13 @@ namespace Sass {
|
|
753
738
|
/////////////////////////////////////////////////////////////////////////
|
754
739
|
/////////////////////////////////////////////////////////////////////////
|
755
740
|
|
756
|
-
Media_Query::Media_Query(
|
757
|
-
: Expression(pstate), Vectorized<
|
741
|
+
Media_Query::Media_Query(SourceSpan pstate, String_Obj t, size_t s, bool n, bool r)
|
742
|
+
: Expression(pstate), Vectorized<Media_Query_ExpressionObj>(s),
|
758
743
|
media_type_(t), is_negated_(n), is_restricted_(r)
|
759
744
|
{ }
|
760
745
|
Media_Query::Media_Query(const Media_Query* ptr)
|
761
746
|
: Expression(ptr),
|
762
|
-
Vectorized<
|
747
|
+
Vectorized<Media_Query_ExpressionObj>(*ptr),
|
763
748
|
media_type_(ptr->media_type_),
|
764
749
|
is_negated_(ptr->is_negated_),
|
765
750
|
is_restricted_(ptr->is_restricted_)
|
@@ -768,8 +753,8 @@ namespace Sass {
|
|
768
753
|
/////////////////////////////////////////////////////////////////////////
|
769
754
|
/////////////////////////////////////////////////////////////////////////
|
770
755
|
|
771
|
-
Media_Query_Expression::Media_Query_Expression(
|
772
|
-
|
756
|
+
Media_Query_Expression::Media_Query_Expression(SourceSpan pstate,
|
757
|
+
ExpressionObj f, ExpressionObj v, bool i)
|
773
758
|
: Expression(pstate), feature_(f), value_(v), is_interpolated_(i)
|
774
759
|
{ }
|
775
760
|
Media_Query_Expression::Media_Query_Expression(const Media_Query_Expression* ptr)
|
@@ -782,7 +767,7 @@ namespace Sass {
|
|
782
767
|
/////////////////////////////////////////////////////////////////////////
|
783
768
|
/////////////////////////////////////////////////////////////////////////
|
784
769
|
|
785
|
-
At_Root_Query::At_Root_Query(
|
770
|
+
At_Root_Query::At_Root_Query(SourceSpan pstate, ExpressionObj f, ExpressionObj v, bool i)
|
786
771
|
: Expression(pstate), feature_(f), value_(v)
|
787
772
|
{ }
|
788
773
|
At_Root_Query::At_Root_Query(const At_Root_Query* ptr)
|
@@ -791,11 +776,11 @@ namespace Sass {
|
|
791
776
|
value_(ptr->value_)
|
792
777
|
{ }
|
793
778
|
|
794
|
-
bool At_Root_Query::exclude(
|
779
|
+
bool At_Root_Query::exclude(sass::string str)
|
795
780
|
{
|
796
781
|
bool with = feature() && unquote(feature()->to_string()).compare("with") == 0;
|
797
782
|
List* l = static_cast<List*>(value().ptr());
|
798
|
-
|
783
|
+
sass::string v;
|
799
784
|
|
800
785
|
if (with)
|
801
786
|
{
|
@@ -822,18 +807,18 @@ namespace Sass {
|
|
822
807
|
/////////////////////////////////////////////////////////////////////////
|
823
808
|
/////////////////////////////////////////////////////////////////////////
|
824
809
|
|
825
|
-
|
826
|
-
:
|
810
|
+
AtRootRule::AtRootRule(SourceSpan pstate, Block_Obj b, At_Root_Query_Obj e)
|
811
|
+
: ParentStatement(pstate, b), expression_(e)
|
827
812
|
{ statement_type(ATROOT); }
|
828
|
-
|
829
|
-
:
|
813
|
+
AtRootRule::AtRootRule(const AtRootRule* ptr)
|
814
|
+
: ParentStatement(ptr), expression_(ptr->expression_)
|
830
815
|
{ statement_type(ATROOT); }
|
831
816
|
|
832
|
-
bool
|
817
|
+
bool AtRootRule::bubbles() {
|
833
818
|
return true;
|
834
819
|
}
|
835
820
|
|
836
|
-
bool
|
821
|
+
bool AtRootRule::exclude_node(Statement_Obj s) {
|
837
822
|
if (expression() == nullptr)
|
838
823
|
{
|
839
824
|
return s->statement_type() == Statement::RULESET;
|
@@ -841,9 +826,9 @@ namespace Sass {
|
|
841
826
|
|
842
827
|
if (s->statement_type() == Statement::DIRECTIVE)
|
843
828
|
{
|
844
|
-
if (
|
829
|
+
if (AtRuleObj dir = Cast<AtRule>(s))
|
845
830
|
{
|
846
|
-
|
831
|
+
sass::string keyword(dir->keyword());
|
847
832
|
if (keyword.length() > 0) keyword.erase(0, 1);
|
848
833
|
return expression()->exclude(keyword);
|
849
834
|
}
|
@@ -860,7 +845,7 @@ namespace Sass {
|
|
860
845
|
{
|
861
846
|
return expression()->exclude("supports");
|
862
847
|
}
|
863
|
-
if (
|
848
|
+
if (AtRuleObj dir = Cast<AtRule>(s))
|
864
849
|
{
|
865
850
|
if (dir->is_keyframes()) return expression()->exclude("keyframes");
|
866
851
|
}
|
@@ -870,7 +855,7 @@ namespace Sass {
|
|
870
855
|
/////////////////////////////////////////////////////////////////////////
|
871
856
|
/////////////////////////////////////////////////////////////////////////
|
872
857
|
|
873
|
-
Parameter::Parameter(
|
858
|
+
Parameter::Parameter(SourceSpan pstate, sass::string n, ExpressionObj def, bool rest)
|
874
859
|
: AST_Node(pstate), name_(n), default_value_(def), is_rest_parameter_(rest)
|
875
860
|
{ }
|
876
861
|
Parameter::Parameter(const Parameter* ptr)
|
@@ -883,7 +868,7 @@ namespace Sass {
|
|
883
868
|
/////////////////////////////////////////////////////////////////////////
|
884
869
|
/////////////////////////////////////////////////////////////////////////
|
885
870
|
|
886
|
-
Parameters::Parameters(
|
871
|
+
Parameters::Parameters(SourceSpan pstate)
|
887
872
|
: AST_Node(pstate),
|
888
873
|
Vectorized<Parameter_Obj>(),
|
889
874
|
has_optional_parameters_(false),
|
@@ -923,23 +908,28 @@ namespace Sass {
|
|
923
908
|
/////////////////////////////////////////////////////////////////////////
|
924
909
|
/////////////////////////////////////////////////////////////////////////
|
925
910
|
|
926
|
-
|
927
|
-
|
911
|
+
// If you forget to add a class here you will get
|
912
|
+
// undefined reference to `vtable for Sass::Class'
|
913
|
+
|
914
|
+
IMPLEMENT_AST_OPERATORS(StyleRule);
|
915
|
+
IMPLEMENT_AST_OPERATORS(MediaRule);
|
916
|
+
IMPLEMENT_AST_OPERATORS(CssMediaRule);
|
917
|
+
IMPLEMENT_AST_OPERATORS(CssMediaQuery);
|
928
918
|
IMPLEMENT_AST_OPERATORS(Import);
|
929
919
|
IMPLEMENT_AST_OPERATORS(Import_Stub);
|
930
|
-
IMPLEMENT_AST_OPERATORS(
|
931
|
-
IMPLEMENT_AST_OPERATORS(
|
932
|
-
IMPLEMENT_AST_OPERATORS(
|
933
|
-
IMPLEMENT_AST_OPERATORS(
|
934
|
-
IMPLEMENT_AST_OPERATORS(
|
920
|
+
IMPLEMENT_AST_OPERATORS(AtRule);
|
921
|
+
IMPLEMENT_AST_OPERATORS(AtRootRule);
|
922
|
+
IMPLEMENT_AST_OPERATORS(WhileRule);
|
923
|
+
IMPLEMENT_AST_OPERATORS(EachRule);
|
924
|
+
IMPLEMENT_AST_OPERATORS(ForRule);
|
935
925
|
IMPLEMENT_AST_OPERATORS(If);
|
936
926
|
IMPLEMENT_AST_OPERATORS(Mixin_Call);
|
937
|
-
IMPLEMENT_AST_OPERATORS(
|
927
|
+
IMPLEMENT_AST_OPERATORS(ExtendRule);
|
938
928
|
IMPLEMENT_AST_OPERATORS(Media_Query);
|
939
929
|
IMPLEMENT_AST_OPERATORS(Media_Query_Expression);
|
940
|
-
IMPLEMENT_AST_OPERATORS(
|
941
|
-
IMPLEMENT_AST_OPERATORS(
|
942
|
-
IMPLEMENT_AST_OPERATORS(
|
930
|
+
IMPLEMENT_AST_OPERATORS(DebugRule);
|
931
|
+
IMPLEMENT_AST_OPERATORS(ErrorRule);
|
932
|
+
IMPLEMENT_AST_OPERATORS(WarningRule);
|
943
933
|
IMPLEMENT_AST_OPERATORS(Assignment);
|
944
934
|
IMPLEMENT_AST_OPERATORS(Return);
|
945
935
|
IMPLEMENT_AST_OPERATORS(At_Root_Query);
|