add base class for name results
This commit is contained in:
parent
4463a20b35
commit
7c98517c27
|
@ -1,36 +1,9 @@
|
||||||
import { SlashCommandNamedArgumentAutoCompleteOption } from '../slash-commands/SlashCommandNamedArgumentAutoCompleteOption.js';
|
import { AutoCompleteNameResultBase } from './AutoCompleteNameResultBase.js';
|
||||||
import { AutoCompleteOption } from './AutoCompleteOption.js';
|
import { AutoCompleteSecondaryNameResult } from './AutoCompleteSecondaryNameResult.js';
|
||||||
// import { AutoCompleteSecondaryNameResult } from './AutoCompleteSecondaryNameResult.js';
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
export class AutoCompleteNameResult {
|
export class AutoCompleteNameResult extends AutoCompleteNameResultBase {
|
||||||
/**@type {string} */ name;
|
|
||||||
/**@type {number} */ start;
|
|
||||||
/**@type {AutoCompleteOption[]} */ optionList = [];
|
|
||||||
/**@type {boolean} */ canBeQuoted = false;
|
|
||||||
/**@type {()=>string} */ makeNoMatchText = ()=>`No matches found for "${this.name}"`;
|
|
||||||
/**@type {()=>string} */ makeNoOptionsText = ()=>'No options';
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param {string} name Name (potentially partial) of the name at the requested index.
|
|
||||||
* @param {number} start Index where the name starts.
|
|
||||||
* @param {AutoCompleteOption[]} optionList A list of autocomplete options found in the current scope.
|
|
||||||
* @param {boolean} canBeQuoted Whether the name can be inside quotes.
|
|
||||||
* @param {()=>string} makeNoMatchText Function that returns text to show when no matches where found.
|
|
||||||
* @param {()=>string} makeNoOptionsText Function that returns text to show when no options are available to match against.
|
|
||||||
*/
|
|
||||||
constructor(name, start, optionList = [], canBeQuoted = false, makeNoMatchText = null, makeNoOptionsText = null) {
|
|
||||||
this.name = name;
|
|
||||||
this.start = start;
|
|
||||||
this.optionList = optionList;
|
|
||||||
this.canBeQuoted = canBeQuoted;
|
|
||||||
this.noMatchText = makeNoMatchText ?? this.makeNoMatchText;
|
|
||||||
this.noOptionstext = makeNoOptionsText ?? this.makeNoOptionsText;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param {string} text The whole text
|
* @param {string} text The whole text
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
import { SlashCommandNamedArgumentAutoCompleteOption } from '../slash-commands/SlashCommandNamedArgumentAutoCompleteOption.js';
|
||||||
|
import { AutoCompleteOption } from './AutoCompleteOption.js';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export class AutoCompleteNameResultBase {
|
||||||
|
/**@type {string} */ name;
|
||||||
|
/**@type {number} */ start;
|
||||||
|
/**@type {AutoCompleteOption[]} */ optionList = [];
|
||||||
|
/**@type {boolean} */ canBeQuoted = false;
|
||||||
|
/**@type {()=>string} */ makeNoMatchText = ()=>`No matches found for "${this.name}"`;
|
||||||
|
/**@type {()=>string} */ makeNoOptionsText = ()=>'No options';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} name Name (potentially partial) of the name at the requested index.
|
||||||
|
* @param {number} start Index where the name starts.
|
||||||
|
* @param {AutoCompleteOption[]} optionList A list of autocomplete options found in the current scope.
|
||||||
|
* @param {boolean} canBeQuoted Whether the name can be inside quotes.
|
||||||
|
* @param {()=>string} makeNoMatchText Function that returns text to show when no matches where found.
|
||||||
|
* @param {()=>string} makeNoOptionsText Function that returns text to show when no options are available to match against.
|
||||||
|
*/
|
||||||
|
constructor(name, start, optionList = [], canBeQuoted = false, makeNoMatchText = null, makeNoOptionsText = null) {
|
||||||
|
this.name = name;
|
||||||
|
this.start = start;
|
||||||
|
this.optionList = optionList;
|
||||||
|
this.canBeQuoted = canBeQuoted;
|
||||||
|
this.noMatchText = makeNoMatchText ?? this.makeNoMatchText;
|
||||||
|
this.noOptionstext = makeNoOptionsText ?? this.makeNoOptionsText;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
import { AutoCompleteNameResult } from './AutoCompleteNameResult.js';
|
import { AutoCompleteNameResultBase } from './AutoCompleteNameResultBase.js';
|
||||||
|
|
||||||
export class AutoCompleteSecondaryNameResult extends AutoCompleteNameResult {
|
export class AutoCompleteSecondaryNameResult extends AutoCompleteNameResultBase {
|
||||||
/**@type {boolean}*/ isRequired = false;
|
/**@type {boolean}*/ isRequired = false;
|
||||||
/**@type {boolean}*/ forceMatch = true;
|
/**@type {boolean}*/ forceMatch = true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue