You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
1.4 KiB
82 lines
1.4 KiB
|
|
/** |
|
* 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 + ' */'; |
|
}
|
|
|