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; }
public void ConvertTest() { string msg = "EnglishWordConverter.Convert 測試失敗: "; EnglishWordConverter target = new EnglishWordConverter(); ContextTagManager context = new ContextTagManager(); // 測試刪節號。 string text = "..."; Stack <char> charStack = new Stack <char>(text); List <BrailleWord> expected = new List <BrailleWord>(); BrailleWord brWord = new BrailleWord(text, "040404"); 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, "2026"); 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, "26"); expected.Clear(); expected.Add(brWord); actual = target.Convert(charStack, context); CollectionAssert.AreEqual(expected, actual, msg + text); charStack.Clear(); // 測試大寫字母(不用加大寫記號,因為延後到整行調整時才處理)。 text = "A"; charStack = new Stack <char>(text); brWord = new BrailleWord(text, "01"); expected.Clear(); expected.Add(brWord); actual = target.Convert(charStack, context); CollectionAssert.AreEqual(expected, actual, msg + text); charStack.Clear(); // 測試數字 text = "6"; charStack = new Stack <char>(text); brWord = new BrailleWord(text, "16"); // 下位點。 expected.Clear(); expected.Add(brWord); actual = target.Convert(charStack, context); CollectionAssert.AreEqual(expected, actual, msg + text); charStack.Clear(); }
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 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); } }