代码拉取完成,页面将自动刷新
/* Sliark 拼音
*
* https://zhuanlan.zhihu.com/p/482113176
*
* @author Sliark
*/
if (!音韻地位)
return [
["$legacy", true],
['字母ŋ', true],
['字母ü', true],
['字母ö', false],
['痕韵的主元音:', [1, 'ə', 'ë', 'eo']],
['字母æ', false],
['字母å', false],
['之韵的元音和BC类开口介音:', [1, 'ı', 'ɨ', 'v', 'ii']],
['二等使用下加点', false],
['影母标记:', [2, '无标记', 'q', 'ʔ', 'ʾ']],
[
'云母开口写法:',
[1, '视同匣母', '无标记(除礥小韵外,仅影母有标记时有效)'],
],
['大写类型:', [1, '不大写', '首字母大写', '全部大写']],
];
for (var key in 選項) {
選項[key.replace(':', '')] = 選項[key];
選項[key.replace(':', '')] = 選項[key];
// 去除冒號,方便下面代碼中引用
}
const is = (x) => 音韻地位.屬於(x);
function get聲母() {
if (音韻地位.描述 === '知開三麻平' || (音韻地位.描述 === '知開二庚上' && 字頭 === '打')) return 't'; // 爹打
return {
幫: 'p', 滂: 'ph', 並: 'b', 明: 'm',
端: 't', 透: 'th', 定: 'd', 泥: 'n', 來: 'l',
知: 'tr', 徹: 'thr', 澄: 'dr', 孃: 'nr',
見: 'k', 溪: 'kh', 羣: 'g', 疑: (選項.字母ŋ ? 'ŋ' : 'ng'), 云: '',
影: 'q', 曉: 'h', 匣: 'x',
精: 'ts', 清: 'tsh', 從: 'dz', 心: 's', 邪: 'z',
莊: 'tsr', 初: 'tshr', 崇: 'dzr', 生: 'sr', 俟: 'zr',
章: 't', 昌: 'th', 常: 'd', 書: 's', 船: 'z', 日: 'n', 以: '',
}[音韻地位.母];
}
function get韻母() {
const 表達式到韻 = [
// 爲了方便推導,根據拼寫對韻類稍作調整
['臻韻', '眞'],
['蒸韻 幫組 或 蒸韻 合口 或 蒸韻 溪母 平聲', '冰'], // 硱(溪開三蒸平)歸 B 類
['東韻 三等', '終'],
['清韻', '庚'],
['陽韻', '唐'],
];
const 韻到韻尾 = [
['脂之尤侯 佳 模 支魚虞 麻歌', ''],
['冰蒸終東 青耕登冬江 鍾 庚唐', (選項.字母ŋ ? 'ŋ' : 'ng'), 'k'],
[' 微微 齊皆咍灰 祭廢廢 夬泰', 'j'],
['眞欣文 先山痕魂 仙元元 刪寒', 'n', 't'],
[' 幽 蕭 宵 肴豪', 'w'],
['侵 添咸 覃 鹽嚴凡 銜談', 'm', 'p'],
];
const 元音列表 = [
'i', 'ı', 'u', 'u',
'e', 'ee', 'ə', 'o', 'o',
'e', 'ə', 'o',
'ae', 'a',
];
let 韻 = 音韻地位.韻;
表達式到韻.some((pair) => {
if (is(pair[0])) return (韻 = pair[1]);
});
let 元音;
let 韻尾;
韻到韻尾.some((item) => {
if (item[0].includes(韻)) {
元音 =
元音列表[
item[0].replace(/ /g, '')[is('開口') ? 'indexOf' : 'lastIndexOf'](韻)
];
韻尾 = item[1 + is('入聲')];
return true;
}
});
// 添加三等介音
let 介音;
if (is('三等')) {
if (is('幫組')) {
if ('𩦠'.includes(字頭)) {
介音 = 'i';
} else if (is('重紐A類 或 清韻')) {
if ('碧'.includes(字頭)) {
介音 = 'ı';
} else {
介音 = 'i';
}
} else if (is('重紐B類 或 庚韻 或 幽韻 或 蒸韻')) {
介音 = 'ı';
} else {
介音 = 'u';
}
}
//章組的介音同時作為章組標記
if (is('章昌常日書船以母')) {
介音 = is('開口') ? 'j' : 'y';
}
//云母的介音同時作為云母標記
if (is('云母')) {
if ('礥'.includes(字頭)) {
介音 = 'xi';
} else {
介音 = is('開口') ? 'xı' : 'w';
}
}
//普通銳音
if (is('精組 或 知組 或 來母 或 端組')) {
if (is('虞鍾尤東韻')) {
介音 = 'u';
} else if (is('之蒸韻')) {
介音 = 'ı';
} else {
介音 = is('開口') ? 'i' : 'ü';
}
}
//莊組永遠視作B類
if (is('莊組')) {
介音 = is('開口') ? 'ı' : 'u';
}
if (is('見溪羣疑影曉匣母')) {
if (is('幽韻')) {
if (音韻地位.描述 === '曉三幽平' && '烋休𠇾'.includes(字頭)) {
介音 = 'ı';
} else {
介音 = 'i';
}
} else if (is('重紐A類 或 清韻')) {
介音 = is('開口') ? 'i' : 'ü';
} else {
介音 = is('開口') ? 'ı' : 'u';
}
}
}
// 非三等介音
else {
if (is('幫組')) {
介音 = '';
} else if (is('章昌常日書船以母')) {
介音 = is('開口') ? 'j' : 'y';
} else if (is('云母')) {
介音 = is('開口') ? 'x' : 'xo'; //匣云混切归匣
} else {
介音 = is('開口') ? '' : 'o';
}
}
let 韻母;
韻母 = 介音 + 元音 + 韻尾;
韻母 = 韻母.replace('ii', 'i');
韻母 = 韻母.replace('ıı', 'ı');
韻母 = 韻母.replace('uu', 'u');
if (!is('江韻')) {
韻母 = 韻母.replace('oo', 'o');
}
韻母 = 韻母.replace('uw', 'u');
return 韻母;
}
function get聲調() {
return { 上: 'x', 去: 'h' }[音韻地位.聲] || '';
}
let 拼音 = get聲母() + get韻母() + get聲調();
if (選項.二等使用下加点) {
拼音 = 拼音.replace('ee', 'ẹ');
拼音 = 拼音.replace('ae', 'ạ');
拼音 = 拼音.replace('oo', 'ọ');
}
拼音 = 選項.字母ö ? 拼音.replace('oe', 'ö') : 拼音;
if (選項.痕韵的主元音 == 'ë') {
拼音 = 拼音.replace('ə', 'ë');
}
if (選項.痕韵的主元音 == 'eo') {
拼音 = 拼音.replace('ıə', 'ıo');
拼音 = 拼音.replace('iə', 'io');
拼音 = 拼音.replace('jə', 'jo');
拼音 = 拼音.replace('ə', 'eo');
}
if (!選項.字母ü) {
拼音 = 拼音.replace('y', 'jy');
拼音 = 拼音.replace('ü', 'y');
}
拼音 = 選項.字母ŋ ? 拼音.replace('ng', 'ŋ') : 拼音;
拼音 = 選項.字母å ? 拼音.replace('oa', 'å') : 拼音;
if (選項.字母æ) {
拼音 = 拼音.replace('ae', 'æ');
拼音 = 拼音.replace('ạ', 'æ');
}
if (選項.影母标记 === '无标记') {
拼音 = 拼音.replace('q', '');
} else {
拼音 = 拼音.replace('q', 選項.影母标记);
if (選項.云母开口写法 === '无标记(除礥小韵外,仅影母有标记时有效)') {
拼音 = 拼音.replace('xı', 'ı');
}
}
if (選項.之韵的元音和BC类开口介音 != 'ı') {
拼音 = 拼音.replace('ı', 選項.之韵的元音和BC类开口介音);
}
function minu2maju(chr) {
return {
'a':'A', 'å':'Å', 'b':'B', 'g':'G', 'd':'D', 'e':'E', 'ə':'∃', 'ë':'Ë',
'z':'Z', 'h':'H', 'i':'I', 'ı':'Ɨ', 'ɨ':'Ɨ', 'j':'J', 'k':'K', 'l':'L',
'm':'M', 'n':'N', 'ŋ':'Ŋ', 'o':'O', 'ö':'Ö', 'p':'P', 'q':'Q', 'r':'R',
's':'S', 't':'T', 'u':'U', 'ü':'Ü', 'v':'V', 'w':'W', 'y':'Y', 'x':'X', 'æ':'Æ',
}[chr] || chr;
}
if (選項.大写类型 === '首字母大写') {
拼音 = minu2maju(拼音[0]) + 拼音.slice(1);
}
if (選項.大写类型 === '全部大写') {
拼音 = 拼音.split('').map(minu2maju).join('');
}
return 拼音;
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。