2015-07-23 08:28:22 -07:00
|
|
|
var cheerio = require('cheerio');
|
|
|
|
|
var datauri = require('datauri');
|
|
|
|
|
var isLocalPath = require('is-local-path');
|
|
|
|
|
var path = require('path');
|
|
|
|
|
|
2015-07-24 15:51:46 -07:00
|
|
|
var inline = function (html, filename) {
|
|
|
|
|
var files = [];
|
|
|
|
|
var basedir = path.dirname(filename);
|
2015-07-23 16:58:12 -07:00
|
|
|
var $ = cheerio.load(html, {decodeEntities: false});
|
2015-07-23 08:28:22 -07:00
|
|
|
var images = $('img').filter(function (index, element) {
|
|
|
|
|
return isLocalPath($(element).attr('src'));
|
|
|
|
|
});
|
|
|
|
|
images.each(function (index, element) {
|
|
|
|
|
var src = $(element).attr('src');
|
2015-07-24 15:51:46 -07:00
|
|
|
var filename = path.resolve(basedir, src);
|
|
|
|
|
files.push(filename);
|
|
|
|
|
src = datauri(filename);
|
2015-07-23 08:28:22 -07:00
|
|
|
$(element).attr('src', src);
|
|
|
|
|
});
|
2015-07-24 15:51:46 -07:00
|
|
|
return {
|
|
|
|
|
html: $.html(),
|
|
|
|
|
files: files
|
|
|
|
|
};
|
2015-07-23 08:28:22 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
module.exports = inline;
|