UNPKG

romanize-string

Version:

A fully typed, general-purpose utility for unidirectional string transliteration (non-Latin script => Latin script).

24 lines (23 loc) 1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.romanizeMandarin = void 0; const pinyin_pro_1 = require("pinyin-pro"); const romanizeMandarin = (input, omitTones) => { // Check if the input contains any Chinese characters and return the original input if not. if (!/[\u3400-\u9FBF]|[\u{20000}-\u{2A6DF}]|[\u{2A700}-\u{2B73F}]|[\u{2B740}-\u{2B81F}]|[\u{2B820}-\u{2CEAF}]/u.test(input)) { return input; } const transliteration = (0, pinyin_pro_1.pinyin)(input, { toneType: omitTones ? "none" : undefined, }) .replace(/(\S)\s+([,。!?、])/gu, "$1$2") // Remove extra spaces before punctuation .replace(/\s+/g, " ") // Replace full-width punctuation with standard ASCII punctuation. .replace(/[,]/g, ",") .replace(/[。]/g, ".") .replace(/[?]/g, "?") .replace(/[!]/g, "!") .trim(); return transliteration; }; exports.romanizeMandarin = romanizeMandarin;