1 Star 0 Fork 0

姚妫颍/切韵音系推导方案

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
sliark_peengqvim.js 7.15 KB
一键复制 编辑 原始数据 按行查看 历史
Ayaka Mikazuki 提交于 2022-07-09 19:34 . Update sliark_peengqvim.js (#40)
/* 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('開口') ? '' : '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('', 'io');
拼音 = 拼音.replace('', '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('', 'ı');
}
}
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 拼音;
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/Jwiet-Puj_Drin/qieyun-examples.git
git@gitee.com:Jwiet-Puj_Drin/qieyun-examples.git
Jwiet-Puj_Drin
qieyun-examples
切韵音系推导方案
main

搜索帮助