markov-strings
Version:
A Markov string generator
81 lines (80 loc) • 2 kB
TypeScript
export type MarkovInputData = {
string: string;
}[];
export type MarkovGenerateOptions = {
maxTries?: number;
prng?: () => number;
filter?: (result: MarkovResult) => boolean;
};
/**
* Data to build the Markov instance
*/
export type MarkovConstructorOptions = {
stateSize?: number;
};
/**
* While `stateSize` is optional as a constructor parameter,
* it must exist as a member
*/
export type MarkovDataMembers = {
stateSize: number;
};
export type MarkovResult = {
string: string;
score: number;
refs: MarkovInputData;
tries: number;
};
export type MarkovFragment = {
words: string;
refs: MarkovInputData;
};
export type Corpus = {
[key: string]: MarkovFragment[];
};
export type MarkovImportExport = {
corpus: Corpus;
startWords: MarkovFragment[];
endWords: MarkovFragment[];
options: MarkovDataMembers;
};
export default class Markov {
data: MarkovInputData;
options: MarkovDataMembers;
startWords: MarkovFragment[];
endWords: MarkovFragment[];
corpus: Corpus;
private defaultOptions;
/**
* Creates an instance of Markov generator.
*
* @param {MarkovConstructorOptions} [options={}]
* @memberof Markov
*/
constructor(options?: MarkovConstructorOptions);
/**
* Imports a corpus. This overwrites existing data.
*
* @param data
*/
import(data: MarkovImportExport): void;
/**
* Exports structed data used to generate sentence.
*/
export(): MarkovImportExport;
addData(rawData: MarkovInputData | string[]): void;
/**
* Builds the corpus. You must call this before generating sentences.
*
* @memberof Markov
*/
private buildCorpus;
/**
* Generates a result, that contains a string and its references
*
* @param {MarkovGenerateOptions} [options={}]
* @returns {MarkovResult}
* @memberof Markov
*/
generate(options?: MarkovGenerateOptions): MarkovResult;
}