preserves/implementations/javascript/src/text.ts

19 lines
504 B
TypeScript

import { Value } from './values';
export function stringify(x: Value): string {
if (typeof x === 'object' && x !== null && 'asPreservesText' in x) {
return x.asPreservesText();
} else {
return JSON.stringify(x);
}
}
export function preserves(pieces: TemplateStringsArray, ...values: Value[]): string {
const result = [pieces[0]];
values.forEach((v, i) => {
result.push(stringify(v));
result.push(pieces[i + 1]);
});
return result.join('');
}