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;
        }
Example #2
0
        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);
        }
Example #3
0
        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));
 }