12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- 'use strict';
- const CONSTANTS = require('./constants.js');
- const common = require('./common.js');
- const debug = common.debug;
- const getScriptName = common.getScriptName;
- const isResourceLink = common.isResourceLink;
- const isScript = common.isScript;
- const matches = common.matches;
- const shouldAdd = options => {
- return options.custom.length > 0;
- };
- const add = (options, tags) => {
- const update = updateElement.bind(null, options);
- return tags.map(update);
- };
- const updateElement = (options, tag) => {
- return (isScript(tag) || isResourceLink(tag))
- ? updateScriptElement(options, tag)
- : tag;
- };
- const updateScriptElement = (options, tag) => {
- const scriptName = getScriptName(options, tag);
- let updated = false;
- options.custom.forEach(customOption => {
- if (matches(scriptName, customOption.test)) {
- tag.attributes = tag.attributes || {};
- tag.attributes[customOption.attribute] = customOption.value;
- updated = true;
- }
- });
- if (updated) {
- debug(`${CONSTANTS.PLUGIN}: updated to: ${JSON.stringify(tag)}`);
- }
- return tag;
- };
- module.exports = {
- shouldAdd,
- add
- };
|