sassc 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +1 -1
- data/ext/libsass/.gitignore +13 -6
- data/ext/libsass/Makefile +42 -26
- data/ext/libsass/Makefile.am +43 -30
- data/ext/libsass/Readme.md +4 -2
- data/ext/libsass/appveyor.yml +10 -14
- data/ext/libsass/ast.cpp +54 -44
- data/ext/libsass/ast.hpp +404 -236
- data/ext/libsass/ast_def_macros.hpp +5 -0
- data/ext/libsass/ast_factory.hpp +6 -3
- data/ext/libsass/ast_fwd_decl.hpp +12 -0
- data/ext/libsass/b64/encode.h +2 -2
- data/ext/libsass/backtrace.hpp +13 -17
- data/ext/libsass/base64vlq.hpp +4 -1
- data/ext/libsass/bind.cpp +12 -15
- data/ext/libsass/bind.hpp +6 -6
- data/ext/libsass/color_names.hpp +4 -1
- data/ext/libsass/configure.ac +7 -21
- data/ext/libsass/constants.cpp +6 -4
- data/ext/libsass/constants.hpp +10 -4
- data/ext/libsass/context.cpp +89 -58
- data/ext/libsass/context.hpp +28 -35
- data/ext/libsass/contextualize.cpp +20 -10
- data/ext/libsass/contextualize.hpp +8 -23
- data/ext/libsass/contrib/libsass.spec +66 -0
- data/ext/libsass/cssize.cpp +547 -0
- data/ext/libsass/cssize.hpp +82 -0
- data/ext/libsass/debug.hpp +3 -3
- data/ext/libsass/debugger.hpp +358 -0
- data/ext/libsass/emitter.cpp +255 -0
- data/ext/libsass/emitter.hpp +83 -0
- data/ext/libsass/environment.hpp +7 -3
- data/ext/libsass/error_handling.cpp +11 -14
- data/ext/libsass/error_handling.hpp +9 -7
- data/ext/libsass/eval.cpp +253 -161
- data/ext/libsass/eval.hpp +13 -13
- data/ext/libsass/expand.cpp +135 -64
- data/ext/libsass/expand.hpp +11 -13
- data/ext/libsass/extend.cpp +66 -20
- data/ext/libsass/extend.hpp +6 -11
- data/ext/libsass/file.cpp +31 -26
- data/ext/libsass/file.hpp +6 -1
- data/ext/libsass/functions.cpp +270 -287
- data/ext/libsass/functions.hpp +8 -11
- data/ext/libsass/inspect.cpp +385 -255
- data/ext/libsass/inspect.hpp +15 -26
- data/ext/libsass/kwd_arg_macros.hpp +5 -0
- data/ext/libsass/mapping.hpp +4 -3
- data/ext/libsass/memory_manager.hpp +5 -2
- data/ext/libsass/node.cpp +50 -50
- data/ext/libsass/node.hpp +26 -27
- data/ext/libsass/operation.hpp +15 -4
- data/ext/libsass/output.cpp +401 -0
- data/ext/libsass/output.hpp +56 -0
- data/ext/libsass/parser.cpp +573 -399
- data/ext/libsass/parser.hpp +122 -88
- data/ext/libsass/paths.hpp +7 -2
- data/ext/libsass/plugins.cpp +155 -0
- data/ext/libsass/plugins.hpp +56 -0
- data/ext/libsass/position.cpp +128 -0
- data/ext/libsass/position.hpp +108 -11
- data/ext/libsass/prelexer.cpp +184 -110
- data/ext/libsass/prelexer.hpp +131 -24
- data/ext/libsass/remove_placeholders.cpp +1 -1
- data/ext/libsass/remove_placeholders.hpp +6 -6
- data/ext/libsass/sass.cpp +3 -3
- data/ext/libsass/sass.h +12 -4
- data/ext/libsass/sass2scss.cpp +3 -2
- data/ext/libsass/sass2scss.h +5 -0
- data/ext/libsass/sass_context.cpp +136 -37
- data/ext/libsass/sass_context.h +19 -10
- data/ext/libsass/sass_functions.cpp +29 -2
- data/ext/libsass/sass_functions.h +8 -2
- data/ext/libsass/sass_interface.cpp +32 -23
- data/ext/libsass/sass_interface.h +9 -4
- data/ext/libsass/sass_util.cpp +19 -23
- data/ext/libsass/sass_util.hpp +28 -27
- data/ext/libsass/sass_values.cpp +6 -4
- data/ext/libsass/sass_values.h +3 -3
- data/ext/libsass/script/ci-build-libsass +13 -1
- data/ext/libsass/script/ci-report-coverage +2 -1
- data/ext/libsass/source_map.cpp +79 -28
- data/ext/libsass/source_map.hpp +35 -16
- data/ext/libsass/subset_map.hpp +6 -4
- data/ext/libsass/to_c.hpp +4 -4
- data/ext/libsass/to_string.cpp +13 -8
- data/ext/libsass/to_string.hpp +6 -4
- data/ext/libsass/units.cpp +2 -1
- data/ext/libsass/units.hpp +6 -1
- data/ext/libsass/utf8_string.cpp +0 -5
- data/ext/libsass/utf8_string.hpp +3 -2
- data/ext/libsass/util.cpp +461 -49
- data/ext/libsass/util.hpp +34 -13
- data/ext/libsass/version.sh +10 -0
- data/ext/libsass/win/libsass.filters +20 -11
- data/ext/libsass/win/libsass.vcxproj +11 -8
- data/lib/sassc/importer.rb +1 -8
- data/lib/sassc/native.rb +7 -0
- data/lib/sassc/native/native_context_api.rb +5 -5
- data/lib/sassc/version.rb +1 -1
- data/test/native_test.rb +1 -1
- metadata +14 -10
- data/ext/libsass/copy_c_str.cpp +0 -13
- data/ext/libsass/copy_c_str.hpp +0 -5
- data/ext/libsass/output_compressed.cpp +0 -401
- data/ext/libsass/output_compressed.hpp +0 -95
- data/ext/libsass/output_nested.cpp +0 -364
- data/ext/libsass/output_nested.hpp +0 -108
- data/ext/libsass/test-driver +0 -127
- data/ext/libsass/token.hpp +0 -32
data/ext/libsass/util.hpp
CHANGED
@@ -1,24 +1,45 @@
|
|
1
|
-
#ifndef
|
2
|
-
#define
|
3
|
-
|
4
|
-
#ifndef SASS_AST
|
5
|
-
#include "ast.hpp"
|
6
|
-
#endif
|
1
|
+
#ifndef SASS_UTIL_H
|
2
|
+
#define SASS_UTIL_H
|
7
3
|
|
4
|
+
#include <vector>
|
8
5
|
#include <string>
|
6
|
+
#include "ast_fwd_decl.hpp"
|
7
|
+
|
9
8
|
namespace Sass {
|
9
|
+
using namespace std;
|
10
|
+
|
11
|
+
char* sass_strdup(const char* str);
|
12
|
+
double sass_atof(const char* str);
|
13
|
+
string string_escape(const string& str);
|
14
|
+
string string_unescape(const string& str);
|
15
|
+
string evacuate_quotes(const string& str);
|
16
|
+
string evacuate_escapes(const string& str);
|
17
|
+
string string_to_output(const string& str);
|
18
|
+
string comment_to_string(const string& text);
|
19
|
+
string normalize_wspace(const string& str);
|
20
|
+
|
21
|
+
string quote(const string&, char q = 0);
|
22
|
+
string unquote(const string&, char* q = 0);
|
23
|
+
char detect_best_quotemark(const char* s, char qm = '"');
|
24
|
+
|
25
|
+
bool is_hex_doublet(double n);
|
26
|
+
bool is_color_doublet(double r, double g, double b);
|
27
|
+
|
28
|
+
bool peek_linefeed(const char* start);
|
29
|
+
|
10
30
|
namespace Util {
|
11
31
|
|
12
|
-
|
13
|
-
|
14
|
-
|
32
|
+
string normalize_underscores(const string& str);
|
33
|
+
string normalize_decimals(const string& str);
|
34
|
+
string normalize_sixtuplet(const string& col);
|
15
35
|
|
36
|
+
string vecJoin(const vector<string>& vec, const string& sep);
|
16
37
|
bool containsAnyPrintableStatements(Block* b);
|
17
38
|
|
18
|
-
bool isPrintable(Ruleset* r);
|
19
|
-
bool isPrintable(Feature_Block* r);
|
20
|
-
bool isPrintable(Media_Block* r);
|
21
|
-
bool isPrintable(Block* b);
|
39
|
+
bool isPrintable(Ruleset* r, Output_Style style = NESTED);
|
40
|
+
bool isPrintable(Feature_Block* r, Output_Style style = NESTED);
|
41
|
+
bool isPrintable(Media_Block* r, Output_Style style = NESTED);
|
42
|
+
bool isPrintable(Block* b, Output_Style style = NESTED);
|
22
43
|
bool isAscii(int ch);
|
23
44
|
|
24
45
|
}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
if test "x$LIBSASS_VERSION" = "x"; then
|
2
|
+
LIBSASS_VERSION=`git describe --abbrev=4 --dirty --always --tags 2>/dev/null`
|
3
|
+
fi
|
4
|
+
if test "x$LIBSASS_VERSION" = "x"; then
|
5
|
+
LIBSASS_VERSION=`cat VERSION 2>/dev/null`
|
6
|
+
fi
|
7
|
+
if test "x$LIBSASS_VERSION" = "x"; then
|
8
|
+
LIBSASS_VERSION="[na]"
|
9
|
+
fi
|
10
|
+
echo $LIBSASS_VERSION
|
@@ -39,9 +39,6 @@
|
|
39
39
|
<ClCompile Include="..\contextualize.cpp">
|
40
40
|
<Filter>Source Files</Filter>
|
41
41
|
</ClCompile>
|
42
|
-
<ClCompile Include="..\copy_c_str.cpp">
|
43
|
-
<Filter>Source Files</Filter>
|
44
|
-
</ClCompile>
|
45
42
|
<ClCompile Include="..\error_handling.cpp">
|
46
43
|
<Filter>Source Files</Filter>
|
47
44
|
</ClCompile>
|
@@ -51,6 +48,9 @@
|
|
51
48
|
<ClCompile Include="..\expand.cpp">
|
52
49
|
<Filter>Source Files</Filter>
|
53
50
|
</ClCompile>
|
51
|
+
<ClCompile Include="..\cssize.cpp">
|
52
|
+
<Filter>Source Files</Filter>
|
53
|
+
</ClCompile>
|
54
54
|
<ClCompile Include="..\extend.cpp">
|
55
55
|
<Filter>Source Files</Filter>
|
56
56
|
</ClCompile>
|
@@ -66,15 +66,21 @@
|
|
66
66
|
<ClCompile Include="..\node.cpp">
|
67
67
|
<Filter>Source Files</Filter>
|
68
68
|
</ClCompile>
|
69
|
-
<ClCompile Include="..\
|
69
|
+
<ClCompile Include="..\output.cpp">
|
70
70
|
<Filter>Source Files</Filter>
|
71
71
|
</ClCompile>
|
72
|
-
<ClCompile Include="..\
|
72
|
+
<ClCompile Include="..\emitter.cpp">
|
73
73
|
<Filter>Source Files</Filter>
|
74
74
|
</ClCompile>
|
75
75
|
<ClCompile Include="..\parser.cpp">
|
76
76
|
<Filter>Source Files</Filter>
|
77
77
|
</ClCompile>
|
78
|
+
<ClCompile Include="..\plugins.cpp">
|
79
|
+
<Filter>Source Files</Filter>
|
80
|
+
</ClCompile>
|
81
|
+
<ClCompile Include="..\position.cpp">
|
82
|
+
<Filter>Source Files</Filter>
|
83
|
+
</ClCompile>
|
78
84
|
<ClCompile Include="..\prelexer.cpp">
|
79
85
|
<Filter>Source Files</Filter>
|
80
86
|
</ClCompile>
|
@@ -170,9 +176,6 @@
|
|
170
176
|
<ClInclude Include="..\contextualize.hpp">
|
171
177
|
<Filter>Header Files</Filter>
|
172
178
|
</ClInclude>
|
173
|
-
<ClInclude Include="..\copy_c_str.hpp">
|
174
|
-
<Filter>Header Files</Filter>
|
175
|
-
</ClInclude>
|
176
179
|
<ClInclude Include="..\debug.hpp">
|
177
180
|
<Filter>Header Files</Filter>
|
178
181
|
</ClInclude>
|
@@ -188,6 +191,9 @@
|
|
188
191
|
<ClInclude Include="..\expand.hpp">
|
189
192
|
<Filter>Header Files</Filter>
|
190
193
|
</ClInclude>
|
194
|
+
<ClInclude Include="..\cssize.hpp">
|
195
|
+
<Filter>Header Files</Filter>
|
196
|
+
</ClInclude>
|
191
197
|
<ClInclude Include="..\extend.hpp">
|
192
198
|
<Filter>Header Files</Filter>
|
193
199
|
</ClInclude>
|
@@ -215,15 +221,18 @@
|
|
215
221
|
<ClInclude Include="..\operation.hpp">
|
216
222
|
<Filter>Header Files</Filter>
|
217
223
|
</ClInclude>
|
218
|
-
<ClInclude Include="..\
|
224
|
+
<ClInclude Include="..\output.hpp">
|
219
225
|
<Filter>Header Files</Filter>
|
220
226
|
</ClInclude>
|
221
|
-
<ClInclude Include="..\
|
227
|
+
<ClInclude Include="..\emitter.hpp">
|
222
228
|
<Filter>Header Files</Filter>
|
223
229
|
</ClInclude>
|
224
230
|
<ClInclude Include="..\parser.hpp">
|
225
231
|
<Filter>Header Files</Filter>
|
226
232
|
</ClInclude>
|
233
|
+
<ClInclude Include="..\plugins.hpp">
|
234
|
+
<Filter>Header Files</Filter>
|
235
|
+
</ClInclude>
|
227
236
|
<ClInclude Include="..\paths.hpp">
|
228
237
|
<Filter>Header Files</Filter>
|
229
238
|
</ClInclude>
|
@@ -288,4 +297,4 @@
|
|
288
297
|
<Filter>Header Files</Filter>
|
289
298
|
</ClInclude>
|
290
299
|
</ItemGroup>
|
291
|
-
</Project>
|
300
|
+
</Project>
|
@@ -164,19 +164,21 @@
|
|
164
164
|
<ClCompile Include="..\constants.cpp" />
|
165
165
|
<ClCompile Include="..\context.cpp" />
|
166
166
|
<ClCompile Include="..\contextualize.cpp" />
|
167
|
-
<ClCompile Include="..\copy_c_str.cpp" />
|
168
167
|
<ClCompile Include="..\error_handling.cpp" />
|
169
168
|
<ClCompile Include="..\eval.cpp" />
|
170
169
|
<ClCompile Include="..\expand.cpp" />
|
170
|
+
<ClCompile Include="..\cssize.cpp" />
|
171
171
|
<ClCompile Include="..\extend.cpp" />
|
172
172
|
<ClCompile Include="..\file.cpp" />
|
173
173
|
<ClCompile Include="..\functions.cpp" />
|
174
174
|
<ClCompile Include="..\inspect.cpp" />
|
175
175
|
<ClCompile Include="..\json.cpp" />
|
176
176
|
<ClCompile Include="..\node.cpp" />
|
177
|
-
<ClCompile Include="..\
|
178
|
-
<ClCompile Include="..\
|
177
|
+
<ClCompile Include="..\emitter.cpp" />
|
178
|
+
<ClCompile Include="..\output.cpp" />
|
179
179
|
<ClCompile Include="..\parser.cpp" />
|
180
|
+
<ClCompile Include="..\plugins.cpp" />
|
181
|
+
<ClCompile Include="..\position.cpp" />
|
180
182
|
<ClCompile Include="..\prelexer.cpp" />
|
181
183
|
<ClCompile Include="..\remove_placeholders.cpp" />
|
182
184
|
<ClCompile Include="..\sass.cpp" />
|
@@ -184,7 +186,7 @@
|
|
184
186
|
<ClCompile Include="..\sass_interface.cpp" />
|
185
187
|
<ClCompile Include="..\sass_context.cpp" />
|
186
188
|
<ClCompile Include="..\sass_functions.cpp" />
|
187
|
-
<ClCompile Include="..\sass_values.cpp" />
|
189
|
+
<ClCompile Include="..\sass_values.cpp" />
|
188
190
|
<ClCompile Include="..\sass_util.cpp" />
|
189
191
|
<ClCompile Include="..\source_map.cpp" />
|
190
192
|
<ClCompile Include="..\to_c.cpp" />
|
@@ -206,12 +208,12 @@
|
|
206
208
|
<ClInclude Include="..\constants.hpp" />
|
207
209
|
<ClInclude Include="..\context.hpp" />
|
208
210
|
<ClInclude Include="..\contextualize.hpp" />
|
209
|
-
<ClInclude Include="..\copy_c_str.hpp" />
|
210
211
|
<ClInclude Include="..\debug.hpp" />
|
211
212
|
<ClInclude Include="..\environment.hpp" />
|
212
213
|
<ClInclude Include="..\error_handling.hpp" />
|
213
214
|
<ClInclude Include="..\eval.hpp" />
|
214
215
|
<ClInclude Include="..\expand.hpp" />
|
216
|
+
<ClInclude Include="..\cssize.hpp" />
|
215
217
|
<ClInclude Include="..\extend.hpp" />
|
216
218
|
<ClInclude Include="..\file.hpp" />
|
217
219
|
<ClInclude Include="..\functions.hpp" />
|
@@ -222,9 +224,10 @@
|
|
222
224
|
<ClInclude Include="..\memory_manager.hpp" />
|
223
225
|
<ClInclude Include="..\node.hpp" />
|
224
226
|
<ClInclude Include="..\operation.hpp" />
|
225
|
-
<ClInclude Include="..\
|
226
|
-
<ClInclude Include="..\
|
227
|
+
<ClInclude Include="..\emitter.hpp" />
|
228
|
+
<ClInclude Include="..\output.hpp" />
|
227
229
|
<ClInclude Include="..\parser.hpp" />
|
230
|
+
<ClInclude Include="..\plugins.hpp" />
|
228
231
|
<ClInclude Include="..\paths.hpp" />
|
229
232
|
<ClInclude Include="..\position.hpp" />
|
230
233
|
<ClInclude Include="..\prelexer.hpp" />
|
@@ -252,4 +255,4 @@
|
|
252
255
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
253
256
|
<ImportGroup Label="ExtensionTargets">
|
254
257
|
</ImportGroup>
|
255
|
-
</Project>
|
258
|
+
</Project>
|
data/lib/sassc/importer.rb
CHANGED
@@ -29,7 +29,7 @@ module SassC
|
|
29
29
|
import_list = SassC::Native.make_import_list(imports.size)
|
30
30
|
|
31
31
|
imports.each_with_index do |import, i|
|
32
|
-
source = import.source ? native_string(import.source) : nil
|
32
|
+
source = import.source ? Native.native_string(import.source) : nil
|
33
33
|
source_map_path = nil
|
34
34
|
|
35
35
|
entry = SassC::Native.make_import_entry(import.path, source, source_map_path)
|
@@ -39,13 +39,6 @@ module SassC
|
|
39
39
|
import_list
|
40
40
|
end
|
41
41
|
|
42
|
-
def self.native_string(string)
|
43
|
-
string += "\0"
|
44
|
-
data = SassC::Native::LibC.malloc(string.size)
|
45
|
-
data.write_string(string)
|
46
|
-
data
|
47
|
-
end
|
48
|
-
|
49
42
|
class Import
|
50
43
|
attr_accessor :path, :source, :source_map_path
|
51
44
|
|
data/lib/sassc/native.rb
CHANGED
@@ -47,6 +47,13 @@ module SassC
|
|
47
47
|
ptr.null? ? [] : ptr.get_array_of_string(0).compact
|
48
48
|
end
|
49
49
|
|
50
|
+
def self.native_string(string)
|
51
|
+
string += "\0"
|
52
|
+
data = SassC::Native::LibC.malloc(string.size)
|
53
|
+
data.write_string(string)
|
54
|
+
data
|
55
|
+
end
|
56
|
+
|
50
57
|
require_relative "native/native_context_api"
|
51
58
|
require_relative "native/native_functions_api"
|
52
59
|
end
|
@@ -10,7 +10,11 @@ module SassC
|
|
10
10
|
# ADDAPI struct Sass_File_Context* ADDCALL sass_make_file_context (const char* input_path);
|
11
11
|
# ADDAPI struct Sass_Data_Context* ADDCALL sass_make_data_context (char* source_string);
|
12
12
|
attach_function :sass_make_file_context, [:string], :sass_file_context_ptr
|
13
|
-
attach_function :sass_make_data_context, [:
|
13
|
+
attach_function :_make_data_context, :sass_make_data_context, [:pointer], :sass_data_context_ptr
|
14
|
+
|
15
|
+
def self.make_data_context(data)
|
16
|
+
_make_data_context(Native.native_string(data))
|
17
|
+
end
|
14
18
|
|
15
19
|
# Call the compilation step for the specific context
|
16
20
|
# ADDAPI int ADDCALL sass_compile_file_context (struct Sass_File_Context* ctx);
|
@@ -65,7 +69,6 @@ module SassC
|
|
65
69
|
# ADDAPI bool ADDCALL sass_option_get_is_indented_syntax_src (struct Sass_Options* options);
|
66
70
|
# ADDAPI const char* ADDCALL sass_option_get_input_path (struct Sass_Options* options);
|
67
71
|
# ADDAPI const char* ADDCALL sass_option_get_output_path (struct Sass_Options* options);
|
68
|
-
# ADDAPI const char* ADDCALL sass_option_get_image_path (struct Sass_Options* options);
|
69
72
|
# ADDAPI const char* ADDCALL sass_option_get_include_path (struct Sass_Options* options);
|
70
73
|
# ADDAPI const char* ADDCALL sass_option_get_source_map_file (struct Sass_Options* options);
|
71
74
|
# ADDAPI Sass_C_Function_List ADDCALL sass_option_get_c_functions (struct Sass_Options* options);
|
@@ -78,7 +81,6 @@ module SassC
|
|
78
81
|
attach_function :sass_option_get_is_indented_syntax_src, [:sass_options_ptr], :bool
|
79
82
|
attach_function :sass_option_get_input_path, [:sass_options_ptr], :string
|
80
83
|
attach_function :sass_option_get_output_path, [:sass_options_ptr], :string
|
81
|
-
attach_function :sass_option_get_image_path, [:sass_options_ptr], :string
|
82
84
|
attach_function :sass_option_get_include_path, [:sass_options_ptr], :string
|
83
85
|
attach_function :sass_option_get_source_map_file, [:sass_options_ptr], :string
|
84
86
|
attach_function :sass_option_get_c_functions, [:sass_options_ptr], :sass_c_function_list_ptr
|
@@ -94,7 +96,6 @@ module SassC
|
|
94
96
|
# ADDAPI void ADDCALL sass_option_set_is_indented_syntax_src (struct Sass_Options* options, bool is_indented_syntax_src);
|
95
97
|
# ADDAPI void ADDCALL sass_option_set_input_path (struct Sass_Options* options, const char* input_path);
|
96
98
|
# ADDAPI void ADDCALL sass_option_set_output_path (struct Sass_Options* options, const char* output_path);
|
97
|
-
# ADDAPI void ADDCALL sass_option_set_image_path (struct Sass_Options* options, const char* image_path);
|
98
99
|
# ADDAPI void ADDCALL sass_option_set_include_path (struct Sass_Options* options, const char* include_path);
|
99
100
|
# ADDAPI void ADDCALL sass_option_set_source_map_file (struct Sass_Options* options, const char* source_map_file);
|
100
101
|
# ADDAPI void ADDCALL sass_option_set_c_functions (struct Sass_Options* options, Sass_C_Function_List c_functions);
|
@@ -108,7 +109,6 @@ module SassC
|
|
108
109
|
attach_function :sass_option_set_is_indented_syntax_src, [:sass_options_ptr, :bool], :void
|
109
110
|
attach_function :sass_option_set_input_path, [:sass_options_ptr, :string], :void
|
110
111
|
attach_function :sass_option_set_output_path, [:sass_options_ptr, :string], :void
|
111
|
-
attach_function :sass_option_set_image_path, [:sass_options_ptr, :string], :void
|
112
112
|
attach_function :sass_option_set_include_path, [:sass_options_ptr, :string], :void
|
113
113
|
attach_function :sass_option_set_source_map_file, [:sass_options_ptr, :string], :void
|
114
114
|
attach_function :sass_option_set_c_functions, [:sass_options_ptr, :pointer], :void
|
data/lib/sassc/version.rb
CHANGED
data/test/native_test.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sassc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Boland
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-03-
|
11
|
+
date: 2015-03-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -141,9 +141,13 @@ files:
|
|
141
141
|
- ext/libsass/context.hpp
|
142
142
|
- ext/libsass/contextualize.cpp
|
143
143
|
- ext/libsass/contextualize.hpp
|
144
|
-
- ext/libsass/
|
145
|
-
- ext/libsass/
|
144
|
+
- ext/libsass/contrib/libsass.spec
|
145
|
+
- ext/libsass/cssize.cpp
|
146
|
+
- ext/libsass/cssize.hpp
|
146
147
|
- ext/libsass/debug.hpp
|
148
|
+
- ext/libsass/debugger.hpp
|
149
|
+
- ext/libsass/emitter.cpp
|
150
|
+
- ext/libsass/emitter.hpp
|
147
151
|
- ext/libsass/environment.hpp
|
148
152
|
- ext/libsass/error_handling.cpp
|
149
153
|
- ext/libsass/error_handling.hpp
|
@@ -169,13 +173,14 @@ files:
|
|
169
173
|
- ext/libsass/node.cpp
|
170
174
|
- ext/libsass/node.hpp
|
171
175
|
- ext/libsass/operation.hpp
|
172
|
-
- ext/libsass/
|
173
|
-
- ext/libsass/
|
174
|
-
- ext/libsass/output_nested.cpp
|
175
|
-
- ext/libsass/output_nested.hpp
|
176
|
+
- ext/libsass/output.cpp
|
177
|
+
- ext/libsass/output.hpp
|
176
178
|
- ext/libsass/parser.cpp
|
177
179
|
- ext/libsass/parser.hpp
|
178
180
|
- ext/libsass/paths.hpp
|
181
|
+
- ext/libsass/plugins.cpp
|
182
|
+
- ext/libsass/plugins.hpp
|
183
|
+
- ext/libsass/position.cpp
|
179
184
|
- ext/libsass/position.hpp
|
180
185
|
- ext/libsass/posix/getopt.c
|
181
186
|
- ext/libsass/posix/getopt.h
|
@@ -212,7 +217,6 @@ files:
|
|
212
217
|
- ext/libsass/source_map.hpp
|
213
218
|
- ext/libsass/subset_map.hpp
|
214
219
|
- ext/libsass/support/libsass.pc.in
|
215
|
-
- ext/libsass/test-driver
|
216
220
|
- ext/libsass/test/test_node.cpp
|
217
221
|
- ext/libsass/test/test_paths.cpp
|
218
222
|
- ext/libsass/test/test_selector_difference.cpp
|
@@ -224,7 +228,6 @@ files:
|
|
224
228
|
- ext/libsass/to_c.hpp
|
225
229
|
- ext/libsass/to_string.cpp
|
226
230
|
- ext/libsass/to_string.hpp
|
227
|
-
- ext/libsass/token.hpp
|
228
231
|
- ext/libsass/units.cpp
|
229
232
|
- ext/libsass/units.hpp
|
230
233
|
- ext/libsass/utf8.h
|
@@ -235,6 +238,7 @@ files:
|
|
235
238
|
- ext/libsass/utf8_string.hpp
|
236
239
|
- ext/libsass/util.cpp
|
237
240
|
- ext/libsass/util.hpp
|
241
|
+
- ext/libsass/version.sh
|
238
242
|
- ext/libsass/win/libsass.filters
|
239
243
|
- ext/libsass/win/libsass.sln
|
240
244
|
- ext/libsass/win/libsass.vcxproj
|
data/ext/libsass/copy_c_str.cpp
DELETED
data/ext/libsass/copy_c_str.hpp
DELETED
@@ -1,401 +0,0 @@
|
|
1
|
-
#include "output_compressed.hpp"
|
2
|
-
#include "inspect.hpp"
|
3
|
-
#include "ast.hpp"
|
4
|
-
#include "context.hpp"
|
5
|
-
#include "to_string.hpp"
|
6
|
-
#include "util.hpp"
|
7
|
-
#include <cmath>
|
8
|
-
#include <iomanip>
|
9
|
-
|
10
|
-
namespace Sass {
|
11
|
-
using namespace std;
|
12
|
-
|
13
|
-
Output_Compressed::Output_Compressed(Context* ctx) : buffer(""), rendered_imports(""), ctx(ctx), seen_utf8(false) { }
|
14
|
-
Output_Compressed::~Output_Compressed() { }
|
15
|
-
|
16
|
-
inline void Output_Compressed::fallback_impl(AST_Node* n)
|
17
|
-
{
|
18
|
-
Inspect i(ctx);
|
19
|
-
n->perform(&i);
|
20
|
-
const string& text = i.get_buffer();
|
21
|
-
for(const char& chr : text) {
|
22
|
-
// abort clause
|
23
|
-
if (seen_utf8) break;
|
24
|
-
// skip all normal ascii chars
|
25
|
-
if (Util::isAscii(chr)) continue;
|
26
|
-
// singleton
|
27
|
-
seen_utf8 = true;
|
28
|
-
}
|
29
|
-
buffer += text;
|
30
|
-
if (ctx && !ctx->_skip_source_map_update)
|
31
|
-
ctx->source_map.update_column(text);
|
32
|
-
}
|
33
|
-
|
34
|
-
void Output_Compressed::operator()(Import* imp)
|
35
|
-
{
|
36
|
-
Inspect insp(ctx);
|
37
|
-
imp->perform(&insp);
|
38
|
-
rendered_imports += insp.get_buffer();
|
39
|
-
}
|
40
|
-
|
41
|
-
void Output_Compressed::operator()(Block* b)
|
42
|
-
{
|
43
|
-
if (!b->is_root()) return;
|
44
|
-
for (size_t i = 0, L = b->length(); i < L; ++i) {
|
45
|
-
(*b)[i]->perform(this);
|
46
|
-
}
|
47
|
-
}
|
48
|
-
|
49
|
-
void Output_Compressed::operator()(Ruleset* r)
|
50
|
-
{
|
51
|
-
Selector* s = r->selector();
|
52
|
-
Block* b = r->block();
|
53
|
-
|
54
|
-
// Filter out rulesets that aren't printable (process its children though)
|
55
|
-
if (!Util::isPrintable(r)) {
|
56
|
-
for (size_t i = 0, L = b->length(); i < L; ++i) {
|
57
|
-
Statement* stm = (*b)[i];
|
58
|
-
if (dynamic_cast<Has_Block*>(stm)) {
|
59
|
-
stm->perform(this);
|
60
|
-
}
|
61
|
-
}
|
62
|
-
return;
|
63
|
-
}
|
64
|
-
|
65
|
-
if (b->has_non_hoistable()) {
|
66
|
-
s->perform(this);
|
67
|
-
append_singleline_part_to_buffer("{");
|
68
|
-
for (size_t i = 0, L = b->length(); i < L; ++i) {
|
69
|
-
Statement* stm = (*b)[i];
|
70
|
-
if (!stm->is_hoistable()) {
|
71
|
-
stm->perform(this);
|
72
|
-
}
|
73
|
-
}
|
74
|
-
size_t l = buffer.length();
|
75
|
-
if (l > 0 && buffer.at(l - 1) == ';') buffer.erase(l - 1);
|
76
|
-
append_singleline_part_to_buffer("}");
|
77
|
-
}
|
78
|
-
|
79
|
-
if (b->has_hoistable()) {
|
80
|
-
for (size_t i = 0, L = b->length(); i < L; ++i) {
|
81
|
-
Statement* stm = (*b)[i];
|
82
|
-
if (stm->is_hoistable()) {
|
83
|
-
stm->perform(this);
|
84
|
-
}
|
85
|
-
}
|
86
|
-
}
|
87
|
-
}
|
88
|
-
|
89
|
-
void Output_Compressed::operator()(Media_Block* m)
|
90
|
-
{
|
91
|
-
List* q = m->media_queries();
|
92
|
-
Block* b = m->block();
|
93
|
-
|
94
|
-
// Filter out media blocks that aren't printable (process its children though)
|
95
|
-
if (!Util::isPrintable(m)) {
|
96
|
-
for (size_t i = 0, L = b->length(); i < L; ++i) {
|
97
|
-
Statement* stm = (*b)[i];
|
98
|
-
if (dynamic_cast<Has_Block*>(stm)) {
|
99
|
-
stm->perform(this);
|
100
|
-
}
|
101
|
-
}
|
102
|
-
return;
|
103
|
-
}
|
104
|
-
|
105
|
-
ctx->source_map.add_mapping(m);
|
106
|
-
append_singleline_part_to_buffer("@media ");
|
107
|
-
q->perform(this);
|
108
|
-
append_singleline_part_to_buffer("{");
|
109
|
-
|
110
|
-
Selector* e = m->selector();
|
111
|
-
if (e && b->has_non_hoistable()) {
|
112
|
-
// JMA - hoisted, output the non-hoistable in a nested block, followed by the hoistable
|
113
|
-
e->perform(this);
|
114
|
-
append_singleline_part_to_buffer("{");
|
115
|
-
|
116
|
-
for (size_t i = 0, L = b->length(); i < L; ++i) {
|
117
|
-
Statement* stm = (*b)[i];
|
118
|
-
if (!stm->is_hoistable()) {
|
119
|
-
stm->perform(this);
|
120
|
-
}
|
121
|
-
}
|
122
|
-
|
123
|
-
append_singleline_part_to_buffer("}");
|
124
|
-
|
125
|
-
for (size_t i = 0, L = b->length(); i < L; ++i) {
|
126
|
-
Statement* stm = (*b)[i];
|
127
|
-
if (stm->is_hoistable()) {
|
128
|
-
stm->perform(this);
|
129
|
-
}
|
130
|
-
}
|
131
|
-
}
|
132
|
-
else {
|
133
|
-
// JMA - not hoisted, just output in order
|
134
|
-
for (size_t i = 0, L = b->length(); i < L; ++i) {
|
135
|
-
Statement* stm = (*b)[i];
|
136
|
-
stm->perform(this);
|
137
|
-
}
|
138
|
-
}
|
139
|
-
|
140
|
-
append_singleline_part_to_buffer("}");
|
141
|
-
}
|
142
|
-
|
143
|
-
void Output_Compressed::operator()(At_Rule* a)
|
144
|
-
{
|
145
|
-
string kwd = a->keyword();
|
146
|
-
Selector* s = a->selector();
|
147
|
-
Expression* v = a->value();
|
148
|
-
Block* b = a->block();
|
149
|
-
|
150
|
-
append_singleline_part_to_buffer(kwd);
|
151
|
-
if (s) {
|
152
|
-
append_singleline_part_to_buffer(" ");
|
153
|
-
s->perform(this);
|
154
|
-
}
|
155
|
-
else if (v) {
|
156
|
-
append_singleline_part_to_buffer(" ");
|
157
|
-
v->perform(this);
|
158
|
-
}
|
159
|
-
|
160
|
-
if (!b) {
|
161
|
-
append_singleline_part_to_buffer(";");
|
162
|
-
return;
|
163
|
-
}
|
164
|
-
|
165
|
-
append_singleline_part_to_buffer("{");
|
166
|
-
for (size_t i = 0, L = b->length(); i < L; ++i) {
|
167
|
-
Statement* stm = (*b)[i];
|
168
|
-
if (!stm->is_hoistable()) {
|
169
|
-
stm->perform(this);
|
170
|
-
}
|
171
|
-
}
|
172
|
-
|
173
|
-
for (size_t i = 0, L = b->length(); i < L; ++i) {
|
174
|
-
Statement* stm = (*b)[i];
|
175
|
-
if (stm->is_hoistable()) {
|
176
|
-
stm->perform(this);
|
177
|
-
}
|
178
|
-
}
|
179
|
-
|
180
|
-
append_singleline_part_to_buffer("}");
|
181
|
-
}
|
182
|
-
|
183
|
-
void Output_Compressed::operator()(Declaration* d)
|
184
|
-
{
|
185
|
-
bool bPrintExpression = true;
|
186
|
-
// Check print conditions
|
187
|
-
if (d->value()->concrete_type() == Expression::NULL_VAL) {
|
188
|
-
bPrintExpression = false;
|
189
|
-
}
|
190
|
-
if (d->value()->concrete_type() == Expression::STRING) {
|
191
|
-
String_Constant* valConst = static_cast<String_Constant*>(d->value());
|
192
|
-
string val(valConst->value());
|
193
|
-
if (val.empty()) {
|
194
|
-
bPrintExpression = false;
|
195
|
-
}
|
196
|
-
}
|
197
|
-
// Print if OK
|
198
|
-
if(bPrintExpression) {
|
199
|
-
if (ctx) ctx->source_map.add_mapping(d->property());
|
200
|
-
d->property()->perform(this);
|
201
|
-
append_singleline_part_to_buffer(":");
|
202
|
-
if (ctx) ctx->source_map.add_mapping(d->value());
|
203
|
-
d->value()->perform(this);
|
204
|
-
if (d->is_important()) append_singleline_part_to_buffer("!important");
|
205
|
-
append_singleline_part_to_buffer(";");
|
206
|
-
}
|
207
|
-
}
|
208
|
-
|
209
|
-
void Output_Compressed::operator()(Comment* c)
|
210
|
-
{
|
211
|
-
To_String to_string;
|
212
|
-
string txt = c->text()->perform(&to_string);
|
213
|
-
if(txt[2] != '!') {
|
214
|
-
return;
|
215
|
-
}
|
216
|
-
else {
|
217
|
-
Inspect i(ctx);
|
218
|
-
c->perform(&i);
|
219
|
-
const string& text = i.get_buffer();
|
220
|
-
for(const char& chr : text) {
|
221
|
-
// abort clause
|
222
|
-
if (seen_utf8) break;
|
223
|
-
// skip all normal ascii chars
|
224
|
-
if (Util::isAscii(chr)) continue;
|
225
|
-
// singleton
|
226
|
-
seen_utf8 = true;
|
227
|
-
}
|
228
|
-
buffer += text;
|
229
|
-
if (ctx && !ctx->_skip_source_map_update)
|
230
|
-
ctx->source_map.update_column(text);
|
231
|
-
}
|
232
|
-
}
|
233
|
-
|
234
|
-
void Output_Compressed::operator()(List* list)
|
235
|
-
{
|
236
|
-
string sep(list->separator() == List::SPACE ? " " : ",");
|
237
|
-
if (list->empty()) return;
|
238
|
-
Expression* first = (*list)[0];
|
239
|
-
bool first_invisible = first->is_invisible();
|
240
|
-
if (!first_invisible) first->perform(this);
|
241
|
-
for (size_t i = 1, L = list->length(); i < L; ++i) {
|
242
|
-
Expression* next = (*list)[i];
|
243
|
-
bool next_invisible = next->is_invisible();
|
244
|
-
if (i == 1 && !first_invisible && !next_invisible) append_singleline_part_to_buffer(sep);
|
245
|
-
else if (!next_invisible) append_singleline_part_to_buffer(sep);
|
246
|
-
next->perform(this);
|
247
|
-
}
|
248
|
-
}
|
249
|
-
|
250
|
-
// helper function for serializing colors
|
251
|
-
template <size_t range>
|
252
|
-
static double cap_channel(double c) {
|
253
|
-
if (c > range) return range;
|
254
|
-
else if (c < 0) return 0;
|
255
|
-
else return c;
|
256
|
-
}
|
257
|
-
|
258
|
-
void Output_Compressed::operator()(Color* c)
|
259
|
-
{
|
260
|
-
stringstream ss;
|
261
|
-
double r = round(cap_channel<0xff>(c->r()));
|
262
|
-
double g = round(cap_channel<0xff>(c->g()));
|
263
|
-
double b = round(cap_channel<0xff>(c->b()));
|
264
|
-
double a = cap_channel<1> (c->a());
|
265
|
-
|
266
|
-
// retain the originally specified color definition if unchanged
|
267
|
-
if (!c->disp().empty()) {
|
268
|
-
ss << c->disp();
|
269
|
-
}
|
270
|
-
else if (r == 0 && g == 0 && b == 0 && a == 0) {
|
271
|
-
ss << "transparent";
|
272
|
-
}
|
273
|
-
else if (a >= 1) {
|
274
|
-
// see if it's a named color
|
275
|
-
int numval = r * 0x10000;
|
276
|
-
numval += g * 0x100;
|
277
|
-
numval += b;
|
278
|
-
if (ctx && ctx->colors_to_names.count(numval)) {
|
279
|
-
ss << ctx->colors_to_names[numval];
|
280
|
-
}
|
281
|
-
else {
|
282
|
-
// otherwise output the hex triplet
|
283
|
-
ss << '#' << setw(2) << setfill('0');
|
284
|
-
ss << hex << setw(2) << static_cast<unsigned long>(r);
|
285
|
-
ss << hex << setw(2) << static_cast<unsigned long>(g);
|
286
|
-
ss << hex << setw(2) << static_cast<unsigned long>(b);
|
287
|
-
}
|
288
|
-
}
|
289
|
-
else {
|
290
|
-
ss << "rgba(";
|
291
|
-
ss << static_cast<unsigned long>(r) << ",";
|
292
|
-
ss << static_cast<unsigned long>(g) << ",";
|
293
|
-
ss << static_cast<unsigned long>(b) << ",";
|
294
|
-
ss << a << ')';
|
295
|
-
}
|
296
|
-
append_singleline_part_to_buffer(ss.str());
|
297
|
-
}
|
298
|
-
|
299
|
-
void Output_Compressed::operator()(Media_Query_Expression* mqe)
|
300
|
-
{
|
301
|
-
if (mqe->is_interpolated()) {
|
302
|
-
mqe->feature()->perform(this);
|
303
|
-
}
|
304
|
-
else {
|
305
|
-
append_singleline_part_to_buffer("(");
|
306
|
-
mqe->feature()->perform(this);
|
307
|
-
if (mqe->value()) {
|
308
|
-
append_singleline_part_to_buffer(":");
|
309
|
-
mqe->value()->perform(this);
|
310
|
-
}
|
311
|
-
append_singleline_part_to_buffer(")");
|
312
|
-
}
|
313
|
-
}
|
314
|
-
|
315
|
-
void Output_Compressed::operator()(Null* n)
|
316
|
-
{
|
317
|
-
// noop
|
318
|
-
}
|
319
|
-
|
320
|
-
void Output_Compressed::operator()(Argument* a)
|
321
|
-
{
|
322
|
-
if (!a->name().empty()) {
|
323
|
-
append_singleline_part_to_buffer(a->name());
|
324
|
-
append_singleline_part_to_buffer(":");
|
325
|
-
}
|
326
|
-
a->value()->perform(this);
|
327
|
-
if (a->is_rest_argument()) {
|
328
|
-
append_singleline_part_to_buffer("...");
|
329
|
-
}
|
330
|
-
}
|
331
|
-
|
332
|
-
void Output_Compressed::operator()(Arguments* a)
|
333
|
-
{
|
334
|
-
append_singleline_part_to_buffer("(");
|
335
|
-
if (!a->empty()) {
|
336
|
-
(*a)[0]->perform(this);
|
337
|
-
for (size_t i = 1, L = a->length(); i < L; ++i) {
|
338
|
-
append_singleline_part_to_buffer(",");
|
339
|
-
(*a)[i]->perform(this);
|
340
|
-
}
|
341
|
-
}
|
342
|
-
append_singleline_part_to_buffer(")");
|
343
|
-
}
|
344
|
-
|
345
|
-
void Output_Compressed::operator()(Complex_Selector* c)
|
346
|
-
{
|
347
|
-
Compound_Selector* head = c->head();
|
348
|
-
Complex_Selector* tail = c->tail();
|
349
|
-
Complex_Selector::Combinator comb = c->combinator();
|
350
|
-
if (head && head->is_empty_reference() && tail)
|
351
|
-
{
|
352
|
-
tail->perform(this);
|
353
|
-
return;
|
354
|
-
}
|
355
|
-
if (head && !head->is_empty_reference()) head->perform(this);
|
356
|
-
switch (comb) {
|
357
|
-
case Complex_Selector::ANCESTOR_OF:
|
358
|
-
if (tail) append_singleline_part_to_buffer(" ");
|
359
|
-
break;
|
360
|
-
case Complex_Selector::PARENT_OF:
|
361
|
-
append_singleline_part_to_buffer(">");
|
362
|
-
break;
|
363
|
-
case Complex_Selector::PRECEDES:
|
364
|
-
// Apparently need to preserve spaces around this combinator?
|
365
|
-
if (head && !head->is_empty_reference()) append_singleline_part_to_buffer(" ");
|
366
|
-
append_singleline_part_to_buffer("~");
|
367
|
-
if (tail) append_singleline_part_to_buffer(" ");
|
368
|
-
break;
|
369
|
-
case Complex_Selector::ADJACENT_TO:
|
370
|
-
append_singleline_part_to_buffer("+");
|
371
|
-
break;
|
372
|
-
}
|
373
|
-
if (tail) tail->perform(this);
|
374
|
-
}
|
375
|
-
|
376
|
-
void Output_Compressed::operator()(Selector_List* g)
|
377
|
-
{
|
378
|
-
if (g->empty()) return;
|
379
|
-
(*g)[0]->perform(this);
|
380
|
-
for (size_t i = 1, L = g->length(); i < L; ++i) {
|
381
|
-
append_singleline_part_to_buffer(",");
|
382
|
-
(*g)[i]->perform(this);
|
383
|
-
}
|
384
|
-
}
|
385
|
-
|
386
|
-
void Output_Compressed::append_singleline_part_to_buffer(const string& text)
|
387
|
-
{
|
388
|
-
buffer += text;
|
389
|
-
if (ctx && !ctx->_skip_source_map_update)
|
390
|
-
ctx->source_map.update_column(text);
|
391
|
-
for(const char& chr : text) {
|
392
|
-
// abort clause
|
393
|
-
if (seen_utf8) break;
|
394
|
-
// skip all normal ascii chars
|
395
|
-
if (Util::isAscii(chr)) continue;
|
396
|
-
// singleton
|
397
|
-
seen_utf8 = true;
|
398
|
-
}
|
399
|
-
}
|
400
|
-
|
401
|
-
}
|