int compile_file(struct Sass_Options* options, char* input_path, char* outfile) { int ret; char* source_map_file = 0; struct Sass_File_Context* ctx = sass_make_file_context(input_path); struct Sass_Context* ctx_out = sass_file_context_get_context(ctx); if (outfile) sass_option_set_output_path(options, outfile); sass_file_context_set_options(ctx, options); sass_compile_file_context(ctx); ret = output( sass_context_get_error_status(ctx_out), sass_context_get_error_message(ctx_out), sass_context_get_output_string(ctx_out), outfile ); if (sass_option_get_source_map_file(options)) { ret = output( sass_context_get_error_status(ctx_out), sass_context_get_error_message(ctx_out), sass_context_get_source_map_string(ctx_out), sass_option_get_source_map_file(options) ); } free(source_map_file); sass_delete_file_context(ctx); return ret; }
int GetResult(sass_context_wrapper* ctx_w, Sass_Context* ctx, bool is_sync = false) { Nan::HandleScope scope; v8::Local<v8::Object> result; int status = sass_context_get_error_status(ctx); result = Nan::New(ctx_w->result); assert(result->IsObject()); if (status == 0) { const char* css = sass_context_get_output_string(ctx); const char* map = sass_context_get_source_map_string(ctx); Nan::Set(result, Nan::New("css").ToLocalChecked(), Nan::CopyBuffer(css, static_cast<uint32_t>(strlen(css))).ToLocalChecked()); GetStats(ctx_w, ctx); if (map) { Nan::Set(result, Nan::New("map").ToLocalChecked(), Nan::CopyBuffer(map, static_cast<uint32_t>(strlen(map))).ToLocalChecked()); } } else if (is_sync) { Nan::Set(result, Nan::New("error").ToLocalChecked(), Nan::New<v8::String>(sass_context_get_error_json(ctx)).ToLocalChecked()); } return status; }
void GetSourceMap(Handle<Object> result, Sass_Context* ctx) { Handle<Value> source_map; if (sass_context_get_error_status(ctx)) { return; } if (sass_context_get_source_map_string(ctx)) { source_map = NanNew<String>(sass_context_get_source_map_string(ctx)); } else { source_map = NanNew<String>("{}"); } (*result)->Set(NanNew("sourceMap"), source_map); }
void get_source_map(sass_context_wrapper* ctx_w, Sass_Context* ctx) { NanScope(); Handle<Value> source_map; if (sass_context_get_error_status(ctx)) { return; } if (sass_context_get_source_map_string(ctx)) { source_map = NanNew<String>(sass_context_get_source_map_string(ctx)); } else { source_map = NanNew<String>("{}"); } NanNew(ctx_w->result)->Set(NanNew("map"), source_map); }