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 Should_CustomPhrase_Work() { // 手動加一個片語,以便觀察是否查詢字根時是否有用到片語資料。 ZhuyinPhraseTable.GetInstance().AddPhrase("什麼 ㄕㄣˊ ㄇㄚˇ"); var converter = new ZhuyinReverseConverter(new ZhuyinReverseConversionProvider()); string aChineseText = "什麼"; string[] expected = { "ㄕ ㄣˊ", "ㄇ ㄚˇ" }; string[] actual = converter.GetZhuyinWithPhraseTable(aChineseText); CollectionAssert.AreEqual(expected, actual); }
private string ReverseConversion(string input) { var converter = new ZhuyinReverseConverter(); string[] result = converter.GetZhuyin(input); var sb = new StringBuilder(); foreach (string s in result) { sb.Append(s + " "); } return(sb.ToString()); }
/// <summary> /// Get singleton instance. /// </summary> /// <returns></returns> public static BrailleProcessor GetInstance(ZhuyinReverseConverter zhuyinConverter = null) { if (s_Processor != null) { return(s_Processor); } if (zhuyinConverter == null) { // create default zhuyin reverse converter if not specified. zhuyinConverter = new ZhuyinReverseConverter(new ZhuyinReverseConversionProvider()); } s_Processor = new BrailleProcessor(zhuyinConverter); return(s_Processor); }
public void Should_CustomPhrase_AllowSingleWord() { // 手動加一個片語,以便觀察是否查詢字根時是否有用到片語資料。 var phraseTable = ZhuyinPhraseTable.GetInstance(); phraseTable.AddPhrase("什 ㄕㄜˊ"); phraseTable.AddPhrase("什麼 ㄕㄣˊ ㄇㄚˇ"); var converter = new ZhuyinReverseConverter(skipLoadingDictionary: true); string aChineseText = "什麼"; string[] expected = { "ㄕ ㄣˊ", "ㄇ ㄚˇ" }; string[] actual = converter.GetZhuyinWithPhraseTable(aChineseText); CollectionAssert.AreEqual(expected, actual); }
public BrailleConverter() { _zhuyinConverter = CreateZhuyinConverter(AppGlobals.Config.PreferIFELanguage); _processor = BrailleProcessor.GetInstance(_zhuyinConverter); _doc = new BrailleDocument(_processor); _processor.ConvertionFailed += new ConvertionFailedEventHandler(BrailleProcessor_ConvertionFailed); _processor.TextConverted += new TextConvertedEventHandler(BrailleProcessor_TextConverted); //m_Processor.ChineseConverter = null; // 保護 m_CvtResultFileName = Path.Combine(AppGlobals.TempPath, Constant.Files.CvtResultFileName); m_CvtErrorCharFileName = Path.Combine(AppGlobals.TempPath + Constant.Files.CvtErrorCharFileName); _verboseMode = false; LoadPhraseFiles(); // TODO: 還需要這個嗎? ZhuyinQueryHelper.Initialize(); // 初始化注音字根查詢器(載入注音字根表)。 }
public ChineseWordConverter(ZhuyinReverseConverter zhuyinConverter) : base() { _brailleTable = ChineseBrailleTable.GetInstance(); ZhuyinConverter = zhuyinConverter ?? throw new ArgumentNullException(nameof(zhuyinConverter)); }