sassc 0.0.9 → 0.0.10

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.
Files changed (111) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +1 -1
  3. data/ext/libsass/.gitignore +13 -6
  4. data/ext/libsass/Makefile +42 -26
  5. data/ext/libsass/Makefile.am +43 -30
  6. data/ext/libsass/Readme.md +4 -2
  7. data/ext/libsass/appveyor.yml +10 -14
  8. data/ext/libsass/ast.cpp +54 -44
  9. data/ext/libsass/ast.hpp +404 -236
  10. data/ext/libsass/ast_def_macros.hpp +5 -0
  11. data/ext/libsass/ast_factory.hpp +6 -3
  12. data/ext/libsass/ast_fwd_decl.hpp +12 -0
  13. data/ext/libsass/b64/encode.h +2 -2
  14. data/ext/libsass/backtrace.hpp +13 -17
  15. data/ext/libsass/base64vlq.hpp +4 -1
  16. data/ext/libsass/bind.cpp +12 -15
  17. data/ext/libsass/bind.hpp +6 -6
  18. data/ext/libsass/color_names.hpp +4 -1
  19. data/ext/libsass/configure.ac +7 -21
  20. data/ext/libsass/constants.cpp +6 -4
  21. data/ext/libsass/constants.hpp +10 -4
  22. data/ext/libsass/context.cpp +89 -58
  23. data/ext/libsass/context.hpp +28 -35
  24. data/ext/libsass/contextualize.cpp +20 -10
  25. data/ext/libsass/contextualize.hpp +8 -23
  26. data/ext/libsass/contrib/libsass.spec +66 -0
  27. data/ext/libsass/cssize.cpp +547 -0
  28. data/ext/libsass/cssize.hpp +82 -0
  29. data/ext/libsass/debug.hpp +3 -3
  30. data/ext/libsass/debugger.hpp +358 -0
  31. data/ext/libsass/emitter.cpp +255 -0
  32. data/ext/libsass/emitter.hpp +83 -0
  33. data/ext/libsass/environment.hpp +7 -3
  34. data/ext/libsass/error_handling.cpp +11 -14
  35. data/ext/libsass/error_handling.hpp +9 -7
  36. data/ext/libsass/eval.cpp +253 -161
  37. data/ext/libsass/eval.hpp +13 -13
  38. data/ext/libsass/expand.cpp +135 -64
  39. data/ext/libsass/expand.hpp +11 -13
  40. data/ext/libsass/extend.cpp +66 -20
  41. data/ext/libsass/extend.hpp +6 -11
  42. data/ext/libsass/file.cpp +31 -26
  43. data/ext/libsass/file.hpp +6 -1
  44. data/ext/libsass/functions.cpp +270 -287
  45. data/ext/libsass/functions.hpp +8 -11
  46. data/ext/libsass/inspect.cpp +385 -255
  47. data/ext/libsass/inspect.hpp +15 -26
  48. data/ext/libsass/kwd_arg_macros.hpp +5 -0
  49. data/ext/libsass/mapping.hpp +4 -3
  50. data/ext/libsass/memory_manager.hpp +5 -2
  51. data/ext/libsass/node.cpp +50 -50
  52. data/ext/libsass/node.hpp +26 -27
  53. data/ext/libsass/operation.hpp +15 -4
  54. data/ext/libsass/output.cpp +401 -0
  55. data/ext/libsass/output.hpp +56 -0
  56. data/ext/libsass/parser.cpp +573 -399
  57. data/ext/libsass/parser.hpp +122 -88
  58. data/ext/libsass/paths.hpp +7 -2
  59. data/ext/libsass/plugins.cpp +155 -0
  60. data/ext/libsass/plugins.hpp +56 -0
  61. data/ext/libsass/position.cpp +128 -0
  62. data/ext/libsass/position.hpp +108 -11
  63. data/ext/libsass/prelexer.cpp +184 -110
  64. data/ext/libsass/prelexer.hpp +131 -24
  65. data/ext/libsass/remove_placeholders.cpp +1 -1
  66. data/ext/libsass/remove_placeholders.hpp +6 -6
  67. data/ext/libsass/sass.cpp +3 -3
  68. data/ext/libsass/sass.h +12 -4
  69. data/ext/libsass/sass2scss.cpp +3 -2
  70. data/ext/libsass/sass2scss.h +5 -0
  71. data/ext/libsass/sass_context.cpp +136 -37
  72. data/ext/libsass/sass_context.h +19 -10
  73. data/ext/libsass/sass_functions.cpp +29 -2
  74. data/ext/libsass/sass_functions.h +8 -2
  75. data/ext/libsass/sass_interface.cpp +32 -23
  76. data/ext/libsass/sass_interface.h +9 -4
  77. data/ext/libsass/sass_util.cpp +19 -23
  78. data/ext/libsass/sass_util.hpp +28 -27
  79. data/ext/libsass/sass_values.cpp +6 -4
  80. data/ext/libsass/sass_values.h +3 -3
  81. data/ext/libsass/script/ci-build-libsass +13 -1
  82. data/ext/libsass/script/ci-report-coverage +2 -1
  83. data/ext/libsass/source_map.cpp +79 -28
  84. data/ext/libsass/source_map.hpp +35 -16
  85. data/ext/libsass/subset_map.hpp +6 -4
  86. data/ext/libsass/to_c.hpp +4 -4
  87. data/ext/libsass/to_string.cpp +13 -8
  88. data/ext/libsass/to_string.hpp +6 -4
  89. data/ext/libsass/units.cpp +2 -1
  90. data/ext/libsass/units.hpp +6 -1
  91. data/ext/libsass/utf8_string.cpp +0 -5
  92. data/ext/libsass/utf8_string.hpp +3 -2
  93. data/ext/libsass/util.cpp +461 -49
  94. data/ext/libsass/util.hpp +34 -13
  95. data/ext/libsass/version.sh +10 -0
  96. data/ext/libsass/win/libsass.filters +20 -11
  97. data/ext/libsass/win/libsass.vcxproj +11 -8
  98. data/lib/sassc/importer.rb +1 -8
  99. data/lib/sassc/native.rb +7 -0
  100. data/lib/sassc/native/native_context_api.rb +5 -5
  101. data/lib/sassc/version.rb +1 -1
  102. data/test/native_test.rb +1 -1
  103. metadata +14 -10
  104. data/ext/libsass/copy_c_str.cpp +0 -13
  105. data/ext/libsass/copy_c_str.hpp +0 -5
  106. data/ext/libsass/output_compressed.cpp +0 -401
  107. data/ext/libsass/output_compressed.hpp +0 -95
  108. data/ext/libsass/output_nested.cpp +0 -364
  109. data/ext/libsass/output_nested.hpp +0 -108
  110. data/ext/libsass/test-driver +0 -127
  111. data/ext/libsass/token.hpp +0 -32
@@ -4,40 +4,40 @@
4
4
  #define PATH_SEP ':'
5
5
  #endif
6
6
 
7
- #ifndef SASS_AST
8
7
  #include "ast.hpp"
9
- #endif
10
-
8
+ #include "util.hpp"
9
+ #include "sass.h"
11
10
  #include "context.hpp"
11
+ #include "plugins.hpp"
12
12
  #include "constants.hpp"
13
13
  #include "parser.hpp"
14
14
  #include "file.hpp"
15
15
  #include "inspect.hpp"
16
- #include "output_nested.hpp"
17
- #include "output_compressed.hpp"
16
+ #include "output.hpp"
18
17
  #include "expand.hpp"
19
18
  #include "eval.hpp"
20
19
  #include "contextualize.hpp"
20
+ #include "cssize.hpp"
21
21
  #include "extend.hpp"
22
22
  #include "remove_placeholders.hpp"
23
- #include "copy_c_str.hpp"
24
23
  #include "color_names.hpp"
25
24
  #include "functions.hpp"
26
25
  #include "backtrace.hpp"
27
26
  #include "sass2scss.h"
28
-
29
- #ifndef SASS_PRELEXER
30
27
  #include "prelexer.hpp"
31
- #endif
28
+ #include "emitter.hpp"
32
29
 
33
- #include <iomanip>
34
- #include <iostream>
30
+ #include <string>
31
+ #include <cstdlib>
35
32
  #include <cstring>
33
+ #include <iomanip>
36
34
  #include <sstream>
35
+ #include <iostream>
37
36
 
38
37
  namespace Sass {
39
38
  using namespace Constants;
40
39
  using namespace File;
40
+ using namespace Sass;
41
41
  using std::cerr;
42
42
  using std::endl;
43
43
 
@@ -50,20 +50,24 @@ namespace Sass {
50
50
 
51
51
 
52
52
  Context::Context(Context::Data initializers)
53
- : mem(Memory_Manager<AST_Node>()),
53
+ : // Output(this),
54
+ mem(Memory_Manager<AST_Node>()),
54
55
  source_c_str (initializers.source_c_str()),
55
56
  sources (vector<const char*>()),
57
+ plugin_paths (initializers.plugin_paths()),
56
58
  include_paths (initializers.include_paths()),
57
59
  queue (vector<Sass_Queued>()),
58
60
  style_sheets (map<string, Block*>()),
59
- source_map (resolve_relative_path(initializers.output_path(), initializers.source_map_file(), get_cwd())),
61
+ emitter (this),
60
62
  c_functions (vector<Sass_C_Function_Callback>()),
61
- image_path (initializers.image_path()),
63
+ indent (initializers.indent()),
64
+ linefeed (initializers.linefeed()),
62
65
  input_path (make_canonical_path(initializers.input_path())),
63
66
  output_path (make_canonical_path(initializers.output_path())),
64
67
  source_comments (initializers.source_comments()),
65
68
  output_style (initializers.output_style()),
66
69
  source_map_file (make_canonical_path(initializers.source_map_file())),
70
+ source_map_root (initializers.source_map_root()), // pass-through
67
71
  source_map_embed (initializers.source_map_embed()),
68
72
  source_map_contents (initializers.source_map_contents()),
69
73
  omit_source_map_url (initializers.omit_source_map_url()),
@@ -72,9 +76,10 @@ namespace Sass {
72
76
  names_to_colors (map<string, Color*>()),
73
77
  colors_to_names (map<int, string>()),
74
78
  precision (initializers.precision()),
75
- _skip_source_map_update (initializers._skip_source_map_update()),
79
+ plugins(),
76
80
  subset_map (Subset_Map<string, pair<Complex_Selector*, Compound_Selector*> >())
77
81
  {
82
+
78
83
  cwd = get_cwd();
79
84
 
80
85
  // enforce some safe defaults
@@ -85,9 +90,19 @@ namespace Sass {
85
90
  include_paths.push_back(cwd);
86
91
  collect_include_paths(initializers.include_paths_c_str());
87
92
  collect_include_paths(initializers.include_paths_array());
93
+ collect_plugin_paths(initializers.plugin_paths_c_str());
94
+ collect_plugin_paths(initializers.plugin_paths_array());
88
95
 
89
96
  setup_color_map();
90
97
 
98
+ for (size_t i = 0, S = plugin_paths.size(); i < S; ++i) {
99
+ plugins.load_plugins(plugin_paths[i]);
100
+ }
101
+
102
+ for(auto fn : plugins.get_functions()) {
103
+ c_functions.push_back(fn);
104
+ }
105
+
91
106
  string entry_point = initializers.entry_point();
92
107
  if (!entry_point.empty()) {
93
108
  string result(add_file(entry_point));
@@ -95,6 +110,9 @@ namespace Sass {
95
110
  throw "File to read not found or unreadable: " + entry_point;
96
111
  }
97
112
  }
113
+
114
+ emitter.set_filename(output_path);
115
+
98
116
  }
99
117
 
100
118
  Context::~Context()
@@ -110,7 +128,7 @@ namespace Sass {
110
128
  size_t i = 0;
111
129
  while (color_names[i]) {
112
130
  string name(color_names[i]);
113
- Color* value = new (mem) Color("[COLOR TABLE]", Position(),
131
+ Color* value = new (mem) Color(ParserState("[COLOR TABLE]"),
114
132
  color_values[i*4],
115
133
  color_values[i*4+1],
116
134
  color_values[i*4+2],
@@ -118,9 +136,9 @@ namespace Sass {
118
136
  names_to_colors[name] = value;
119
137
  // only map fully opaque colors
120
138
  if (color_values[i*4+3] >= 1) {
121
- int numval = color_values[i*4]*0x10000;
122
- numval += color_values[i*4+1]*0x100;
123
- numval += color_values[i*4+2];
139
+ int numval = static_cast<int>(color_values[i*4])*0x10000;
140
+ numval += static_cast<int>(color_values[i*4+1])*0x100;
141
+ numval += static_cast<int>(color_values[i*4+2]);
124
142
  colors_to_names[numval] = name;
125
143
  }
126
144
  ++i;
@@ -154,7 +172,6 @@ namespace Sass {
154
172
 
155
173
  void Context::collect_include_paths(const char** paths_array)
156
174
  {
157
- if (*include_paths.back().rbegin() != '/') include_paths.back() += '/';
158
175
  if (paths_array) {
159
176
  for (size_t i = 0; paths_array[i]; i++) {
160
177
  collect_include_paths(paths_array[i]);
@@ -162,12 +179,45 @@ namespace Sass {
162
179
  }
163
180
  }
164
181
 
182
+ void Context::collect_plugin_paths(const char* paths_str)
183
+ {
184
+
185
+ if (paths_str) {
186
+ const char* beg = paths_str;
187
+ const char* end = Prelexer::find_first<PATH_SEP>(beg);
188
+
189
+ while (end) {
190
+ string path(beg, end - beg);
191
+ if (!path.empty()) {
192
+ if (*path.rbegin() != '/') path += '/';
193
+ plugin_paths.push_back(path);
194
+ }
195
+ beg = end + 1;
196
+ end = Prelexer::find_first<PATH_SEP>(beg);
197
+ }
198
+
199
+ string path(beg);
200
+ if (!path.empty()) {
201
+ if (*path.rbegin() != '/') path += '/';
202
+ plugin_paths.push_back(path);
203
+ }
204
+ }
205
+ }
206
+
207
+ void Context::collect_plugin_paths(const char** paths_array)
208
+ {
209
+ if (paths_array) {
210
+ for (size_t i = 0; paths_array[i]; i++) {
211
+ collect_plugin_paths(paths_array[i]);
212
+ }
213
+ }
214
+ }
165
215
  void Context::add_source(string load_path, string abs_path, const char* contents)
166
216
  {
167
217
  sources.push_back(contents);
168
218
  included_files.push_back(abs_path);
169
219
  queue.push_back(Sass_Queued(load_path, abs_path, contents));
170
- source_map.source_index.push_back(sources.size() - 1);
220
+ emitter.add_source_index(sources.size() - 1);
171
221
  include_links.push_back(resolve_relative_path(abs_path, source_map_file, cwd));
172
222
  }
173
223
 
@@ -226,31 +276,15 @@ namespace Sass {
226
276
 
227
277
  char* Context::compile_block(Block* root)
228
278
  {
229
- char* result = 0;
230
279
  if (!root) return 0;
231
- switch (output_style) {
232
- case COMPRESSED: {
233
- Output_Compressed output_compressed(this);
234
- root->perform(&output_compressed);
235
- string output = output_compressed.get_buffer();
236
- if (source_map_file != "" && !omit_source_map_url) {
237
- output += format_source_mapping_url(source_map_file);
238
- }
239
- result = copy_c_str(output.c_str());
240
- } break;
241
-
242
- default: {
243
- Output_Nested output_nested(source_comments, this);
244
- root->perform(&output_nested);
245
- string output = output_nested.get_buffer();
246
- if (source_map_file != "" && !omit_source_map_url) {
247
- output += "\n" + format_source_mapping_url(source_map_file);
248
- }
249
- result = copy_c_str(output.c_str());
250
-
251
- } break;
280
+ root->perform(&emitter);
281
+ emitter.finalize();
282
+ OutputBuffer emitted = emitter.get_buffer();
283
+ string output = emitted.buffer;
284
+ if (source_map_file != "" && !omit_source_map_url) {
285
+ output += linefeed + format_source_mapping_url(source_map_file);
252
286
  }
253
- return result;
287
+ return sass_strdup(output.c_str());
254
288
  }
255
289
 
256
290
  Block* Context::parse_file()
@@ -263,7 +297,7 @@ namespace Sass {
263
297
  0, 0
264
298
  );
265
299
  import_stack.push_back(import);
266
- Parser p(Parser::from_c_str(queue[i].source, *this, queue[i].abs_path, Position(1 + i, 1, 1)));
300
+ Parser p(Parser::from_c_str(queue[i].source, *this, ParserState(queue[i].abs_path, i)));
267
301
  Block* ast = p.parse();
268
302
  sass_delete_import(import_stack.back());
269
303
  import_stack.pop_back();
@@ -272,7 +306,7 @@ namespace Sass {
272
306
  }
273
307
  if (root == 0) return 0;
274
308
  Env tge;
275
- Backtrace backtrace(0, "", Position(), "");
309
+ Backtrace backtrace(0, ParserState("", 0), "");
276
310
  register_built_in_functions(*this, &tge);
277
311
  for (size_t i = 0, S = c_functions.size(); i < S; ++i) {
278
312
  register_c_function(*this, &tge, c_functions[i]);
@@ -280,10 +314,9 @@ namespace Sass {
280
314
  Eval eval(*this, &tge, &backtrace);
281
315
  Contextualize contextualize(*this, &eval, &tge, &backtrace);
282
316
  Expand expand(*this, &eval, &contextualize, &tge, &backtrace);
283
- // Inspect inspect(this);
284
- // Output_Nested output_nested(*this);
285
-
317
+ Cssize cssize(*this, &tge, &backtrace);
286
318
  root = root->perform(&expand)->block();
319
+ root = root->perform(&cssize)->block();
287
320
  if (!subset_map.empty()) {
288
321
  Extend extend(*this, subset_map);
289
322
  root->perform(&extend);
@@ -300,11 +333,12 @@ namespace Sass {
300
333
  if (!source_c_str) return 0;
301
334
  queue.clear();
302
335
  if(is_indented_syntax_src) {
303
- char * contents = sass2scss(source_c_str, SASS2SCSS_PRETTIFY_1);
336
+ char * contents = sass2scss(source_c_str, SASS2SCSS_PRETTIFY_1 | SASS2SCSS_KEEP_COMMENT);
304
337
  add_source(input_path, input_path, contents);
338
+ delete [] source_c_str;
305
339
  return parse_file();
306
340
  }
307
- add_source(input_path, input_path, strdup(source_c_str));
341
+ add_source(input_path, input_path, source_c_str);
308
342
  return parse_file();
309
343
  }
310
344
 
@@ -324,7 +358,7 @@ namespace Sass {
324
358
  {
325
359
  string url = resolve_relative_path(file, output_path, cwd);
326
360
  if (source_map_embed) {
327
- string map = source_map.generate_source_map(*this);
361
+ string map = emitter.generate_source_map(*this);
328
362
  istringstream is( map );
329
363
  ostringstream buffer;
330
364
  base64::encoder E;
@@ -339,8 +373,8 @@ namespace Sass {
339
373
  {
340
374
  if (source_map_file == "") return 0;
341
375
  char* result = 0;
342
- string map = source_map.generate_source_map(*this);
343
- result = copy_c_str(map.c_str());
376
+ string map = emitter.generate_source_map(*this);
377
+ result = sass_strdup(map.c_str());
344
378
  return result;
345
379
  }
346
380
 
@@ -378,8 +412,7 @@ namespace Sass {
378
412
 
379
413
  void register_overload_stub(Context& ctx, string name, Env* env)
380
414
  {
381
- Definition* stub = new (ctx.mem) Definition("[built-in function]",
382
- Position(),
415
+ Definition* stub = new (ctx.mem) Definition(ParserState("[built-in function]"),
383
416
  0,
384
417
  name,
385
418
  0,
@@ -477,8 +510,6 @@ namespace Sass {
477
510
  // Boolean Functions
478
511
  register_function(ctx, not_sig, sass_not, env);
479
512
  register_function(ctx, if_sig, sass_if, env);
480
- // Path Functions
481
- register_function(ctx, image_url_sig, image_url, env);
482
513
  // Misc Functions
483
514
  register_function(ctx, inspect_sig, inspect, env);
484
515
  register_function(ctx, unique_id_sig, unique_id, env);
@@ -1,47 +1,27 @@
1
- #define SASS_CONTEXT
1
+ #ifndef SASS_CONTEXT_H
2
+ #define SASS_CONTEXT_H
2
3
 
3
4
  #include <string>
4
5
  #include <vector>
5
6
  #include <map>
6
- #include "kwd_arg_macros.hpp"
7
7
 
8
- #ifndef SASS_MEMORY_MANAGER
9
- #include "memory_manager.hpp"
10
- #endif
8
+ #define BUFFERSIZE 255
9
+ #include "b64/encode.h"
11
10
 
12
- #ifndef SASS_ENVIRONMENT
11
+ #include "ast_fwd_decl.hpp"
12
+ #include "kwd_arg_macros.hpp"
13
+ #include "memory_manager.hpp"
13
14
  #include "environment.hpp"
14
- #endif
15
-
16
- #ifndef SASS_SOURCE_MAP
17
15
  #include "source_map.hpp"
18
- #endif
19
-
20
- #ifndef SASS_SUBSET_MAP
21
16
  #include "subset_map.hpp"
22
- #endif
23
-
24
- #define BUFFERSIZE 255
25
- #include "b64/encode.h"
26
-
17
+ #include "output.hpp"
18
+ #include "plugins.hpp"
27
19
  #include "sass_functions.h"
28
20
 
29
21
  struct Sass_C_Function_Descriptor;
30
22
 
31
23
  namespace Sass {
32
24
  using namespace std;
33
- class AST_Node;
34
- class Block;
35
- class Expression;
36
- class Color;
37
- struct Backtrace;
38
- // typedef const char* Signature;
39
- // struct Context;
40
- // typedef Environment<AST_Node*> Env;
41
- // typedef Expression* (*Native_Function)(Env&, Context&, Signature, string, size_t);
42
-
43
- enum Output_Style { NESTED, EXPANDED, COMPACT, COMPRESSED, FORMATTED };
44
-
45
25
  struct Sass_Queued {
46
26
  string abs_path;
47
27
  string load_path;
@@ -50,7 +30,8 @@ namespace Sass {
50
30
  Sass_Queued(const string& load_path, const string& abs_path, const char* source);
51
31
  };
52
32
 
53
- struct Context {
33
+ class Context {
34
+ public:
54
35
  Memory_Manager<AST_Node> mem;
55
36
 
56
37
  const char* source_c_str;
@@ -64,18 +45,22 @@ namespace Sass {
64
45
  vector<string> include_links;
65
46
  // vectors above have same size
66
47
 
48
+ vector<string> plugin_paths; // relative paths to load plugins
67
49
  vector<string> include_paths; // lookup paths for includes
68
50
  vector<Sass_Queued> queue; // queue of files to be parsed
69
51
  map<string, Block*> style_sheets; // map of paths to ASTs
70
- SourceMap source_map;
52
+ // SourceMap source_map;
53
+ Output emitter;
71
54
  vector<Sass_C_Function_Callback> c_functions;
72
55
 
73
- string image_path; // for the image-url Sass function
56
+ string indent; // String to be used for indentation
57
+ string linefeed; // String to be used for line feeds
74
58
  string input_path; // for relative paths in src-map
75
59
  string output_path; // for relative paths to the output
76
60
  bool source_comments; // for inline debug comments in css output
77
61
  Output_Style output_style; // output style for the generated css code
78
62
  string source_map_file; // path to source map file (enables feature)
63
+ string source_map_root; // path for sourceRoot property (pass-through)
79
64
  bool source_map_embed; // embed in sourceMappingUrl (as data-url)
80
65
  bool source_map_contents; // insert included contents into source map
81
66
  bool omit_source_map_url; // disable source map comment in css output
@@ -89,24 +74,27 @@ namespace Sass {
89
74
  map<int, string> colors_to_names;
90
75
 
91
76
  size_t precision; // precision for outputting fractional numbers
92
- bool _skip_source_map_update; // status flag to skip source map updates
93
77
 
94
78
  KWD_ARG_SET(Data) {
95
79
  KWD_ARG(Data, const char*, source_c_str);
96
80
  KWD_ARG(Data, string, entry_point);
97
81
  KWD_ARG(Data, string, input_path);
98
82
  KWD_ARG(Data, string, output_path);
99
- KWD_ARG(Data, string, image_path);
83
+ KWD_ARG(Data, string, indent);
84
+ KWD_ARG(Data, string, linefeed);
100
85
  KWD_ARG(Data, const char*, include_paths_c_str);
86
+ KWD_ARG(Data, const char*, plugin_paths_c_str);
101
87
  KWD_ARG(Data, const char**, include_paths_array);
88
+ KWD_ARG(Data, const char**, plugin_paths_array);
102
89
  KWD_ARG(Data, vector<string>, include_paths);
90
+ KWD_ARG(Data, vector<string>, plugin_paths);
103
91
  KWD_ARG(Data, bool, source_comments);
104
92
  KWD_ARG(Data, Output_Style, output_style);
105
93
  KWD_ARG(Data, string, source_map_file);
94
+ KWD_ARG(Data, string, source_map_root);
106
95
  KWD_ARG(Data, bool, omit_source_map_url);
107
96
  KWD_ARG(Data, bool, is_indented_syntax_src);
108
97
  KWD_ARG(Data, size_t, precision);
109
- KWD_ARG(Data, bool, _skip_source_map_update);
110
98
  KWD_ARG(Data, bool, source_map_embed);
111
99
  KWD_ARG(Data, bool, source_map_contents);
112
100
  KWD_ARG(Data, Sass_C_Import_Callback, importer);
@@ -132,11 +120,14 @@ namespace Sass {
132
120
  vector<string> get_included_files(size_t skip = 0);
133
121
 
134
122
  private:
123
+ void collect_plugin_paths(const char* paths_str);
124
+ void collect_plugin_paths(const char** paths_array);
135
125
  void collect_include_paths(const char* paths_str);
136
126
  void collect_include_paths(const char** paths_array);
137
127
  string format_source_mapping_url(const string& file);
138
128
 
139
129
  string cwd;
130
+ Plugins plugins;
140
131
 
141
132
  // void register_built_in_functions(Env* env);
142
133
  // void register_function(Signature sig, Native_Function f, Env* env);
@@ -148,3 +139,5 @@ namespace Sass {
148
139
  };
149
140
 
150
141
  }
142
+
143
+ #endif