in js/src/index.ts [104:138]
export function serializePattern(
format: FormatKey,
pattern: Pattern,
onError?: (error: SerializeError) => void
): string {
onError ??= (error) => {
throw error
}
switch (format) {
case 'android':
return androidSerializePattern(pattern, onError)
case 'fluent':
return fluentSerializePattern(pattern, onError)
case 'mf2':
return mf2SerializePattern(pattern)
case 'webext':
return webextSerializePattern(pattern, onError)
case 'xliff':
return xliffSerializePattern(pattern, onError)
case 'plain':
break
default:
onError(new SerializeError(`${format}: Unsupported format`))
}
let res = ''
for (const part of pattern) {
if (typeof part === 'string') res += part
else {
const error = `${format}: Unsupported pattern part: ${JSON.stringify(part)}`
onError(new SerializeError(error, res.length))
res += '{�}'
}
}
return res
}