MCPcopy
hub / github.com/pyrochlore/obsidian-tracker / getStringArrayFromInput

Function getStringArrayFromInput

src/parsing.ts:389–564  ·  view source on GitHub ↗
(
    name: string,
    input: any,
    numDataset: number,
    defaultValue: string,
    validator: Function,
    allowNoValidValue: boolean
)

Source from the content-addressed store, hash-verified

387}
388
389function getStringArrayFromInput(
390 name: string,
391 input: any,
392 numDataset: number,
393 defaultValue: string,
394 validator: Function,
395 allowNoValidValue: boolean
396): Array<string> | string {
397 let array: Array<string> = [];
398 let errorMessage = "";
399 let numValidValue = 0;
400
401 while (numDataset > array.length) {
402 array.push(defaultValue);
403 }
404
405 if (typeof input === "undefined" || input === null) {
406 // all defaultValue
407 } else if (typeof input === "object" && input !== null) {
408 if (Array.isArray(input)) {
409 if (input.length > numDataset) {
410 errorMessage = "Too many inputs for parameter '" + name + "'";
411 return errorMessage;
412 }
413 if (input.length === 0) {
414 errorMessage = "Empty array not allowd for " + name;
415 return errorMessage;
416 }
417 for (let ind = 0; ind < array.length; ind++) {
418 if (ind < input.length) {
419 let curr = input[ind];
420 let prev = null;
421 if (ind > 0) {
422 prev = input[ind - 1].trim();
423 }
424 if (typeof curr === "string") {
425 curr = curr.trim();
426 if (curr === "") {
427 if (prev !== null) {
428 array[ind] = prev;
429 } else {
430 array[ind] = defaultValue;
431 }
432 } else {
433 if (validator) {
434 if (validator(curr)) {
435 array[ind] = curr;
436 numValidValue++;
437 } else {
438 errorMessage = "Invalid inputs for " + name;
439 break;
440 }
441 } else {
442 array[ind] = curr;
443 numValidValue++;
444 }
445 }
446 } else {

Callers 2

parseCommonChartInfoFunction · 0.85
getRenderInfoFromYamlFunction · 0.85

Calls 1

splitInputByCommaFunction · 0.85

Tested by

no test coverage detected