示例#1
0
        public void wordBreak(string text, Action <PutTypes, Int16, Int16> onPutWord)
        {
            if (string.IsNullOrEmpty(text))
            {
                return;
            }
            if (breaker == null && item != null)
            {
                breaker = item.getWordBreaker();
            }
            if (breaker == null)
            {
                breaker = Lib.items[Langs._].getWordBreaker();            //neutral word breaker
            }
            if (breaker == null)
            {
                throw new Exception("breaker == null");
            }
            BreakSink cws = new BreakSink(onPutWord);
            //CPhraseSink cps = new CPhraseSink(res);
            TEXT_SOURCE pTextSource = new TEXT_SOURCE();

            pTextSource.pfnFillTextBuffer += fillTextBuffer;
            pTextSource.awcBuffer          = text;
            pTextSource.iCur = 0;
            pTextSource.iEnd = text.Length;
            breaker.BreakText(ref pTextSource, cws, /*cps*/ null);
        }
示例#2
0
        //struct StemItem { public PutTypes type; public string word; }

        static void wordBreak(string text, IWordBreaker breaker, Action <PutTypes, int, int> onPutWord)
        {
            if (string.IsNullOrEmpty(text))
            {
                return;
            }
            BreakSink   cws         = new BreakSink(onPutWord);
            TEXT_SOURCE pTextSource = new TEXT_SOURCE();

            pTextSource.pfnFillTextBuffer += fillTextBuffer;
            pTextSource.awcBuffer          = text;
            pTextSource.iCur = 0;
            pTextSource.iEnd = text.Length;
            breaker.BreakText(ref pTextSource, cws, /*cps*/ null);
        }