UNPKG

@akala/core

Version:
43 lines (42 loc) 2.2 kB
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 {};