less-plugin-inline-svg
Version:
A Less plugin that allows to inline SVG file and customize its CSS styles
29 lines (21 loc) • 807 B
JavaScript
const encodeHtmlToBase64 = input => new Buffer(input).toString('base64');
const encodeHtmlEntities = input => encodeURIComponent(input);
const optimizeSvg = input => input.replace(/\s*\n\s*/g, '');
const wrapAndEncodeSvgToBase64 = svgCode => (
`url("data:image/svg+xml;base64,${encodeHtmlToBase64(svgCode)}")`
);
const wrapSvg = svgCode => (
`url('data:image/svg+xml;charset=UTF-8,${optimizeSvg(svgCode)}')`
);
const wrapAndEncodeSvg = svgCode => (
wrapSvg(encodeHtmlEntities(svgCode))
);
const encoderWrappers = {
base64: wrapAndEncodeSvgToBase64,
encode: wrapAndEncodeSvg
};
const encodeAndWrapWithEnvelope = (svgCode, encoder) => {
const wrapAndEncode = encoderWrappers[encoder] || wrapSvg;
return wrapAndEncode(svgCode);
};
module.exports = encodeAndWrapWithEnvelope;