Skip to content

Commit 74d2aec

Browse files
committed
Update position: add 韻系風格, 韻目用字, and 字彙描述
1 parent 2fd3284 commit 74d2aec

File tree

1 file changed

+165
-6
lines changed

1 file changed

+165
-6
lines changed

position.js

Lines changed: 165 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33
* @author unt
44
*/
55

6-
const sextupleKeys = ['母', '呼', '等', '類', '韻', '聲'];
6+
const is = (...x) => 音韻地位.屬於(...x);
7+
const when = (...x) => 音韻地位.判斷(...x);
8+
9+
const sextupleKeys = ['母', '呼', '等', '類', '韻系', '聲'];
710
if (選項._六元組全選) sextupleKeys.forEach(k => 選項[k] = true);
811
if (選項._六元組全不選) sextupleKeys.forEach(k => 選項[k] = false);
912
const keys = Object.keys(選項).filter(k => !k.startsWith('_'));
@@ -12,29 +15,185 @@ const checkedSextupleKeys = checkedKeys.filter(k => sextupleKeys.includes(k));
1215

1316
if (!音韻地位) return [
1417
'整體',
15-
['描述|音韻地位描述', true],
18+
[`描述|音韻地位描述
19+
聲母、呼、等、類、韻系、聲調
20+
韻系用字依《切韻》,舉平以賅上去入`, true],
1621
['簡略描述|音韻地位簡略描述\n不推薦', false],
1722
'單項',
1823
['母|聲母', false],
1924
['呼', false],
2025
['等\n切韻等', false],
2126
['類', false],
22-
['韻|韻系\n平賅上去入', false],
27+
['韻系', false],
2328
['聲|聲調', false],
2429
['_六元組全選|六項全選', false, { hidden: checkedSextupleKeys.length === 6, reset: true }],
2530
['_六元組全不選|六項全不選', false, { hidden: checkedSextupleKeys.length === 0, reset: true }],
2631
'更多',
32+
// TODO: ['聲類|聲類\n五十一聲類 + 俟母', false],
2733
['組|聲母組', false],
2834
['音|五音', false],
29-
['清濁', false],
35+
['清濁\n曉母歸全清;也有材料、教材將其歸次清', false],
36+
['韻目|韻目\n爲理論韻目,非韻書中的韻目原貌', false],
3037
['韻別|韻母陰陽入', false],
3138
// ['表達式|音韻地位表達式', false],
32-
'對應韻圖音系屬性',
39+
'對應韻圖音系相關屬性',
3340
['字母|三十六字母', false],
3441
['韻圖等', false],
3542
['攝', false],
43+
[`字彙描述|音韻地位描述(《漢語方音字彙》格式)
44+
攝、呼、等、聲調、韻目、聲母
45+
重紐第二類(即三等 A 類)在左上角加黑點表示
46+
參照《字彙》1962 第一版、1989 第二版、2003 第二版重排本。呼依《字彙》。韻目用字依《廣韻》(個別字形與《字彙》不同;另《字彙》欣韻作殷韻,不取)。幫組 C 類、孃母、常母依《字彙》作非組、泥母、禅母,俟母依《方言調查字表》(第 18 頁)併入崇母`, false],
3647
'',
48+
[`_韻風格|韻系風格
49+
舉平以賅上去入適合切韻音系、韻圖音系
50+
舉平以賅上去適合宋代及之後音系`, [1, '舉平以賅上去入', '舉平以賅上去'], { hidden: !選項.韻系 }],
51+
[`_韻用字|
52+
《切韻》韻目 → 《廣韻》韻目
53+
• 真軫震質 → 真軫震質(開口、脣音、B 類及莊組)、諄準稕術(A 類合口及莊組以外舌齒音合口)
54+
• 殷 → 欣
55+
• 佷 → 很[痕韻上聲]
56+
• 寒旱翰末 → 寒旱翰曷(開口)、桓緩換末(其他)
57+
• 敬 → 映[庚韻去聲]
58+
• 歌哿箇 → 歌哿箇(一等開口)、戈果過(其他)
59+
• [嚴韻上去聲] → 儼釅
60+
(存在少許例外)`, [1, '依《切韻》', '依《廣韻》'], { text: ['韻系', '韻目'].filter(e => 選項[e]).join('、') + '用字', hidden: !選項.韻系 && !選項.韻目 }],
3761
['_分隔符|多個屬性間的連接符', ',', { hidden: checkedKeys.length < 2 }],
3862
];
3963

40-
return checkedKeys.map(k => 音韻地位[k]).join(選項._分隔符);
64+
const 韻to切韻韻目列表 = Object.fromEntries([
65+
'東董送屋',
66+
'冬腫宋沃',
67+
'鍾腫用燭',
68+
'江講絳覺',
69+
'支紙寘 ',
70+
'脂旨至 ',
71+
'之止志 ',
72+
'微尾未 ',
73+
'魚語御 ',
74+
'虞麌遇 ',
75+
'模姥暮 ',
76+
'齊薺霽 ',
77+
'  祭 ',
78+
'  泰 ',
79+
'佳蟹卦 ',
80+
'皆駭怪 ',
81+
'  夬 ',
82+
'灰賄隊 ',
83+
'咍海代 ',
84+
'  廢 ',
85+
'真軫震質',
86+
'臻隱震櫛',
87+
'文吻問物',
88+
'殷隱焮迄',
89+
'元阮願月',
90+
'魂混慁沒',
91+
'痕佷恨沒',
92+
'寒旱翰末',
93+
'刪潸諫鎋',
94+
'山產襇黠',
95+
'先銑霰屑',
96+
'仙獮線薛',
97+
'蕭篠嘯 ',
98+
'宵小笑 ',
99+
'肴巧效 ',
100+
'豪晧号 ',
101+
'歌哿箇 ',
102+
'麻馬禡 ',
103+
'陽養漾藥',
104+
'唐蕩宕鐸',
105+
'庚梗敬陌',
106+
'耕耿諍麥',
107+
'清靜勁昔',
108+
'青迥徑錫',
109+
'蒸拯證職',
110+
'登等嶝德',
111+
'尤有宥 ',
112+
'侯厚候 ',
113+
'幽黝幼 ',
114+
'侵寑沁緝',
115+
'覃感勘合',
116+
'談敢闞盍',
117+
'鹽琰豔葉',
118+
'添忝㮇怗',
119+
'咸豏陷洽',
120+
'銜檻鑑狎',
121+
'嚴范梵業',
122+
'凡范梵乏',
123+
].map(切韻韻目列表 => [切韻韻目列表.trim(' ')[0], 切韻韻目列表]));
124+
125+
function get韻系(is廣韻 = 選項._韻用字 === '依《廣韻》', 入聲獨立 = !選項._韻風格.includes('入')) {
126+
return when([
127+
[入聲獨立 && '入聲', [
128+
[is廣韻, [
129+
['術', '真韻 合口 非 B類 非 莊組'],
130+
['曷', '寒韻 開口 入聲'],
131+
].map(([a, b]) => [b, a])],
132+
['', 韻to切韻韻目列表[音韻地位.][3]],
133+
]],
134+
['', [
135+
[is廣韻, [
136+
['諄', '真韻 合口 非 B類 非 莊組'],
137+
['欣', '殷韻'],
138+
['桓', '寒韻 非 開口'],
139+
['戈', '歌韻 非 (一等 開口)'],
140+
].map(([a, b]) => [b, a])],
141+
['', 音韻地位.],
142+
]]
143+
], '', true);
144+
}
145+
146+
function get韻目(is廣韻 = 選項._韻用字 === '《廣韻》') {
147+
return when([
148+
[is廣韻, [
149+
['諄準稕術', '真韻 合口 非 B類 非 莊組'],
150+
['欣   ', '殷韻 平聲'],
151+
[' 很  ', '痕韻 上聲'],
152+
['   曷', '寒韻 開口 入聲'],
153+
['桓緩換 ', '寒韻 非 開口 舒聲'],
154+
['  映 ', '庚韻 去聲'],
155+
['戈果過 ', '歌韻 非 (一等 開口)'],
156+
[' 儼釅 ', '嚴韻 上去聲'],
157+
].map(([a, b]) => [b, a])],
158+
['', 韻to切韻韻目列表[when([
159+
['祭韻 非 去聲', '齊'],
160+
['廢韻 非 去聲', [
161+
['開口', '咍'],
162+
['', '灰'],
163+
]],
164+
['', 音韻地位.],
165+
])]],
166+
], '', true)['平上去入'.indexOf(音韻地位.)];
167+
}
168+
169+
function get字彙描述() {
170+
let {,,,,} = 音韻地位;
171+
let = get韻目(true);
172+
let 重紐第二類標記 = is`A類` ? '˙' : '';
173+
= when([
174+
['通遇攝', '合'],
175+
['江流攝', '開'],
176+
['幫組', [
177+
// 脣音咍韻不考慮
178+
['C類 或 一等 非 唐韻', '開'],
179+
['', '合'],
180+
]],
181+
['', ],
182+
]);
183+
= when([
184+
['幫組 C類', 音韻地位.字母],
185+
['孃母', '泥'],
186+
['俟母', '崇'],
187+
['常母', '禅'],
188+
['', ],
189+
]);
190+
return [重紐第二類標記, , , , , , ].join('');
191+
}
192+
193+
const 補充屬性 = {
194+
韻系: get韻系(),
195+
韻目: get韻目(),
196+
字彙描述: get字彙描述(),
197+
};
198+
199+
return checkedKeys.map(k => 音韻地位[k] ?? 補充屬性[k]).join(選項._分隔符);

0 commit comments

Comments
 (0)