Files
inline-html/lib/inline-img.js

38 lines
967 B
JavaScript
Raw Permalink Normal View History

2015-07-23 08:28:22 -07:00
var cheerio = require('cheerio');
var datauri = require('datauri');
var isLocalPath = require('is-local-path');
var isTemplateExpression = require('./is-template-expression');
2015-07-23 08:28:22 -07:00
var path = require('path');
var R = require('ramda');
2015-07-23 08:28:22 -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});
var $images = $('img').filter((index, element) => {
var path = $(element).attr('src');
return isLocalPath(path) && !isTemplateExpression(path);
2015-07-23 08:28:22 -07:00
});
try {
$images.each((index, element) => {
var source = $(element).attr('src');
var filename = path.resolve(basedir, source);
files = R.append(filename, files);
var uri = datauri(filename);
$(element).attr('src', uri);
});
}
catch (error) {
error.filename = filename;
error.files = R.uniq(files);
throw error;
}
files = R.uniq(files);
return {
html: $.xml(),
files
};
2015-07-23 08:28:22 -07:00
};
module.exports = inline;