| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 | /*! * node-sass: lib/render.js */var chalk = require('chalk'),  fs = require('fs'),  mkdirp = require('mkdirp'),  path = require('path'),  sass = require('./');/** * Render * * @param {Object} options * @param {Object} emitter * @api public */module.exports = function(options, emitter) {  var renderOptions = {    includePaths: options.includePath,    omitSourceMapUrl: options.omitSourceMapUrl,    indentedSyntax: options.indentedSyntax,    outFile: options.dest,    outputStyle: options.outputStyle,    precision: options.precision,    sourceComments: options.sourceComments,    sourceMapEmbed: options.sourceMapEmbed,    sourceMapContents: options.sourceMapContents,    sourceMap: options.sourceMap,    sourceMapRoot: options.sourceMapRoot,    importer: options.importer,    functions: options.functions,    indentWidth: options.indentWidth,    indentType: options.indentType,    linefeed: options.linefeed  };  if (options.data) {    renderOptions.data = options.data;  } else if (options.src) {    renderOptions.file = options.src;  }  var sourceMap = options.sourceMap;  var destination = options.dest;  var stdin = options.stdin;  var success = function(result) {    var todo = 1;    var done = function() {      if (--todo <= 0) {        emitter.emit('done');      }    };    if (!destination || stdin) {      emitter.emit('log', result.css.toString());      if (sourceMap && !options.sourceMapEmbed) {        emitter.emit('log', result.map.toString());      }      return done();    }    emitter.emit('info', chalk.green('Rendering Complete, saving .css file...'));    mkdirp(path.dirname(destination), function(err) {      if (err) {        return emitter.emit('error', chalk.red(err));      }      fs.writeFile(destination, result.css.toString(), function(err) {        if (err) {          return emitter.emit('error', chalk.red(err));        }        emitter.emit('info', chalk.green('Wrote CSS to ' + destination));        emitter.emit('write', err, destination, result.css.toString());        done();      });    });    if (sourceMap) {      todo++;      mkdirp(path.dirname(sourceMap), function(err) {        if (err) {          return emitter.emit('error', chalk.red(err));        }        fs.writeFile(sourceMap, result.map, function(err) {          if (err) {            return emitter.emit('error', chalk.red('Error' + err));          }          emitter.emit('info', chalk.green('Wrote Source Map to ' + sourceMap));          emitter.emit('write-source-map', err, sourceMap, result.map);          done();        });      });    }    emitter.emit('render', result.css.toString());  };  var error = function(error) {    emitter.emit('error', chalk.red(JSON.stringify(error, null, 2)));  };  var renderCallback = function(err, result) {    if (err) {      error(err);    }    else {      success(result);    }  };  sass.render(renderOptions, renderCallback);};
 |