UNPKG

toosoon-lsystem

Version:

Library providing functionalities for creating and manipulating Lindenmayer systems (L-Systems) using various parameters

69 lines (68 loc) 2.63 kB
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;