public void RemoveConverter(WordConverter cvt) { // 移除已知的轉換器。 if (cvt is ContextTagConverter) { m_ContextTagConverter = null; return; } if (cvt is ChineseWordConverter) { m_ChineseConverter = null; return; } if (cvt is EnglishWordConverter) { m_EnglishConverter = null; return; } if (cvt is MathConverter) { m_MathConverter = null; return; } if (cvt is PhoneticConverter) // 音標轉換器. { m_PhoneticConverter = null; return; } m_Converters.Remove(cvt); }
private BrailleProcessor(ZhuyinReverseConverter zhuyinConverter) { m_Converters = new List <WordConverter>(); m_ContextTagConverter = new ContextTagConverter(); m_ChineseConverter = new ChineseWordConverter(zhuyinConverter); m_EnglishConverter = new EnglishWordConverter(); m_MathConverter = new MathConverter(); m_CoordConverter = new CoordinateConverter(); m_TableConverter = new TableConverter(); m_PhoneticConverter = new PhoneticConverter(); m_Tags = new Hashtable(); m_Tags.Add(TextTag.Name, "╴╴"); // key/value = 標籤/替換字元 m_Tags.Add(TextTag.BookName, "﹏﹏"); m_Tags.Add(TextTag.NumericItem, "#"); m_Tags.Add(TextTag.OrgPageNumber, s_DashesForOrgPageNumber); // 原書頁碼 m_Tags.Add(TextTag.Unit1End, new string('ˍ', 20)); // 大單元結束 m_Tags.Add(TextTag.Unit2End, new string('﹍', 20)); // 小單元結束 m_Tags.Add(TextTag.Unit3End, new string('﹋', 20)); // 小題結束 m_Tags.Add(TextTag.BrailleComment, "★"); // 點譯者註 m_ContextTagManager = new ContextTagManager(); m_InvalidChars = new List <CharPosition>(); m_ErrorMsg = new StringBuilder(); m_SuppressEvents = false; }
private void MainForm_Load(object sender, EventArgs e) { // 只需設定一次,且必須最早進行的初始化動作:建立點字轉換器物件,並指定點字對應表物件。 string filePath = StrHelper.AppendSlash(Application.StartupPath); ChineseWordConverter chtCvt = new ChineseWordConverter(filePath + "ChineseBrailleTable.xml"); EnglishWordConverter engCvt = new EnglishWordConverter(filePath + "EnglishBrailleTable.xml"); m_Processer = new BrailleProcessor(); m_Processer.AddWordConverter(chtCvt); m_Processer.AddWordConverter(engCvt); }
public EditCellForm() { InitializeComponent(); Mode = EditCellMode.Edit; m_BrWord = new BrailleWord(); // 以下動作不可移到 Form_Load 做,因為某些用到以下變數的事件會比它更早觸發。 m_BrProcessor = BrailleProcessor.GetInstance(); m_ChtWordCvt = m_BrProcessor.ChineseConverter; Debug.Assert(m_ChtWordCvt != null); }
public void AddConverter(WordConverter cvt) { // 設定已知的轉換器。 if (cvt is ContextTagConverter) { m_ContextTagConverter = (ContextTagConverter)cvt; return; } if (cvt is ChineseWordConverter) { m_ChineseConverter = (ChineseWordConverter)cvt; return; } if (cvt is EnglishWordConverter) { m_EnglishConverter = (EnglishWordConverter)cvt; return; } if (cvt is MathConverter) // 數學符號轉換器. { m_MathConverter = (MathConverter)cvt; return; } if (cvt is PhoneticConverter) // 音標轉換器. { m_PhoneticConverter = (PhoneticConverter)cvt; return; } // 加入其他未知的轉換器。 if (m_Converters.IndexOf(cvt) < 0) { m_Converters.Add(cvt); } }
public void ConvertTest() { string msg = "ChineseWordConverter.Convert 測試失敗: "; var target = new ChineseWordConverter( new ZhuyinReverseConverter(new ZhuyinReverseConversionProvider())); ContextTagManager context = new ContextTagManager(); // 測試結合韻。 string text = "我"; Stack <char> charStack = new Stack <char>(text); List <BrailleWord> expected = new List <BrailleWord>(); BrailleWord brWord = new BrailleWord(text, " ㄨㄛˇ", "1208"); expected.Add(brWord); List <BrailleWord> actual = target.Convert(charStack, context); CollectionAssert.AreEqual(expected, actual, msg + text); charStack.Clear(); // 測試單音字:要在音調記號前加一個空方。 text = "智"; charStack = new Stack <char>(text); brWord = new BrailleWord(text, "ㄓ ˋ", "013110"); expected.Clear(); expected.Add(brWord); actual = target.Convert(charStack, context); CollectionAssert.AreEqual(expected, actual, msg + text); charStack.Clear(); // 測試無特殊規則的注音。 text = "你"; charStack = new Stack <char>(text); brWord = new BrailleWord(text, "ㄋㄧ ˇ", "1D2108"); expected.Clear(); expected.Add(brWord); actual = target.Convert(charStack, context); CollectionAssert.AreEqual(expected, actual, msg + text); charStack.Clear(); // 測試標點符號。 text = ":"; charStack = new Stack <char>(text); brWord = new BrailleWord(text, " ˉ", "1212"); expected.Clear(); expected.Add(brWord); actual = target.Convert(charStack, context); CollectionAssert.AreEqual(expected, actual, msg + text); charStack.Clear(); // 測試全形空白 text = " "; charStack = new Stack <char>(text); brWord = new BrailleWord(text, " ˉ", "00"); expected.Clear(); expected.Add(brWord); actual = target.Convert(charStack, context); CollectionAssert.AreEqual(expected, actual, msg + text); charStack.Clear(); // 測試簡體字。 text = "实"; charStack = new Stack <char>(text); brWord = new BrailleWord(text, "ㄕ ˊ", "0A3102"); expected.Clear(); expected.Add(brWord); actual = target.Convert(charStack, context); CollectionAssert.AreEqual(expected, actual, msg + text); charStack.Clear(); // 測試無法轉換的字元:/ text = "/"; charStack = new Stack <char>(text); expected = null; actual = target.Convert(charStack, context); CollectionAssert.AreEqual(expected, actual, msg + text); charStack.Clear(); }