@akala/core
Version:
43 lines (42 loc) • 2.2 kB
TypeScript
type InterpolateFn<T> = ((value: unknown) => T) & {
expressions: string[];
};
/**
* Handles string interpolation with customizable delimiters
* @param startSymbol - Opening delimiter for expressions (default: '{{')
* @param endSymbol - Closing delimiter for expressions (default: '}}')
* @example
* const interpolator = new Interpolate('${', '}');
* const template = interpolator.build('Hello ${name}!');
* template({ name: 'World' }); // Returns 'Hello World!'
*/
export declare class Interpolate {
readonly startSymbol: string;
readonly endSymbol: string;
constructor(startSymbol?: string, endSymbol?: string);
private unescapeText;
private readonly escapedStartRegexp;
private readonly escapedEndRegexp;
/**
* Recursively processes objects/arrays/values to create an interpolation function
* @template T - Type of the input object
* @param obj - Object to interpolate (can be nested)
* @param mustHaveExpression - Require at least one interpolation expression
* @param evaluator - Custom expression evaluation function
* @param allOrNothing - Return undefined if any expression evaluates to undefined
* @returns Interpolation function with expressions metadata
*/
buildObject<T>(obj: T, mustHaveExpression?: boolean, evaluator?: (expression: string) => ((target: unknown) => any), allOrNothing?: boolean): InterpolateFn<T>;
static readonly Evaluator: (exp: string) => import("./parser/evaluator-as-function.js").ParsedFunction<unknown>;
/**
* Creates an interpolation function from a template string
* @template T - Template string type
* @param text - String containing interpolation expressions
* @param mustHaveExpression - Require at least one interpolation expression
* @param evaluator - Custom expression evaluation function
* @param allOrNothing - Return undefined if any expression evaluates to undefined
* @returns Interpolation function with expressions metadata
*/
build<T extends string>(text: T, mustHaveExpression?: boolean, evaluator?: (expression: string) => ((target: unknown) => any), allOrNothing?: boolean): InterpolateFn<T>;
}
export {};