UNPKG

catlogjs

Version:

Static site generator, translate human readable text format(such as markdown) into html, with a lot of other functions

46 lines (41 loc) 1.54 kB
'use strict'; // // CSSProcessor takes care, and processes CSS files. // It is given: // - A base directory, which is the directory under which to look at references files // - A destination directory, which is the directory under which will be generated the files // - A file content to be processed // - a file replacement locator // - a destination directory (optional) // - an optional log callback that will be called as soon as there's something to log // var CSSProcessor = module.exports = function (src, dest, content, revvedfinder, logcb) { this.content = content; this.filepath = src; this.linefeed = /\r\n/g.test(this.content) ? '\r\n' : '\n'; this.revvedfinder = revvedfinder; this.logcb = logcb || function () {}; }; // // Calls the log callback function // CSSProcessor.prototype.log = function log(msg) { this.logcb(msg); }; // Process the CSS file, which is: // - replace image references by their revved version // CSSProcessor.prototype.process = function process() { var self = this; // Replace reference to images with the actual name of the optimized image this.log('Update the CSS with new img filenames'); return this.content.replace(/(src=|url\(\s*)['"]?([^'"\)#?]+)(?:[#?](?:[^'"\)]*))?['"]?\s*\)?/gm, function (match, attribute, src) { // Consider reference from site root var file = self.revvedfinder.find(src, self.filepath); var res = match.replace(src, file); if (src !== file) { self.log(match + ' changed to ' + res); } return res; }); };