Files
inline-html/lib/index.js

58 lines
1.3 KiB
JavaScript
Raw Permalink Normal View History

2015-07-22 15:51:14 -07:00
var co = require('co');
var cheerio = require('cheerio');
var fs = require('mz/fs');
var inlineStyle = require('./inline-style');
2015-07-23 08:28:22 -07:00
var inlineImg = require('./inline-img');
var inlineLinkLess = require('./inline-link-less');
2015-09-21 10:16:38 -07:00
var R = require('ramda');
var Ru = require('@panosoft/ramda-utils');
2015-07-22 15:51:14 -07:00
var inline = co.wrap(function * (html, options) {
2015-09-21 10:16:38 -07:00
options = Ru.defaults({
filename: null,
less: {},
verbose: false
2015-09-21 10:16:38 -07:00
}, options || {});
var filename;
try {
filename = html;
html = yield fs.readFile(filename, 'utf8');
}
catch (error) {
if (error.code === 'ENOENT') {
filename = options.filename;
}
else {
throw error;
}
}
var files = [filename];
2015-07-22 15:51:14 -07:00
2015-07-23 08:28:22 -07:00
// Inline links
var lessResult = yield inlineLinkLess(html, filename, options.less);
html = lessResult.html;
files.push(lessResult.files);
2015-07-22 15:51:14 -07:00
// TODO inline links: css
2015-07-23 08:28:22 -07:00
// TODO inline scripts
// browserify js? => scriptify
// Inline paths -> datauris
var styleResult = inlineStyle(html, filename); // Inline styles
html = styleResult.html;
files.push(styleResult.files);
var imgResult = inlineImg(html, filename); // Inline images
html = imgResult.html;
files.push(imgResult.files);
2015-07-22 15:51:14 -07:00
var result = {
html: html,
2015-09-21 10:16:38 -07:00
files: R.uniq(R.flatten(files, true))
};
return (options.verbose ? result : result.html);
2015-07-22 15:51:14 -07:00
});
2015-07-23 08:28:22 -07:00
2015-07-22 15:51:14 -07:00
module.exports = inline;