马耳他语字母式中古汉语拼音:修订间差异

来自个人维基
跳转到导航 跳转到搜索
FebSnow2233留言 | 贡献
无编辑摘要
FebSnow2233留言 | 贡献
无编辑摘要
第3行: 第3行:
  *基於 https://zh.wikipedia.org/wiki/User:Polyhedron/中古漢語拼音 改編。
  *基於 https://zh.wikipedia.org/wiki/User:Polyhedron/中古漢語拼音 改編。
  *
  *
  * @author 万里风霜101/FebSnow2233
  * @author 万里风霜101 or FebSnow2233
  */
  */



2023年8月17日 (四) 06:33的版本

/* 馬爾他語字母式中古漢語拼音

*
*基於 https://zh.wikipedia.org/wiki/User:Polyhedron/中古漢語拼音 改編。
*
* @author 万里风霜101 or FebSnow2233
*/

if (!音韻地位) return [ // 模型可選 '早期中古漢語' 或 '晚期中古漢語',預設值為 '早期中古漢語'

 ['模型', [2, '早期中古漢語', '晚期中古漢語']]];

const is = (...x) => 音韻地位.屬於(...x);

音韻地位 = Qieyun.適配分析體系('ytenx')(音韻地位);

function 聲母規則() {

 switch (音韻地位.母) {
   case '幫': return 'p';
   case '滂': return 'ph';
   case '並': return 'b';
   case '明': return 'm';
   case '端': return 't';
   case '透': return 'th';
   case '定': return 'd';
   case '泥': return 'n';
   case '知': return 'tr';
   case '徹': return 'thr';
   case '澄': return 'dr';
   case '孃': return 'nr';
   case '精': return 'c';
   case '清': return 'ch';
   case '從': return 'z';
   case '心': return 's';
   case '邪': return 'ż';
   case '莊': return 'cr';
   case '初': return 'chr';
   case '崇': return 'zr';
   case '生': return 'sr';
   case '俟': return 'żr';
   case '章': return 'ċ';
   case '昌': return 'ċh';
   case '常': return 'ġ';
   case '書': return 'x';
   case '船': return 'j';
   case '見': return 'k';
   case '溪': return 'kh';
   case '羣': return 'g';
   case '疑': return 'ng';
   case '影': return 'għ';
   case '曉': return 'h';
   case '匣': return 'ħ';
   case '云': return ;
   case '以': return 'y';
   case '來': return 'l';
   case '日': return 'ny';
   default: throw new Error('無聲母規則');
 }

}

function 韻母規則() {

 // 通攝
 if (is('東韻 一等')) return 'ung';
 if (is('東韻 三等')) return 'iung';
 if (is('冬韻')) return 'ong';
 if (is('鍾韻')) return 'iong';
 // 江攝
 if (is('江韻')) return 'rung';
 // 止攝
 if (is('支韻 合口')) return is('重紐A類') ? 'yue' : 'üe';
 if (is('支韻')) return is('重紐A類') ? 'yie' : 'ie';
 if (is('脂韻 合口')) return is('重紐A類') ? 'yui' : 'üi';
 if (is('脂韻')) return is('重紐A類') ? 'yi' : 'i';
 if (is('之韻')) return 'i';
 if (is('微韻 開口')) return 'ioi';
 if (is('微韻')) return 'üoi';
 // 遇攝
 if (is('魚韻')) return 'io';
 if (is('虞韻')) return 'üo';
 if (is('模韻')) return 'o';
 // 蟹攝
 if (is('齊韻 合口')) return 'ue';
 if (is('齊韻')) return 'e';
 if (is('祭韻 合口')) return 'üey';
 if (is('祭韻')) return is('重紐A類') ? 'yey' : 'iey';
 if (is('泰韻 合口')) return 'uay';
 if (is('泰韻')) return 'ay';
 if (is('佳韻 合口')) return 'rue';
 if (is('佳韻')) return 're';
 if (is('皆韻 合口')) return 'ruai';
 if (is('皆韻')) return 'rai';
 if (is('夬韻 合口')) return 'ruay';
 if (is('夬韻')) return 'ray';
 if (is('咍韻')) return 'ai';
 if (is('灰韻')) return 'uai';
 if (is('廢韻 開口')) return 'iay';
 if (is('廢韻')) return 'üay';
 // 臻攝
 if (is('眞韻 合口')) return is('重紐A類') ? 'yun' : 'ün';
 if (is('眞韻')) return is('重紐A類') ? 'yin' : 'in';
 if (is('臻韻')) return 'in';
 if (is('欣韻')) return 'ion';
 if (is('文韻')) return 'üon';
 if (is('元韻 開口')) return 'ian';
 if (is('元韻')) return 'üan';
 if (is('痕韻')) return 'on';
 if (is('魂韻')) return 'uon';
 // 山攝
 if (is('寒韻 開口')) return 'an';
 if (is('寒韻')) return 'uan';
 if (is('刪韻 合口')) return 'ruan';
 if (is('刪韻')) return 'ran';
 if (is('山韻 合口')) return 'ruen';
 if (is('山韻')) return 'ren';
 if (is('仙韻 合口')) return is('重紐A類') ? 'yuen' : 'üen';
 if (is('仙韻')) return is('重紐A類') ? 'yen' : 'ien';
 if (is('先韻 合口')) return 'uen';
 if (is('先韻')) return 'en';
 // 效攝
 if (is('蕭韻')) return 'eu';
 if (is('宵韻')) return is('重紐A類') ? 'yeu' : 'ieu';
 if (is('肴韻')) return 'rau';
 if (is('豪韻')) return 'au';
 // 果攝
 if (is('歌韻 一等 開口')) return 'a';
 if (is('歌韻 一等')) return 'ua';
 if (is('歌韻 三等 開口')) return 'ia';
 if (is('歌韻 三等')) return 'üa';
 // 假攝
 if (is('麻韻 二等 合口')) return 'rua';
 if (is('麻韻 二等')) return 'ra';
 if (is('麻韻 三等')) return 'ia';
 // 宕攝
 if (is('陽韻 開口')) return 'iang';
 if (is('陽韻')) return 'üang';
 if (is('唐韻 合口')) return 'uang';
 if (is('唐韻')) return 'ang';
 // 梗攝
 if (is('庚韻 二等 合口')) return 'ruang';
 if (is('庚韻 二等')) return 'rang';
 if (is('庚韻 三等 合口')) return 'üeng';
 if (is('庚韻 三等')) return 'ieng';
 if (is('耕韻 合口')) return 'rueng';
 if (is('耕韻')) return 'reng';
 if (is('清韻 合口')) return is('重紐A類') ? 'yueng' : 'üeng';
 if (is('清韻')) return is('重紐A類') ? 'yeng' : 'ieng';
 if (is('青韻 合口')) return 'ueng';
 if (is('青韻')) return 'eng';
 // 曾攝
 if (is('蒸韻 合口')) return 'üng';
 if (is('蒸韻')) return 'ing';
 if (is('登韻 合口')) return 'uöng';
 if (is('登韻')) return 'öng';
 // 流攝
 if (is('尤韻')) return 'iu';
 if (is('侯韻')) return 'u';
 if (is('幽韻')) return 'ü';
 // 深攝
 if (is('侵韻')) return is('重紐A類') ? 'yim' : 'im';
 // 咸攝
 if (is('覃韻')) return 'om';
 if (is('談韻')) return 'am';
 if (is('鹽韻')) return is('重紐A類') ? 'yem' : 'iem';
 if (is('添韻')) return 'em';
 if (is('咸韻')) return 'rem';
 if (is('銜韻')) return 'ram';
 if (is('嚴韻')) return 'iam';
 if (is('凡韻')) return 'üam';
 throw new Error('無韻母規則');

}

function 聲調規則() {

 if (is('平入聲')) return ;
 if (is('上聲')) return 's';
 if (is('去聲')) return 'q';
 throw new Error('無聲調規則');

}

let 聲母 = 聲母規則();
let 隔音符號 = "'";
let 韻母 = 韻母規則();
let 聲調 = 聲調規則();

if (is('入聲')) {

 if (韻母.endsWith('m')) 韻母 = `${韻母.slice(0, -1)}p`;
 else if (韻母.endsWith('n')) 韻母 = `${韻母.slice(0, -1)}t`;
 else if (韻母.endsWith('ng')) 韻母 = `${韻母.slice(0, -2)}k`;

}

if (韻母.endsWith('y')) {

 聲調 = ;

}

if (聲母.endsWith('r') && 韻母.startsWith('r')) {

 韻母 = 韻母.slice(1);

}

if (is`章組 或 日以母` && 韻母.startsWith('i') && [...'aeou'].some((x) => 韻母.includes(x))) {

 韻母 = 韻母.slice(1);

}

if (is(`幫組 一二三四等 \
或 端組 一四等 \
或 知組 二三等 \
或 精組 一三四等 \
或 莊組 二三等 \
或 章組 三等 \
或 見溪疑母 一二三四等 \
或 羣母 二三等 \
或 影曉母 一二三四等 \
或 匣母 一二四等 \
或 云以母 三等 \
或 來母 一二三四等 \
或 日母 三等`)) {

 隔音符號 = ;

}

if (is('云母 一二四等')) 聲母 = 'i'; // 如 1444 倄小韻 i'uaix

if (is('端組 三等') && !韻母.startsWith('r')) {

 隔音符號 = ; // 如 2237 地小韻 diih

}

if (選項.模型 === '晚期中古漢語') {

 if (is('幫母 東鍾微虞廢文元陽尤凡韻 三等') && `三等`) return 'f' + 韻母.slice(1) + 聲調;
 if (is('滂母 東鍾微虞廢文元陽尤凡韻 三等') && `三等`) return 'fh' + 韻母.slice(1) + 聲調;
 if (is('並母 東鍾微虞廢文元陽尤凡韻 三等') && `三等`) return 'v' + 韻母.slice(1) + 聲調;
 if (is('明母 微虞文元陽凡韻 三等') && `三等`) return 'w' + 韻母.slice(1) + 聲調;

}

return 聲母 + 隔音符號 + 韻母 + 聲調;