toosoon-lsystem
Version:
Library providing functionalities for creating and manipulating Lindenmayer systems (L-Systems) using various parameters
69 lines (68 loc) • 2.63 kB
TypeScript
import type { Alphabet, Axiom, AxiomParameter, Context, Defines, ParametricSymbol, Phrase, Production, ProductionParameter, ProductionResult, SuccessorParameter, Symbol } from './types';
/**
* Normalize parameter into valid axiom
*
* @template {Alphabet} A Alphabet
* @template {Alphabet} I Ignored Alphabet
* @param {AxiomParameter<A|I> | ProductionResult<A|I>} parameter
* @param {A} alphabet
* @param {I} ignoredSymbols
* @param {Defines} defines
* @returns {Axiom<A|I>}
*/
export declare function normalizeAxiom<A extends Alphabet, I extends Alphabet>(parameter: AxiomParameter<A | I> | ProductionResult<A | I>, alphabet: A, ignoredSymbols: I, defines: Defines): Axiom<A | I>;
/**
* Normalize parameter into valid Symbol & Production
*
* @template {Alphabet} A Alphabet
* @template {Alphabet} I Ignored Alphabet
* @param {SuccessorParameter<A>} successorParameter
* @param {ProductionParameter<A,I>} productionParameter
* @returns { symbol: Symbol<A>; production: Production<A,I> }
*/
export declare function normalizeProduction<A extends Alphabet, I extends Alphabet>(successorParameter: SuccessorParameter<A>, productionParameter: ProductionParameter<A, I>): {
symbol: Symbol<A>;
production: Production<A, I>;
};
/**
* Transform context classic syntax
*
* @template {Alphabet} A Alphabet
* @param {SuccessorParameter<A>} successorParameter
* @returns { symbol: Symbol<A>; context: Context<A> }
*/
export declare function transformClassicContext<A extends Alphabet>(successorParameter: SuccessorParameter<A>): {
symbol: Symbol<A>;
context: Context<A>;
};
/**
* Transform parametric classic syntax
*
* @template {Alphabet} A Alphabet
* @param {Symbol<A>|ParametricSymbol<A>} parametricSymbol
* @returns { symbol: Symbol<A>; params: string[] }
*/
export declare function transformClassicParametric<A extends Alphabet>(parametricSymbol: Symbol<A> | ParametricSymbol<A>): {
symbol: Symbol<A>;
params: string[];
};
/**
* Split a phrase into axiom from an alphabet
*
* @template {Alphabet} A Alphabet
* @template {Alphabet} I Ignored Alphabet
* @param {Phrase} phrase
* @param {A} alphabet
* @param {I} ignoredSymbols
* @param {Defines} defines
* @returns {Axiom<A|I>}
*/
export declare function transformPhraseToAxiom<A extends Alphabet, I extends Alphabet>(phrase: Phrase, alphabet: A, ignoredSymbols: I, defines: Defines): Axiom<A | I>;
/**
* Convert keys & values into a Map
*
* @param {string[]} [keys]
* @param {number[]} [values]
* @returns {Defines}
*/
export declare function transformParamsToDefines(keys?: string[], values?: number[]): Defines;