/** * Module dependencies. */ var css = require('css'); var convertSourceMap = require('convert-source-map'); var parse = css.parse; var stringify = css.stringify; /** * Expose `rework`. */ exports = module.exports = rework; /** * Initialize a new stylesheet `Rework` with `str`. * * @param {String} str * @param {Object} options * @return {Rework} * @api public */ function rework(str, options) { return new Rework(parse(str, options)); } /** * Initialize a new stylesheet `Rework` with `obj`. * * @param {Object} obj * @api private */ function Rework(obj) { this.obj = obj; } /** * Use the given plugin `fn(style, rework)`. * * @param {Function} fn * @return {Rework} * @api public */ Rework.prototype.use = function(fn){ fn(this.obj.stylesheet, this); return this; }; /** * Stringify the stylesheet. * * @param {Object} options * @return {String} * @api public */ Rework.prototype.toString = function(options){ options = options || {}; var result = stringify(this.obj, options); if (options.sourcemap && !options.sourcemapAsObject) { result = result.code + '\n' + sourcemapToComment(result.map); } return result; }; /** * Convert sourcemap to base64-encoded comment * * @param {Object} map * @return {String} * @api private */ function sourcemapToComment(map) { var content = convertSourceMap.fromObject(map).toBase64(); return '/*# sourceMappingURL=data:application/json;base64,' + content + ' */'; }