Pārlūkot izejas kodu

Support longer form of fa/fi/fe/fo

Thomas Dy 3 gadi atpakaļ
vecāks
revīzija
0a244af4e8
2 mainītis faili ar 25 papildinājumiem un 14 dzēšanām
  1. 23 13
      src/kana.ts
  2. 2 1
      tests/kana.ts

+ 23 - 13
src/kana.ts

@@ -75,6 +75,20 @@ function fu(): StateMachine {
   ]);
 }
 
+function f(vowel: string): StateMachine {
+  return mergeMachines(
+    literal(`f${vowel}`, 0),
+    appendMachines(fu(), smallKana(literal(vowel)))
+  );
+}
+
+function v(vowel: string): StateMachine {
+  return mergeMachines(
+    literal(`v${vowel}`, 0),
+    appendMachines(literal('vu'), smallKana(literal(vowel)))
+  );
+}
+
 function ji(): StateMachine {
   return state.buildFromTransitions('ji', [
     t('ji', 'j', 'i'),
@@ -129,11 +143,7 @@ function smallTsu(base: StateMachine): StateMachine {
 
   return mergeMachines(
     new StateMachine(newState),
-    appendMachines(
-      state.buildFromTransitions('l', [t('l', 'l', ''), t('l', 'x', '')]),
-      tsu(),
-      base
-    )
+    appendMachines(smallKana(tsu()), base)
   );
 }
 
@@ -392,14 +402,14 @@ const DOUBLE_KANA_MAPPING: KanaMapping = {
   ぴゃ: literal('pya', 0),
   ぴゅ: literal('pyu', 0),
   ぴょ: literal('pyo', 0),
-  ふぁ: literal('fa', 0),
-  ふぃ: literal('fi', 0),
-  ふぇ: literal('fe', 0),
-  ふぉ: literal('fo', 0),
-  ゔぁ: literal('va', 0),
-  ゔぃ: literal('vi', 0),
-  ゔぇ: literal('ve', 0),
-  ゔぉ: literal('vo', 0),
+  ふぁ: f('a'),
+  ふぃ: f('i'),
+  ふぇ: f('e'),
+  ふぉ: f('o'),
+  ゔぁ: v('a'),
+  ゔぃ: v('i'),
+  ゔぇ: v('e'),
+  ゔぉ: v('o'),
 };
 
 const TRIPLE_KANA_MAPPING: KanaMapping = {};

+ 2 - 1
tests/kana.ts

@@ -111,7 +111,8 @@ test('multiple romanization double kana', () => {
   // testInput('zilya', 'じゃ');
 
   testInput('fe', 'ふぇ');
-  // testInput('fule', 'ふぇ');
+  testInput('fue', 'ふぇ');
+  testInput('fule', 'ふぇ');
 });
 
 test('small tsu', () => {