diff --git a/rules/nan/nan-latn-pehoeji-transliteration.js b/rules/nan/nan-latn-pehoeji-transliteration.js index 154ca1f7..31e2576c 100644 --- a/rules/nan/nan-latn-pehoeji-transliteration.js +++ b/rules/nan/nan-latn-pehoeji-transliteration.js @@ -12,7 +12,7 @@ version: '1.0', maxKeyLength: 4, patterns: [ - [ '((a|á|à|â|ã|ā)i?|(a|a̍)h)nn', '$1ⁿ' ], + [ '((a|á|à|â|ã|ā|ă)i?|(a|a̍|ă)h)nn', '$1ⁿ' ], [ '(^|[^io])a(ⁿ|iⁿ?|m|ng?|u)?1', '$1a$2' ], [ '(^|[^io])a(ⁿ|iⁿ?|m|ng?|u)?(2|\\\/)', '$1á$2' ], [ '(^|[^io])a(ⁿ|iⁿ?|m|ng?|u)?(3|\\\\)', '$1à$2' ], @@ -21,16 +21,19 @@ [ '(^|[^io])a(ⁿ|iⁿ?|m|ng?|u)?(6|~)', '$1ã$2' ], [ '(^|[^io])a(ⁿ|iⁿ?|m|ng?|u)?(7|_)', '$1ā$2' ], [ '(^|[^io])a(p|t|k|hⁿ?|uh)(8|\')', '$1a̍$2' ], - [ '(e|é|è|eh|ê|ẽ|ē|e̍h)?nn', '$1ⁿ' ], + [ '(^|[^io])a(p|t|k|hⁿ?|uh)9', '$1ă$2' ], + [ '(^|[^io])a(ⁿ|iⁿ?|m|ng?|u)?9', '$1ă$2' ], + [ '(e|é|è|eh|ê|ẽ|ē|e̍h|ĕ)?nn', '$1ⁿ' ], [ '(^|[^o])e(ⁿ|ng)1', '$1e$2' ], [ '(^|[^o])e(ⁿ|ng)(2|\\\/)', '$1é$2' ], [ '(^|[^o])e(ⁿ|ng)(3|\\\\)', '$1è$2' ], [ '(^|[^o])e(hⁿ?|k)4', '$1e$2' ], - [ '(^|[^o])e(ⁿ|ng)(5|\\\^)', '$1ê$2' ], + [ '(^|[^o])e(ⁿ|ng)?(5|\\\^)', '$1ê$2' ], [ '(^|[^o])e(ⁿ|ng)(6|~)', '$1ẽ$2' ], [ '(^|[^o])e(ⁿ|ng)(7|_)', '$1ē$2' ], [ '(^|[^o])e(hⁿ?|k)(8|\')', '$1e̍$2' ], - [ '(^|[^a])(i(a|á|à|â|ã|ā)|i(a|a̍)h|(i|í|ì|î|ĩ|ī)u?)nn', '$1$2ⁿ' ], + [ '(^|[^o])e(hⁿ?|k)9', '$1ĕ$2' ], + [ '(^|[^a])(i(a|á|à|â|ã|ā|ă)|i(a|a̍|ă)h|(i|í|ì|î|ĩ|ī|ĭ)u?)nn', '$1$2ⁿ' ], [ 'ia(ⁿ?|m|ng?|uⁿ?)?1', 'ia$1' ], [ '(^|[^a])i(ⁿ|m|n|uⁿ?)?1', '$1i$2' ], [ 'io(ng)?1', 'io$1' ], @@ -59,6 +62,14 @@ [ 'io(h|k)(8|\')', 'io̍$1' ], [ 'iauh(8|\')', 'iau̍h' ], [ 'iuh(ⁿ)?(8|\')', 'iu̍h$1' ], + [ 'ia(ⁿ?|m|ng?|uⁿ?)?9', 'iă$1' ], + [ '(^|[^a])i(ⁿ|m|n|ng|uⁿ?)?9', '$1ĭ$2' ], + [ 'io(ng)?9', 'iŏ$1' ], + [ 'ia(hⁿ?|k|p|t|ng)9', 'iă$1' ], + [ '(^|[^a])i(h|p|t)9', '$1ĭ$2' ], + [ 'io(h|k)9', 'iŏ$1' ], + [ 'iauh9', 'iaŭh' ], + [ 'iuh(ⁿ)?9', 'iŭh$1' ], [ 'm1', 'm' ], [ 'm(2|\\\/)', 'ḿ' ], [ 'm(3|\\\\)', 'm̀' ], @@ -67,14 +78,16 @@ [ 'm(6|~)', 'm̃' ], [ 'm(7|_)', 'm̄' ], [ 'mh(8|\')', 'm̍h' ], - [ '(^|[^aeo])ng1', '$1ng' ], - [ '(^|[^aeo])ng(2|\\\/)', '$1ńg' ], - [ '(^|[^aeo])ng(3|\\\\)', '$1ǹg' ], + [ 'm9', 'm̆'], + [ '(^|[^aeoAEO])ng1', '$1ng' ], + [ '(^|[^aeoAEO])ng(2|\\\/)', '$1ńg' ], + [ '(^|[^aeoAEO])ng(3|\\\\)', '$1ǹg' ], [ 'n(g)?h4', 'n$1h' ], - [ '(^|[^aeo])ng(5|\\\^)', '$1n̂g' ], - [ '(^|[^aeo])ng(6|~)', '$1ñg' ], - [ '(^|[^aeo])ng(7|_)', '$1n̄g' ], + [ '(^|[^aeoAEO])ng(5|\\\^)', '$1n̂g' ], + [ '(^|[^aeoAEO])ng(6|~)', '$1ñg' ], + [ '(^|[^aeoAEO])ng(7|_)', '$1n̄g' ], [ 'n(g)?h(8|\')', 'n̍$1h' ], + [ '(^|[^aeoI])ng9', '$1n̆g' ], [ '(o(a|á|à|â|ã|ā|a̍)i|(o|ó|ò|ô|õ|ō)a?|(o|o̍)h)nn', '$1ⁿ' ], [ '(^|[^i])oa(h|iⁿ?|ng?|t)?1', '$1oa$2' ], [ '(^|[^i])o(ⁿ|aⁿ?|e|m|ng)?1', '$1o$2' ], @@ -107,6 +120,7 @@ [ 'ōu', 'ō͘' ], [ 'o͘h(8|\')', 'o̍͘h' ], [ 'o̍u', 'o̍͘' ], + [ 'ŏu', 'ŏ͘' ], [ '(^|[^ai])u(i|n)?1', '$1u$2' ], [ '(^|[^ai])u(i|n)?(2|\\\/)', '$1ú$2' ], [ '(^|[^ai])u(i|n)?(3|\\\\)', '$1ù$2' ], @@ -129,7 +143,7 @@ [ '(^|[^o])E(ⁿ|ng)(2|\\\/)', '$1É$2' ], [ '(^|[^o])E(ⁿ|ng)(3|\\\\)', '$1È$2' ], [ '(^|[^o])E(hⁿ?|k)4', '$1E$2' ], - [ '(^|[^o])E(ⁿ|ng)(5|\\\^)', '$1Ê$2' ], + [ '(^|[^o])E(ⁿ|ng)?(5|\\\^)', '$1Ê$2' ], [ '(^|[^o])E(ⁿ|ng)(6|~)', '$1Ẽ$2' ], [ '(^|[^o])E(ⁿ|ng)(7|_)', '$1Ē$2' ], [ '(^|[^o])E(hⁿ?|k)(8|\')', '$1E̍$2' ], @@ -162,6 +176,14 @@ [ 'Io(h|k)(8|\')', 'Io̍$1' ], [ 'Iauh(8|\')', 'Iau̍h' ], [ 'Iuh(ⁿ)?(8|\')', 'Iu̍h$1' ], + [ 'Ia(ⁿ?|m|ng?|uⁿ?)?(7|_)', 'Iā$1' ], + [ '(^|[^a])I(ⁿ|m|n|ng|uⁿ?)?(7|_)', '$1Ĭ$2' ], + [ 'Io(ng)?(7|_)', 'Iŏ$1' ], + [ 'Ia(hⁿ?|k|p|t)9', 'Iă$1' ], + [ '(^|[^a])I(h|p|t|ng)9', '$1Ĭ$2' ], + [ 'Io(h|k)9', 'Iŏ$1' ], + [ 'Iauh9', 'Iaŭh' ], + [ 'Iuh(ⁿ)?9', 'Iŭh$1' ], [ 'M1', 'M' ], [ 'M(2|\\\/)', 'Ḿ' ], [ 'M(3|\\\\)', 'M̀' ], @@ -170,6 +192,7 @@ [ 'M(6|~)', 'M̃' ], [ 'M(7|_)', 'M̄' ], [ 'Mh(8|\')', 'M̍h' ], + [ 'M9', 'M̆'], [ '(^|[^aeo])Ng1', '$1Ng' ], [ '(^|[^aeo])Ng(2|\\\/)', '$1Ńg' ], [ '(^|[^aeo])Ng(3|\\\\)', '$1Ǹg' ], @@ -178,6 +201,7 @@ [ '(^|[^aeo])Ng(6|~)', '$1Ñg' ], [ '(^|[^aeo])Ng(7|_)', '$1N̄g' ], [ 'N(g)?h(8|\')', 'N̍$1h' ], + [ 'N(g)?9', 'N̆$1'], [ '(O(a|á|à|â|ã|ā|a̍)i|(O|Ó|Ò|Ô|Õ|Ō)a?|(O|O̍)h)nn', '$1ⁿ' ], [ '(^|[^i])Oa(h|iⁿ?|ng?|t)?1', '$1Oa$2' ], [ '(^|[^i])O(ⁿ|aⁿ?|e|m|ng)?1', '$1O$2' ], diff --git a/test/jquery.ime.test.fixtures.js b/test/jquery.ime.test.fixtures.js index c296c8ce..d04c5149 100644 --- a/test/jquery.ime.test.fixtures.js +++ b/test/jquery.ime.test.fixtures.js @@ -5157,7 +5157,32 @@ var palochkaVariants = { { input: 'ap\'', output: 'a̍p', description: 'Hokkien Pe̍h-ōe-jī a̍p' }, { input: 'khoann3', output: 'khòaⁿ', description: 'Hokkien Pe̍h-ōe-jī khòaⁿ' }, { input: 'khoai3', output: 'khoài', description: 'Hokkien Pe̍h-ōe-jī khoài' }, - { input: 'ouh8', output: 'o̍͘h', description: 'Hokkien Pe̍h-ōe-jī o̍͘h' } + { input: 'ouh8', output: 'o̍͘h', description: 'Hokkien Pe̍h-ōe-jī o̍͘h' }, + { input: 'e5', output: 'ê', description: 'Hokkien Pe̍h-ōe-jī ê'}, + { input: 'eng2', output: 'éng', description: 'Hokkien Pe̍h-ōe-jī éng'}, + // Ninth tone tests, taken from https://bitesizetaiwanese.com/ep06-the-ninth-tone/ + // Japanese loanwords + { input: 'ian9-jin2', output: 'iăn-jín', description: 'Hokkien Pe̍h-ōe-jī iăn-jín'}, + { input: 'lai9-lin2-guh4', output: 'lăi-lín-guh', description: 'Hokkien Pe̍h-ōe-jī lăi-lín-guh'}, + { input: 'khan9-bang2', output: 'khăn-báng', description: 'Hokkien Pe̍h-ōe-jī khăn-báng'}, + { input: 'lin9-jin2', output: 'lĭn-jín', description: 'Hokkien Pe̍h-ōe-jī lĭn-jín'}, + { input: 'han9-tou2-luh4', output: 'hăn-tó͘-luh', description: 'Hokkien Pe̍h-ōe-jī hăn-tó͘-luh'}, + { input: 'pha9-sian3-tou3', output: 'phă-siàn-tò͘', description: 'Hokkien Pe̍h-ōe-jī phă-siàn-tò͘'}, + { input: 'sam9-phu2-luh4', output: 'săm-phú-luh', description: 'Hokkien Pe̍h-ōe-jī săm-phú-luh'}, + // Contractions + { input: 'ing9', output: 'ĭng', description: 'Hokkien Pe̍h-ōe-jī ĭng'}, + { input: 'tsang9', output: 'tsăng', description: 'Hokkien Pe̍h-ōe-jī tsăng'}, + { input: 'tiong9', output: 'tiŏng', description: 'Hokkien Pe̍h-ōe-jī tiŏng'}, + { input: 'lai9', output: 'lăi', description: 'Hokkien Pe̍h-ōe-jī lăi'}, + { input: 'tann9', output: 'tăⁿ', description: 'Hokkien Pe̍h-ōe-jī tăⁿ'}, + { input: 'tsau9-kiann2', output: 'tsău-kiáⁿ', description: 'Hokkien Pe̍h-ōe-jī tsău-kiáⁿ'}, + { input: 'tsuan9', output: 'tsuăn', description: 'Hokkien Pe̍h-ōe-jī tsuăn'}, + { input: 'tsuann9', output: 'tsuăⁿ', description: 'Hokkien Pe̍h-ōe-jī tsuăⁿ'}, + { input: 'bua9-kin2', output: 'buă-kín', description: 'Hokkien Pe̍h-ōe-jī buă-kín'}, + // Capitalization tests + { input: 'E5', output: 'Ê', description: 'Hokkien Pe̍h-ōe-jī Ê'}, + { input: 'Ing9', output: 'Ĭng', description: 'Hokkien Pe̍h-ōe-jī Ĭng'}, + { input: 'Eng2', output: 'Éng', description: 'Hokkien Pe̍h-ōe-jī Éng'}, ] }, {