arg array options to wrapped func
This commit is contained in:
parent
18f6ab451d
commit
19366e3624
@ -11,7 +11,7 @@
|
||||
import SyncDish from "./SyncDish";
|
||||
import NodeRecipe from "./NodeRecipe";
|
||||
import OperationConfig from "./config/OperationConfig.json";
|
||||
import { sanitise } from "./apiUtils";
|
||||
import { sanitise, removeSubheadingsFromArray, sentenceToCamelCase } from "./apiUtils";
|
||||
import ExludedOperationError from "../core/errors/ExcludedOperationError";
|
||||
|
||||
|
||||
@ -58,12 +58,7 @@ function transformArgs(originalArgs, newArgs) {
|
||||
// See Strings op for example.
|
||||
const allArgs = Object.assign([], originalArgs).map((a) => {
|
||||
if (Array.isArray(a.value)) {
|
||||
a.value = a.value.filter((v) => {
|
||||
if (typeof v === "string") {
|
||||
return !v.match(/^\[[\s\S]*\]$/); // Matches anything surrounded in [ ]
|
||||
}
|
||||
return true;
|
||||
});
|
||||
a.value = removeSubheadingsFromArray(a.value);
|
||||
}
|
||||
return a;
|
||||
});
|
||||
@ -187,6 +182,23 @@ export function wrap(OpClass) {
|
||||
|
||||
// used in chef.help
|
||||
wrapped.opName = OpClass.name;
|
||||
|
||||
/** */
|
||||
const addArgs = (op) => {
|
||||
const result = {};
|
||||
op.args.forEach((a) => {
|
||||
if (a.type === "option") {
|
||||
result[sentenceToCamelCase(a.name)] = removeSubheadingsFromArray(a.value);
|
||||
} else if (a.type === "toggleString") {
|
||||
result[sentenceToCamelCase(a.name)] = removeSubheadingsFromArray(a.toggleValues);
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
wrapped.args = addArgs(opInstance);
|
||||
|
||||
return wrapped;
|
||||
}
|
||||
|
||||
|
@ -6,24 +6,61 @@
|
||||
* @license Apache-2.0
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* someName => Somename
|
||||
*
|
||||
* @param {String} str = string to be altered
|
||||
* @returns {String}
|
||||
*/
|
||||
const capitalise = function capitalise(str) {
|
||||
// Don't edit names that start with 2+ caps
|
||||
if (/^[A-Z0-9]{2,}/g.test(str)) {
|
||||
return str;
|
||||
}
|
||||
// reserved. Don't change for now.
|
||||
if (str === "Return") {
|
||||
return str;
|
||||
}
|
||||
|
||||
return `${str.charAt(0).toUpperCase()}${str.substr(1).toLowerCase()}`;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* SomeName => someName
|
||||
* @param {String} name - string to be altered
|
||||
* @returns {String} decapitalised
|
||||
*/
|
||||
export function decapitalise(name) {
|
||||
// Don't decapitalise names that start with 2+ caps
|
||||
if (/^[A-Z0-9]{2,}/g.test(name)) {
|
||||
return name;
|
||||
export function decapitalise(str) {
|
||||
// Don't decapitalise str that start with 2+ caps
|
||||
if (/^[A-Z0-9]{2,}/g.test(str)) {
|
||||
return str;
|
||||
}
|
||||
// reserved. Don't change for now.
|
||||
if (name === "Return") {
|
||||
return name;
|
||||
if (str === "Return") {
|
||||
return str;
|
||||
}
|
||||
|
||||
return `${name.charAt(0).toLowerCase()}${name.substr(1)}`;
|
||||
return `${str.charAt(0).toLowerCase()}${str.substr(1)}`;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Remove strings surrounded with [] from the given array.
|
||||
*/
|
||||
export function removeSubheadingsFromArray(array) {
|
||||
if (Array.isArray(array)) {
|
||||
return array.filter((i) => {
|
||||
if (typeof i === "string") {
|
||||
return !i.match(/^\[[\s\S]*\]$/);
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Remove spaces, make lower case.
|
||||
* @param str
|
||||
@ -31,3 +68,22 @@ export function decapitalise(name) {
|
||||
export function sanitise(str) {
|
||||
return str.replace(/ /g, "").toLowerCase();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* sonething like this => somethingLikeThis
|
||||
* ABC a sentence => ABCASentence
|
||||
*/
|
||||
export function sentenceToCamelCase(str) {
|
||||
return str.split(" ")
|
||||
.map((s, index) => {
|
||||
if (index === 0) {
|
||||
return decapitalise(s);
|
||||
}
|
||||
return capitalise(s);
|
||||
})
|
||||
.reduce((prev, curr) => `${prev}${curr}`, "");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user