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