@specify-text/core
v0.2.0
Published
Framework-agnostic component catalog and resolver for specify-text
Maintainers
Readme
@specify-text/core
Framework-agnostic component catalog and resolver for specify-text.
Takes parsed segments from @specify-text/parser and resolves them against a
catalog of handler functions. Works with any UI framework (React, Vue, Svelte, etc.).
Installation
npm install @specify-text/coreAPI
createCatalog(defaults?)
Creates a Catalog (a Map<string, ComponentResolver>) with optional default entries.
import { createCatalog } from '@specify-text/core';
const catalog = createCatalog({
bold: (props) => `<b>${props.text}</b>`,
});resolve(segments, catalog)
Resolves parsed segments against a catalog. Returns ResolvedSegment[].
import { resolve } from '@specify-text/core';
const resolved = resolve(segments, catalog);
// [{ text: 'world', resolver: <function>, props: { text: 'world', type: 'bold', ... } }]resolveWithFallback(segments, catalog, onError?)
Same as resolve, but catches errors per-segment and calls onError for error handling.
import { resolveWithFallback } from '@specify-text/core';
const resolved = resolveWithFallback(segments, catalog, (err, segment) => {
console.warn('Failed to resolve segment:', segment, err);
});stringToBoolean(value)
Converts a string to a boolean. Returns false for "", "false", "null", "undefined", "0", "NaN"; true for everything else.
import { stringToBoolean } from '@specify-text/core';
stringToBoolean('true'); // true
stringToBoolean('false'); // falseTypes
ComponentResolver<T>—(props: Segment & T) => unknownCatalog—Map<string, ComponentResolver>ResolvedSegment—{ text: string; resolver: ComponentResolver | null; props: Segment }
