Commit b6d45993 by Adeel Mujahid

Merge pull request #584 from am11/master

Misc. fixes
parents 80a470c4 a5067a64
...@@ -35,7 +35,7 @@ function getOutFile(options) { ...@@ -35,7 +35,7 @@ function getOutFile(options) {
var file = options.file; var file = options.file;
var outFile = options.outFile; var outFile = options.outFile;
if (!file || !outFile || typeof outFile !== 'string' || typeof file !== 'string') { if (!outFile || typeof outFile !== 'string' || (!options.data && !file)) {
return null; return null;
} }
...@@ -161,12 +161,13 @@ function getOptions(options) { ...@@ -161,12 +161,13 @@ function getOptions(options) {
}; };
options.success = function() { options.success = function() {
var stats = endStats(options.result.stats); var result = options.result;
var stats = endStats(result.stats);
if (success) { if (success) {
success({ success({
css: options.result.css, css: result.css,
map: options.result.sourceMap, map: result.sourceMap,
stats: stats stats: stats
}); });
} }
...@@ -231,12 +232,13 @@ module.exports.render = function(options) { ...@@ -231,12 +232,13 @@ module.exports.render = function(options) {
module.exports.renderSync = function(options) { module.exports.renderSync = function(options) {
options = getOptions(options); options = getOptions(options);
var result = options.data ? binding.renderSync(options) : binding.renderFileSync(options); var status = options.data ? binding.renderSync(options) : binding.renderFileSync(options);
var result = options.result;
if(result) { if(status) {
options.result.stats = endStats(options.result.stats); result.stats = endStats(result.stats);
return options.result; return result;
} }
}; };
......
...@@ -119,13 +119,12 @@ function testBinary(options) { ...@@ -119,13 +119,12 @@ function testBinary(options) {
return; return;
} }
return; // TODO: remove it once TravisCI build pass 90% and above tests
fs.stat(path.join(__dirname, '..', 'vendor', options.bin, 'binding.node'), function (err) { fs.stat(path.join(__dirname, '..', 'vendor', options.bin, 'binding.node'), function (err) {
if (err) { if (err) {
return build(options); return build(options);
} }
return; // TODO: remove it once TravisCI build pass 90% and above tests
console.log('`' + options.bin + '` exists; testing'); console.log('`' + options.bin + '` exists; testing');
var total; var total;
......
...@@ -113,7 +113,7 @@ void ExtractOptions(Local<Object> options, void* cptr, sass_context_wrapper* ctx ...@@ -113,7 +113,7 @@ void ExtractOptions(Local<Object> options, void* cptr, sass_context_wrapper* ctx
sass_option_set_precision(sass_options, options->Get(NanNew("precision"))->Int32Value()); sass_option_set_precision(sass_options, options->Get(NanNew("precision"))->Int32Value());
} }
void GetStats(Handle<Object> result, Sass_Context* ctx) { void GetStats(sass_context_wrapper* ctx_w, Sass_Context* ctx) {
char** included_files = sass_context_get_included_files(ctx); char** included_files = sass_context_get_included_files(ctx);
Handle<Array> arr = NanNew<Array>(); Handle<Array> arr = NanNew<Array>();
...@@ -123,10 +123,13 @@ void GetStats(Handle<Object> result, Sass_Context* ctx) { ...@@ -123,10 +123,13 @@ void GetStats(Handle<Object> result, Sass_Context* ctx) {
} }
} }
(*result)->Get(NanNew("stats"))->ToObject()->Set(NanNew("includedFiles"), arr); Local<Object> obj = NanNew(ctx_w->result);
obj->Get(NanNew("stats"))->ToObject()->Set(NanNew("includedFiles"), arr);
NanAssignPersistent(ctx_w->result, obj);
} }
void GetSourceMap(Handle<Object> result, Sass_Context* ctx) { void GetSourceMap(sass_context_wrapper* ctx_w, Sass_Context* ctx) {
Handle<Value> source_map; Handle<Value> source_map;
if (sass_context_get_error_status(ctx)) { if (sass_context_get_error_status(ctx)) {
...@@ -140,16 +143,23 @@ void GetSourceMap(Handle<Object> result, Sass_Context* ctx) { ...@@ -140,16 +143,23 @@ void GetSourceMap(Handle<Object> result, Sass_Context* ctx) {
source_map = NanNew<String>("{}"); source_map = NanNew<String>("{}");
} }
(*result)->Set(NanNew("sourceMap"), source_map); Local<Object> obj = NanNew(ctx_w->result);
obj->Set(NanNew("sourceMap"), source_map);
NanAssignPersistent(ctx_w->result, obj);
} }
int GetResult(Handle<Object> result, Sass_Context* ctx) { int GetResult(sass_context_wrapper* ctx_w, Sass_Context* ctx) {
int status = sass_context_get_error_status(ctx); int status = sass_context_get_error_status(ctx);
if (status == 0) { if (status == 0) {
(*result)->Set(NanNew("css"), NanNew<String>(sass_context_get_output_string(ctx))); Local<Object> obj = NanNew(ctx_w->result);
GetStats(result, ctx); obj->Set(NanNew("css"), NanNew<String>(sass_context_get_output_string(ctx)));
GetSourceMap(result, ctx);
NanAssignPersistent(ctx_w->result, obj);
GetStats(ctx_w, ctx);
GetSourceMap(ctx_w, ctx);
} }
return status; return status;
...@@ -169,7 +179,7 @@ void make_callback(uv_work_t* req) { ...@@ -169,7 +179,7 @@ void make_callback(uv_work_t* req) {
ctx = sass_file_context_get_context(ctx_w->fctx); ctx = sass_file_context_get_context(ctx_w->fctx);
} }
int status = GetResult(ctx_w->result, ctx); int status = GetResult(ctx_w, ctx);
if (status == 0) { if (status == 0) {
// if no error, do callback(null, result) // if no error, do callback(null, result)
...@@ -220,7 +230,7 @@ NAN_METHOD(RenderSync) { ...@@ -220,7 +230,7 @@ NAN_METHOD(RenderSync) {
ExtractOptions(options, dctx, ctx_w, false, true); ExtractOptions(options, dctx, ctx_w, false, true);
compile_data(dctx); compile_data(dctx);
int result = GetResult(ctx_w->result, ctx); int result = GetResult(ctx_w, ctx);
Local<String> error; Local<String> error;
if (result != 0) { if (result != 0) {
...@@ -267,7 +277,7 @@ NAN_METHOD(RenderFileSync) { ...@@ -267,7 +277,7 @@ NAN_METHOD(RenderFileSync) {
ExtractOptions(options, fctx, ctx_w, true, true); ExtractOptions(options, fctx, ctx_w, true, true);
compile_file(fctx); compile_file(fctx);
int result = GetResult(ctx_w->result, ctx); int result = GetResult(ctx_w, ctx);
Local<String> error; Local<String> error;
if (result != 0) { if (result != 0) {
......
...@@ -37,8 +37,6 @@ extern "C" { ...@@ -37,8 +37,6 @@ extern "C" {
sass_delete_file_context(ctx_w->fctx); sass_delete_file_context(ctx_w->fctx);
} }
NanDisposePersistent(ctx_w->result);
delete ctx_w->success_callback; delete ctx_w->success_callback;
delete ctx_w->error_callback; delete ctx_w->error_callback;
delete ctx_w->importer_callback; delete ctx_w->importer_callback;
...@@ -48,6 +46,8 @@ extern "C" { ...@@ -48,6 +46,8 @@ extern "C" {
uv_mutex_destroy(&ctx_w->importer_mutex); uv_mutex_destroy(&ctx_w->importer_mutex);
uv_cond_destroy(&ctx_w->importer_condition_variable); uv_cond_destroy(&ctx_w->importer_condition_variable);
NanDisposePersistent(ctx_w->result);
free(ctx_w); free(ctx_w);
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment