sassc 1.9.0 → 1.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +30 -3
- data/ext/libsass/.gitignore +3 -0
- data/ext/libsass/.travis.yml +1 -1
- data/ext/libsass/GNUmakefile.am +7 -7
- data/ext/libsass/Makefile +7 -4
- data/ext/libsass/Makefile.conf +0 -1
- data/ext/libsass/appveyor.yml +6 -2
- data/ext/libsass/docs/api-context.md +4 -4
- data/ext/libsass/docs/api-doc.md +29 -11
- data/ext/libsass/docs/api-importer-example.md +5 -5
- data/ext/libsass/docs/build-on-windows.md +1 -1
- data/ext/libsass/include/sass/base.h +10 -0
- data/ext/libsass/include/sass/version.h +4 -0
- data/ext/libsass/include/sass/version.h.in +4 -0
- data/ext/libsass/include/sass2scss.h +1 -1
- data/ext/libsass/script/ci-build-libsass +15 -3
- data/ext/libsass/src/ast.cpp +161 -6
- data/ext/libsass/src/ast.hpp +71 -44
- data/ext/libsass/src/ast_factory.hpp +1 -1
- data/ext/libsass/src/ast_fwd_decl.hpp +2 -2
- data/ext/libsass/src/constants.cpp +2 -4
- data/ext/libsass/src/constants.hpp +3 -4
- data/ext/libsass/src/context.cpp +16 -17
- data/ext/libsass/src/context.hpp +2 -2
- data/ext/libsass/src/cssize.cpp +19 -8
- data/ext/libsass/src/cssize.hpp +5 -2
- data/ext/libsass/src/debugger.hpp +6 -3
- data/ext/libsass/src/emitter.cpp +1 -1
- data/ext/libsass/src/environment.cpp +1 -1
- data/ext/libsass/src/eval.cpp +42 -14
- data/ext/libsass/src/eval.hpp +1 -1
- data/ext/libsass/src/expand.cpp +24 -8
- data/ext/libsass/src/expand.hpp +2 -1
- data/ext/libsass/src/extend.cpp +55 -15
- data/ext/libsass/src/extend.hpp +5 -1
- data/ext/libsass/src/functions.cpp +10 -5
- data/ext/libsass/src/inspect.cpp +25 -19
- data/ext/libsass/src/inspect.hpp +2 -2
- data/ext/libsass/src/json.cpp +20 -9
- data/ext/libsass/src/json.hpp +5 -5
- data/ext/libsass/src/lexer.cpp +4 -1
- data/ext/libsass/src/lexer.hpp +21 -0
- data/ext/libsass/src/listize.cpp +2 -1
- data/ext/libsass/src/operation.hpp +4 -4
- data/ext/libsass/src/output.cpp +1 -1
- data/ext/libsass/src/output.hpp +1 -1
- data/ext/libsass/src/parser.cpp +189 -90
- data/ext/libsass/src/parser.hpp +42 -2
- data/ext/libsass/src/prelexer.cpp +474 -7
- data/ext/libsass/src/prelexer.hpp +15 -2
- data/ext/libsass/src/remove_placeholders.cpp +5 -5
- data/ext/libsass/src/remove_placeholders.hpp +3 -2
- data/ext/libsass/src/sass.cpp +33 -3
- data/ext/libsass/src/sass2scss.cpp +7 -0
- data/ext/libsass/src/sass_context.cpp +32 -62
- data/ext/libsass/src/sass_functions.cpp +3 -3
- data/ext/libsass/src/sass_values.cpp +5 -5
- data/ext/libsass/src/utf8/unchecked.h +16 -16
- data/ext/libsass/src/util.cpp +51 -30
- data/ext/libsass/src/util.hpp +6 -1
- data/ext/libsass/win/libsass.targets +0 -2
- data/ext/libsass/win/libsass.vcxproj.filters +0 -6
- data/lib/sassc/engine.rb +4 -1
- data/lib/sassc/error.rb +23 -1
- data/lib/sassc/version.rb +1 -1
- data/test/error_test.rb +27 -0
- data/test/native_test.rb +1 -1
- metadata +5 -5
- data/ext/libsass/include/sass/interface.h +0 -105
- data/ext/libsass/src/sass_interface.cpp +0 -215
data/ext/libsass/src/util.cpp
CHANGED
@@ -12,11 +12,6 @@
|
|
12
12
|
|
13
13
|
namespace Sass {
|
14
14
|
|
15
|
-
#define out_of_memory() do { \
|
16
|
-
std::cerr << "Out of memory.\n"; \
|
17
|
-
exit(EXIT_FAILURE); \
|
18
|
-
} while (0)
|
19
|
-
|
20
15
|
double round(double val, size_t precision)
|
21
16
|
{
|
22
17
|
// https://github.com/sass/sass/commit/4e3e1d5684cc29073a507578fc977434ff488c93
|
@@ -28,16 +23,6 @@ namespace Sass {
|
|
28
23
|
return ::round(val);
|
29
24
|
}
|
30
25
|
|
31
|
-
/* Sadly, sass_strdup is not portable. */
|
32
|
-
char *sass_strdup(const char *str)
|
33
|
-
{
|
34
|
-
char *ret = (char*) malloc(strlen(str) + 1);
|
35
|
-
if (ret == NULL)
|
36
|
-
out_of_memory();
|
37
|
-
strcpy(ret, str);
|
38
|
-
return ret;
|
39
|
-
}
|
40
|
-
|
41
26
|
/* Locale unspecific atof function. */
|
42
27
|
double sass_atof(const char *str)
|
43
28
|
{
|
@@ -50,7 +35,7 @@ namespace Sass {
|
|
50
35
|
if(found != NULL){
|
51
36
|
// substitution is required. perform the substitution on a copy
|
52
37
|
// of the string. This is slower but it is thread safe.
|
53
|
-
char *copy =
|
38
|
+
char *copy = sass_copy_c_string(str);
|
54
39
|
*(copy + (found - str)) = separator;
|
55
40
|
double res = atof(copy);
|
56
41
|
free(copy);
|
@@ -118,7 +103,10 @@ namespace Sass {
|
|
118
103
|
}
|
119
104
|
out.push_back(i);
|
120
105
|
}
|
121
|
-
|
106
|
+
// happens when parsing does not correctly skip
|
107
|
+
// over escaped sequences for ie. interpolations
|
108
|
+
// one example: foo\#{interpolate}
|
109
|
+
// if (esc) out += '\\';
|
122
110
|
return out;
|
123
111
|
}
|
124
112
|
|
@@ -473,7 +461,7 @@ namespace Sass {
|
|
473
461
|
bool hasPrintableChildBlocks = false;
|
474
462
|
for (size_t i = 0, L = b->length(); i < L; ++i) {
|
475
463
|
Statement* stm = (*b)[i];
|
476
|
-
if (dynamic_cast<
|
464
|
+
if (dynamic_cast<Directive*>(stm)) {
|
477
465
|
return true;
|
478
466
|
} else if (dynamic_cast<Has_Block*>(stm)) {
|
479
467
|
Block* pChildBlock = ((Has_Block*)stm)->block();
|
@@ -540,7 +528,7 @@ namespace Sass {
|
|
540
528
|
// is NULL, then that means there was never a wrapping selector and it is printable (think of a top level media block with
|
541
529
|
// a declaration in it).
|
542
530
|
}
|
543
|
-
else if (typeid(*stm) == typeid(Declaration) || typeid(*stm) == typeid(
|
531
|
+
else if (typeid(*stm) == typeid(Declaration) || typeid(*stm) == typeid(Directive)) {
|
544
532
|
hasDeclarations = true;
|
545
533
|
}
|
546
534
|
else if (dynamic_cast<Has_Block*>(stm)) {
|
@@ -565,15 +553,53 @@ namespace Sass {
|
|
565
553
|
if (b == 0) return false;
|
566
554
|
for (size_t i = 0, L = b->length(); i < L; ++i) {
|
567
555
|
Statement* stm = (*b)[i];
|
568
|
-
if (typeid(*stm) == typeid(
|
569
|
-
if (typeid(*stm) == typeid(Declaration)) return true;
|
570
|
-
if (
|
571
|
-
|
556
|
+
if (typeid(*stm) == typeid(Directive)) return true;
|
557
|
+
else if (typeid(*stm) == typeid(Declaration)) return true;
|
558
|
+
else if (typeid(*stm) == typeid(Comment)) {
|
559
|
+
Comment* c = (Comment*) stm;
|
560
|
+
if (isPrintable(c, style)) {
|
561
|
+
return true;
|
562
|
+
}
|
563
|
+
}
|
564
|
+
else if (typeid(*stm) == typeid(Ruleset)) {
|
565
|
+
Ruleset* r = (Ruleset*) stm;
|
566
|
+
if (isPrintable(r, style)) {
|
567
|
+
return true;
|
568
|
+
}
|
569
|
+
}
|
570
|
+
else if (typeid(*stm) == typeid(Supports_Block)) {
|
571
|
+
Supports_Block* f = (Supports_Block*) stm;
|
572
|
+
if (isPrintable(f, style)) {
|
573
|
+
return true;
|
574
|
+
}
|
575
|
+
}
|
576
|
+
else if (typeid(*stm) == typeid(Media_Block)) {
|
577
|
+
Media_Block* m = (Media_Block*) stm;
|
578
|
+
if (isPrintable(m, style)) {
|
579
|
+
return true;
|
580
|
+
}
|
581
|
+
}
|
582
|
+
else if (dynamic_cast<Has_Block*>(stm) && isPrintable(((Has_Block*)stm)->block(), style)) {
|
583
|
+
return true;
|
572
584
|
}
|
573
585
|
}
|
574
586
|
return false;
|
575
587
|
}
|
576
588
|
|
589
|
+
bool isPrintable(Comment* c, Sass_Output_Style style)
|
590
|
+
{
|
591
|
+
// keep for uncompressed
|
592
|
+
if (style != COMPRESSED) {
|
593
|
+
return true;
|
594
|
+
}
|
595
|
+
// output style compressed
|
596
|
+
if (c->is_important()) {
|
597
|
+
return true;
|
598
|
+
}
|
599
|
+
// not printable
|
600
|
+
return false;
|
601
|
+
};
|
602
|
+
|
577
603
|
bool isPrintable(Block* b, Sass_Output_Style style) {
|
578
604
|
if (b == NULL) {
|
579
605
|
return false;
|
@@ -581,17 +607,12 @@ namespace Sass {
|
|
581
607
|
|
582
608
|
for (size_t i = 0, L = b->length(); i < L; ++i) {
|
583
609
|
Statement* stm = (*b)[i];
|
584
|
-
if (typeid(*stm) == typeid(Declaration) || typeid(*stm) == typeid(
|
610
|
+
if (typeid(*stm) == typeid(Declaration) || typeid(*stm) == typeid(Directive)) {
|
585
611
|
return true;
|
586
612
|
}
|
587
613
|
else if (typeid(*stm) == typeid(Comment)) {
|
588
614
|
Comment* c = (Comment*) stm;
|
589
|
-
|
590
|
-
if (style != COMPRESSED) {
|
591
|
-
return true;
|
592
|
-
}
|
593
|
-
// output style compressed
|
594
|
-
if (c->is_important()) {
|
615
|
+
if (isPrintable(c, style)) {
|
595
616
|
return true;
|
596
617
|
}
|
597
618
|
}
|
data/ext/libsass/src/util.hpp
CHANGED
@@ -12,8 +12,12 @@
|
|
12
12
|
|
13
13
|
namespace Sass {
|
14
14
|
|
15
|
+
#define out_of_memory() do { \
|
16
|
+
std::cerr << "Out of memory.\n"; \
|
17
|
+
exit(EXIT_FAILURE); \
|
18
|
+
} while (0)
|
19
|
+
|
15
20
|
double round(double val, size_t precision = 0);
|
16
|
-
char* sass_strdup(const char* str);
|
17
21
|
double sass_atof(const char* str);
|
18
22
|
const char* safe_str(const char *, const char* = "");
|
19
23
|
void free_string_array(char **);
|
@@ -46,6 +50,7 @@ namespace Sass {
|
|
46
50
|
bool isPrintable(Ruleset* r, Sass_Output_Style style = NESTED);
|
47
51
|
bool isPrintable(Supports_Block* r, Sass_Output_Style style = NESTED);
|
48
52
|
bool isPrintable(Media_Block* r, Sass_Output_Style style = NESTED);
|
53
|
+
bool isPrintable(Comment* b, Sass_Output_Style style = NESTED);
|
49
54
|
bool isPrintable(Block* b, Sass_Output_Style style = NESTED);
|
50
55
|
bool isPrintable(String_Constant* s, Sass_Output_Style style = NESTED);
|
51
56
|
bool isPrintable(String_Quoted* s, Sass_Output_Style style = NESTED);
|
@@ -5,7 +5,6 @@
|
|
5
5
|
<ClInclude Include="$(LIBSASS_INCLUDES_DIR)\sass\base.h" />
|
6
6
|
<ClInclude Include="$(LIBSASS_INCLUDES_DIR)\sass\context.h" />
|
7
7
|
<ClInclude Include="$(LIBSASS_INCLUDES_DIR)\sass\functions.h" />
|
8
|
-
<ClInclude Include="$(LIBSASS_INCLUDES_DIR)\sass\interface.h" />
|
9
8
|
<ClInclude Include="$(LIBSASS_INCLUDES_DIR)\sass\values.h" />
|
10
9
|
<ClInclude Include="$(LIBSASS_INCLUDES_DIR)\sass\version.h" />
|
11
10
|
<ClInclude Include="$(LIBSASS_INCLUDES_DIR)\sass\version.h.in" />
|
@@ -97,7 +96,6 @@
|
|
97
96
|
<ClCompile Include="$(LIBSASS_SRC_DIR)\prelexer.cpp" />
|
98
97
|
<ClCompile Include="$(LIBSASS_SRC_DIR)\remove_placeholders.cpp" />
|
99
98
|
<ClCompile Include="$(LIBSASS_SRC_DIR)\sass.cpp" />
|
100
|
-
<ClCompile Include="$(LIBSASS_SRC_DIR)\sass_interface.cpp" />
|
101
99
|
<ClCompile Include="$(LIBSASS_SRC_DIR)\sass_context.cpp" />
|
102
100
|
<ClCompile Include="$(LIBSASS_SRC_DIR)\sass_functions.cpp" />
|
103
101
|
<ClCompile Include="$(LIBSASS_SRC_DIR)\sass_util.cpp" />
|
@@ -34,9 +34,6 @@
|
|
34
34
|
<ClInclude Include="$(LIBSASS_INCLUDES_DIR)\sass\functions.h">
|
35
35
|
<Filter>Include Headers</Filter>
|
36
36
|
</ClInclude>
|
37
|
-
<ClInclude Include="$(LIBSASS_INCLUDES_DIR)\sass\interface.h">
|
38
|
-
<Filter>Include Headers</Filter>
|
39
|
-
</ClInclude>
|
40
37
|
<ClInclude Include="$(LIBSASS_INCLUDES_DIR)\sass\values.h">
|
41
38
|
<Filter>Include Headers</Filter>
|
42
39
|
</ClInclude>
|
@@ -302,9 +299,6 @@
|
|
302
299
|
<ClCompile Include="$(LIBSASS_SRC_DIR)\sass.cpp">
|
303
300
|
<Filter>Sources</Filter>
|
304
301
|
</ClCompile>
|
305
|
-
<ClCompile Include="$(LIBSASS_SRC_DIR)\sass_interface.cpp">
|
306
|
-
<Filter>Sources</Filter>
|
307
|
-
</ClCompile>
|
308
302
|
<ClCompile Include="$(LIBSASS_SRC_DIR)\sass_context.cpp">
|
309
303
|
<Filter>Sources</Filter>
|
310
304
|
</ClCompile>
|
data/lib/sassc/engine.rb
CHANGED
@@ -40,7 +40,10 @@ module SassC
|
|
40
40
|
|
41
41
|
if status != 0
|
42
42
|
message = Native.context_get_error_message(context)
|
43
|
-
|
43
|
+
filename = Native.context_get_error_file(context)
|
44
|
+
line = Native.context_get_error_line(context)
|
45
|
+
|
46
|
+
raise SyntaxError.new(message, filename: filename, line: line)
|
44
47
|
end
|
45
48
|
|
46
49
|
css = Native.context_get_output_string(context)
|
data/lib/sassc/error.rb
CHANGED
@@ -1,9 +1,31 @@
|
|
1
|
+
require 'pathname'
|
1
2
|
require 'sass/error'
|
2
3
|
|
3
4
|
module SassC
|
4
5
|
class BaseError < StandardError; end
|
5
|
-
class SyntaxError < BaseError; end
|
6
6
|
class NotRenderedError < BaseError; end
|
7
7
|
class InvalidStyleError < BaseError; end
|
8
8
|
class UnsupportedValue < BaseError; end
|
9
|
+
|
10
|
+
# When dealing with SyntaxErrors,
|
11
|
+
# it's important to provide filename and line number information.
|
12
|
+
# This will be used in various error reports to users, including backtraces;
|
13
|
+
class SyntaxError < BaseError
|
14
|
+
def initialize(message, filename: nil, line: nil)
|
15
|
+
@filename = filename
|
16
|
+
@line = line
|
17
|
+
super(message)
|
18
|
+
end
|
19
|
+
|
20
|
+
def backtrace
|
21
|
+
return nil if super.nil?
|
22
|
+
sass_backtrace + super
|
23
|
+
end
|
24
|
+
|
25
|
+
# The backtrace of the error within Sass files.
|
26
|
+
def sass_backtrace
|
27
|
+
return [] unless @filename && @line
|
28
|
+
["#{@filename}:#{@line}"]
|
29
|
+
end
|
30
|
+
end
|
9
31
|
end
|
data/lib/sassc/version.rb
CHANGED
data/test/error_test.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require_relative "test_helper"
|
2
|
+
|
3
|
+
module SassC
|
4
|
+
class ErrorTest < MiniTest::Test
|
5
|
+
def render(data, opts={})
|
6
|
+
Engine.new(data, opts).render
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_first_backtrace_is_sass
|
10
|
+
filename = "app/assets/stylesheets/application.scss"
|
11
|
+
|
12
|
+
begin
|
13
|
+
template = <<-SCSS
|
14
|
+
.foo {
|
15
|
+
baz: bang;
|
16
|
+
padding top: 10px;
|
17
|
+
}
|
18
|
+
SCSS
|
19
|
+
|
20
|
+
render(template, filename: filename)
|
21
|
+
rescue SassC::SyntaxError => err
|
22
|
+
expected = "#{filename}:3"
|
23
|
+
assert_equal expected, err.backtrace.first
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
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: 1.
|
4
|
+
version: 1.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Boland
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-06-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -192,7 +192,6 @@ files:
|
|
192
192
|
- ext/libsass/include/sass/base.h
|
193
193
|
- ext/libsass/include/sass/context.h
|
194
194
|
- ext/libsass/include/sass/functions.h
|
195
|
-
- ext/libsass/include/sass/interface.h
|
196
195
|
- ext/libsass/include/sass/values.h
|
197
196
|
- ext/libsass/include/sass/version.h
|
198
197
|
- ext/libsass/include/sass/version.h.in
|
@@ -285,7 +284,6 @@ files:
|
|
285
284
|
- ext/libsass/src/sass_context.hpp
|
286
285
|
- ext/libsass/src/sass_functions.cpp
|
287
286
|
- ext/libsass/src/sass_functions.hpp
|
288
|
-
- ext/libsass/src/sass_interface.cpp
|
289
287
|
- ext/libsass/src/sass_util.cpp
|
290
288
|
- ext/libsass/src/sass_util.hpp
|
291
289
|
- ext/libsass/src/sass_values.cpp
|
@@ -355,6 +353,7 @@ files:
|
|
355
353
|
- sassc.gemspec
|
356
354
|
- test/custom_importer_test.rb
|
357
355
|
- test/engine_test.rb
|
356
|
+
- test/error_test.rb
|
358
357
|
- test/fixtures/paths.scss
|
359
358
|
- test/functions_test.rb
|
360
359
|
- test/native_test.rb
|
@@ -381,13 +380,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
381
380
|
version: '0'
|
382
381
|
requirements: []
|
383
382
|
rubyforge_project:
|
384
|
-
rubygems_version: 2.
|
383
|
+
rubygems_version: 2.5.1
|
385
384
|
signing_key:
|
386
385
|
specification_version: 4
|
387
386
|
summary: Use libsass with Ruby!
|
388
387
|
test_files:
|
389
388
|
- test/custom_importer_test.rb
|
390
389
|
- test/engine_test.rb
|
390
|
+
- test/error_test.rb
|
391
391
|
- test/fixtures/paths.scss
|
392
392
|
- test/functions_test.rb
|
393
393
|
- test/native_test.rb
|
@@ -1,105 +0,0 @@
|
|
1
|
-
#ifndef SASS_C_INTERFACE_H
|
2
|
-
#define SASS_C_INTERFACE_H
|
3
|
-
|
4
|
-
// the API in this header has been deprecated
|
5
|
-
// please use the new API from sass/context.h
|
6
|
-
|
7
|
-
#include <stddef.h>
|
8
|
-
#include <stdbool.h>
|
9
|
-
#include <sass/base.h>
|
10
|
-
|
11
|
-
#ifdef __cplusplus
|
12
|
-
extern "C" {
|
13
|
-
#endif
|
14
|
-
|
15
|
-
|
16
|
-
// Please ensure there are no null values.
|
17
|
-
// Thar be dragons.
|
18
|
-
struct sass_options {
|
19
|
-
// Output style for the generated css code
|
20
|
-
// A value from above SASS_STYLE_* constants
|
21
|
-
int output_style;
|
22
|
-
// If you want inline source comments
|
23
|
-
bool source_comments;
|
24
|
-
// Path to source map file
|
25
|
-
// Enables the source map generating
|
26
|
-
// Used to create sourceMappingUrl
|
27
|
-
const char* source_map_file;
|
28
|
-
// Disable sourceMappingUrl in css output
|
29
|
-
bool omit_source_map_url;
|
30
|
-
// embed sourceMappingUrl as data uri
|
31
|
-
bool source_map_embed;
|
32
|
-
// embed include contents in maps
|
33
|
-
bool source_map_contents;
|
34
|
-
// Pass-through as sourceRoot property
|
35
|
-
const char* source_map_root;
|
36
|
-
// Treat source_string as sass (as opposed to scss)
|
37
|
-
bool is_indented_syntax_src;
|
38
|
-
// Colon-separated list of paths
|
39
|
-
// Semicolon-separated on Windows
|
40
|
-
const char* include_paths;
|
41
|
-
const char* plugin_paths;
|
42
|
-
// String to be used for indentation
|
43
|
-
const char* indent;
|
44
|
-
// String to be used to for line feeds
|
45
|
-
const char* linefeed;
|
46
|
-
// Precision for outputting fractional numbers
|
47
|
-
int precision;
|
48
|
-
};
|
49
|
-
|
50
|
-
struct sass_context {
|
51
|
-
const char* input_path;
|
52
|
-
const char* output_path;
|
53
|
-
char* source_string;
|
54
|
-
char* output_string;
|
55
|
-
char* source_map_string;
|
56
|
-
struct sass_options options;
|
57
|
-
int error_status;
|
58
|
-
char* error_message;
|
59
|
-
Sass_Function_List c_functions;
|
60
|
-
char** included_files;
|
61
|
-
int num_included_files;
|
62
|
-
};
|
63
|
-
|
64
|
-
struct sass_file_context {
|
65
|
-
const char* input_path;
|
66
|
-
const char* output_path;
|
67
|
-
char* output_string;
|
68
|
-
char* source_map_string;
|
69
|
-
struct sass_options options;
|
70
|
-
int error_status;
|
71
|
-
char* error_message;
|
72
|
-
Sass_Function_List c_functions;
|
73
|
-
char** included_files;
|
74
|
-
int num_included_files;
|
75
|
-
};
|
76
|
-
|
77
|
-
struct sass_folder_context {
|
78
|
-
const char* search_path;
|
79
|
-
const char* output_path;
|
80
|
-
struct sass_options options;
|
81
|
-
int error_status;
|
82
|
-
char* error_message;
|
83
|
-
Sass_Function_List c_functions;
|
84
|
-
char** included_files;
|
85
|
-
int num_included_files;
|
86
|
-
};
|
87
|
-
|
88
|
-
struct sass_context* sass_new_context (void);
|
89
|
-
struct sass_file_context* sass_new_file_context (void);
|
90
|
-
struct sass_folder_context* sass_new_folder_context (void);
|
91
|
-
|
92
|
-
void sass_free_context (struct sass_context* ctx);
|
93
|
-
void sass_free_file_context (struct sass_file_context* ctx);
|
94
|
-
void sass_free_folder_context(struct sass_folder_context* ctx);
|
95
|
-
|
96
|
-
int sass_compile (struct sass_context* ctx);
|
97
|
-
int sass_compile_file (struct sass_file_context* ctx);
|
98
|
-
int sass_compile_folder (struct sass_folder_context* ctx);
|
99
|
-
|
100
|
-
|
101
|
-
#ifdef __cplusplus
|
102
|
-
}
|
103
|
-
#endif
|
104
|
-
|
105
|
-
#endif
|