@kubb/core
Version:
Core functionality for Kubb's plugin-based code generation system, providing the foundation for transforming OpenAPI specifications.
32 lines (26 loc) • 831 B
text/typescript
export function renderTemplate<TData extends Record<string, unknown> = Record<string, unknown>>(template: string, data: TData | undefined = undefined): string {
if (!data || !Object.keys(data).length) {
return template.replace(/{{(.*?)}}/g, '')
}
const matches = template.match(/{{(.*?)}}/g)
return (
matches?.reduce((prev, curr) => {
const index = curr.split(/{{|}}/).filter(Boolean)[0]?.trim()
if (index === undefined) {
return prev
}
const value = data[index]
if (value === undefined) {
return prev
}
return prev
.replace(curr, () => {
if (typeof value === 'boolean') {
return `${value.toString()}` || 'false'
}
return (value as string) || ''
})
.trim()
}, template) || ''
)
}