File: /var/www/zaklada/html/node_modules/useref/lib/compactContent.js
'use strict';
var parse = require('./parseBuildBlock'),
resources = require('./resources'),
sectionsJoinChar = resources.sectionsJoinChar,
regComment = resources.regComment;
function removeComments(lines) {
return lines.join('\n').replace(regComment, '').split('\n');
}
module.exports = function (blocks, options) {
var result = {},
parseSourcePath = options.parseSourcePath || function (tag) {
return (tag.match(/(href|src)=(?:["']\W+\s*(?:\w+)\()?["']([^'"]+)['"]/) || [])[2];
};
Object.keys(blocks).forEach(function (dest) {
// Lines are the included scripts w/o the use blocks
var lines = blocks[dest].slice(1, -1),
parts = dest.split(sectionsJoinChar),
type = parts[0],
// output is the useref block file
output = parts[1],
build = parse(blocks[dest][0]),
assets;
// remove html comment blocks
lines = removeComments(lines);
// parse out the list of assets to handle, and update the config accordingly
assets = lines.map(function (tag) {
if (typeof(parseSourcePath) !== 'function') {
throw new Error('options.parseSourcePath must be a function');
}
// call function to parse the asset path
return parseSourcePath(tag, type);
}).reduce(function (a, b) {
return b ? a.concat(b) : a;
}, []);
result[type] = result[type] || {};
result[type][output] = {
assets: assets
};
if (build.alternateSearchPaths) {
// Alternate search path
result[type][output].searchPaths = build.alternateSearchPaths;
}
});
return result;
};