You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

58 lines
1.7 KiB

/**
* @fileoverview Utility functions for propWrapperFunctions setting
*/
'use strict';
function searchPropWrapperFunctions(name, propWrapperFunctions) {
const splitName = name.split('.');
return Array.from(propWrapperFunctions).some((func) => {
if (splitName.length === 2 && func.object === splitName[0] && func.property === splitName[1]) {
return true;
}
return name === func || func.property === name;
});
}
function getPropWrapperFunctions(context) {
return new Set(context.settings.propWrapperFunctions || []);
}
function isPropWrapperFunction(context, name) {
if (typeof name !== 'string') {
return false;
}
const propWrapperFunctions = getPropWrapperFunctions(context);
return searchPropWrapperFunctions(name, propWrapperFunctions);
}
function getExactPropWrapperFunctions(context) {
const propWrapperFunctions = getPropWrapperFunctions(context);
const exactPropWrappers = Array.from(propWrapperFunctions).filter((func) => func.exact === true);
return new Set(exactPropWrappers);
}
function isExactPropWrapperFunction(context, name) {
const exactPropWrappers = getExactPropWrapperFunctions(context);
return searchPropWrapperFunctions(name, exactPropWrappers);
}
function formatPropWrapperFunctions(propWrapperFunctions) {
return Array.from(propWrapperFunctions, (func) => {
if (func.object && func.property) {
return `'${func.object}.${func.property}'`;
}
if (func.property) {
return `'${func.property}'`;
}
return `'${func}'`;
}).join(', ');
}
module.exports = {
formatPropWrapperFunctions,
getExactPropWrapperFunctions,
getPropWrapperFunctions,
isExactPropWrapperFunction,
isPropWrapperFunction,
};