sassc 1.9.0 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/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
|