コード例 #1
0
ファイル: AltPinyin.cs プロジェクト: blankego/cphonetic
 public override string Transcribe(MSyl syl)
 {
     string t = _tTrans[ syl.Tone];
     syl.Tone = TONE.NEUTRAL;
     string s = base.Transcribe(syl);
     return s + t;
 }
コード例 #2
0
 public void TestMPinyin()
 {
     foreach (string s in sylStrings)
     {
         int    idx = 0;
         MSyl   ms  = Bopomofo.Inst.MunchSyllable(s, ref idx);
         string mpy = Pinyin.Inst.Transcribe(ms);
         idx = 0;
         MSyl ms1 = Pinyin.Inst.MunchSyllable(mpy, ref idx);
         if (!ms.Equals(ms1))
         {
             Console.WriteLine("{3},{0},{1},{2}", ms, ms1, mpy, s);
         }
         Assert.AreEqual(ms, ms1);
     }
 }
コード例 #3
0
        public void TestPinyin()
        {
            string s0 = "zhuang4";
            int    i = 0, i2 = 0;
            MSyl   syl  = AltPinyin.Inst.MunchSyllable(s0, ref i);
            string bpmf = syl.ToString();

            Assert.AreEqual(Bopomofo.Inst.MunchSyllable(bpmf, ref i2), syl);

            foreach (string s in sylStrings)
            {
                int    idx = 0;
                MSyl   ms  = Bopomofo.Inst.MunchSyllable(s, ref idx);
                string py  = AltPinyin.Inst.Transcribe(ms);
                idx = 0;
                MSyl ms1 = AltPinyin.Inst.MunchSyllable(py, ref idx);
                Assert.AreEqual(ms, ms1);
            }
        }
コード例 #4
0
        public void TestMSyl()
        {
            MSyl juang4 = new MSyl(INIT.J, MED.U, FIN.ANG, TONE.GOING);

            int size = Marshal.SizeOf(juang4);
            var init = juang4.Initial;
            var med  = juang4.Medial;
            var fin  = juang4.Final;
            var tone = juang4.Tone;
            var rime = juang4.Rime;

            Assert.AreEqual(2, size);
            Assert.AreEqual(INIT.J, init);
            Assert.AreEqual(MED.U, med);
            Assert.AreEqual(FIN.ANG, fin);
            Assert.AreEqual(TONE.GOING, tone);
            Assert.AreEqual(RIME.UANG, rime);

            MSyl j2 = new MSyl(INIT.J, MED.U, FIN.ANG, TONE.GOING);

            Assert.IsTrue(juang4 == j2);
            j2.Tone = TONE.RISING;
            Assert.AreEqual(TONE.RISING, j2.Tone);
            j2.Initial = INIT.G;
            Assert.AreEqual(INIT.G, j2.Initial);
            j2.Medial = MED._;
            Assert.AreEqual(MED._, j2.Medial);
            Assert.IsFalse(j2.IsPalatized);
            j2.Final = FIN.ENG;
            Assert.AreEqual(FIN.ENG, j2.Final);
            j2.Medial = MED.U;
            Assert.AreEqual(RIME.ONG, j2.Rime);
            Assert.IsFalse(j2.IsPalatized);
            j2.Medial = MED.I;
            Assert.IsTrue(j2.IsPalatized);
            j2.Medial = MED.IU;
            Assert.IsTrue(j2.IsPalatized);
            Assert.AreEqual(INITGROUP.GGRP, j2.InitialGroup);

            //BOOST_CHECK(j2 < juang4);
        }
コード例 #5
0
        public void TestBopomofo()
        {
            foreach (string s in sylStrings)
            {
                int  idx = 0;
                MSyl syl = Bopomofo.Inst.MunchSyllable(s, ref idx);
                Assert.AreNotEqual(MSyl.Default, syl);
                string s1 = Bopomofo.Inst.Transcribe(syl);
                Assert.AreEqual(s.Trim(), s1);
            }
            string          seq = " ㄊㄧㄢㄒㄧㄚˋ。ㄊㄞˋㄆㄧㄥˊ;";
            IList <AltMSyl> lst = Bopomofo.Inst.Parse(seq);

            Assert.AreEqual(" ", lst[0].Noise);
            Assert.AreEqual("ㄊㄧㄢ", lst[1].MSyl.ToString());
            Assert.AreEqual("ㄒㄧㄚˋ", lst[2].MSyl.ToString());
            Assert.AreEqual("。", lst[3].Noise);
            Assert.AreEqual("ㄊㄞˋ", lst[4].MSyl.ToString());
            Assert.AreEqual("ㄆㄧㄥˊ", lst[5].MSyl.ToString());
            Assert.AreEqual(";", lst[6].Noise);
            Assert.AreEqual(7, lst.Count);
        }
コード例 #6
0
 public void TestGwoRo()
 {
     foreach (string s in sylStrings)
     {
         int    idx = 0;
         MSyl   ms  = Bopomofo.Inst.MunchSyllable(s, ref idx);
         string gr  = GwoRo.Inst.Transcribe(ms);
         idx = 0;
         MSyl ms1 = GwoRo.Inst.MunchSyllable(gr, ref idx);
         if (!ms.Equals(ms1))
         {
             Console.WriteLine("{3},{0},{1},{2}", ms, ms1, gr, s);
         }
         Assert.AreEqual(ms, ms1);
     }
     foreach (IList <string> lst in bpmfGworo)
     {
         int  idx = 0;
         MSyl syl = Bopomofo.Inst.MunchSyllable(lst[0], ref idx);
         Assert.AreEqual(lst[1], GwoRo.Inst.Transcribe(syl));
         idx = 0;
         Assert.AreEqual(syl, GwoRo.Inst.MunchSyllable(lst[1], ref idx));
         syl.Tone = TONE.MUDDY;
         Assert.AreEqual(lst[2], GwoRo.Inst.Transcribe(syl));
         idx = 0;
         Assert.AreEqual(syl, GwoRo.Inst.MunchSyllable(lst[2], ref idx));
         syl.Tone = TONE.RISING;
         Assert.AreEqual(lst[3], GwoRo.Inst.Transcribe(syl));
         idx = 0;
         Assert.AreEqual(syl, GwoRo.Inst.MunchSyllable(lst[3], ref idx));
         syl.Tone = TONE.GOING;
         Assert.AreEqual(lst[4], GwoRo.Inst.Transcribe(syl));
         idx = 0;
         Assert.AreEqual(syl, GwoRo.Inst.MunchSyllable(lst[4], ref idx));
     }
 }
コード例 #7
0
ファイル: GwoRo.cs プロジェクト: blankego/cphonetic
        public string Transcribe(MSyl syl)
        {
            string init = "";
            INIT i = syl.Initial;
            TONE t = syl.Tone;
            if( t == TONE.NEUTRAL)
            {
                init = ".";
                t = TONE.CLEAR;
            }

            try
            {
                if(i == INIT.Void)
                {
                    if(syl.Medial > MED._)
                    if(t > TONE.MUDDY && t < TONE.NEUTRAL || syl.Rime == RIME.ONG )//oblique forms
                    {
                        return init + _ywObliqueTrans[new MRt(syl.Rime,t)];
                    }
                }
                else
                {
                    if(syl.InitialGroup == INITGROUP.GGRP && syl.IsPalatized)//gi ki hi gni
                    {
                        init += i == INIT.G ? "j": i == INIT.K? "ch": i == INIT.H? "sh" : "gn";
                    }
                    else
                    {
                        init += _iTrans[i];
                        if(i.IsSonorant())
                        {
                            if(syl.Tone == TONE.CLEAR)
                                init += "h";
                            else if(syl.Tone == TONE.MUDDY)
                                t = TONE.CLEAR;
                        }
                    }
                }

                return init + _rTrans[new MRt(syl.Rime,t)];
            }
            catch(Exception)
            {
                throw new ArgumentException(
                    string.Format("Try to transcribe a invalid mandarin syllable:{0} into GwoyeuRomatzyh!",syl));
            }
        }
コード例 #8
0
 public AltMSyl(MSyl syl)
 {
     MSyl = syl; Noise = null;
 }
コード例 #9
0
 public AltMSyl(string noise)
 {
     Noise = noise; MSyl = MSyl.Default;
 }
コード例 #10
0
ファイル: MImt.cs プロジェクト: blankego/cphonetic
 public MImt(MSyl syl)
 {
     _syl = syl;
 }
コード例 #11
0
ファイル: MImt.cs プロジェクト: blankego/cphonetic
 public MImt(INIT i, MED m = MED._, TONE t = TONE.NEUTRAL)
 {
     _syl = new MSyl(i,m,FIN.ZERO,t);
 }
コード例 #12
0
ファイル: Pinyin.cs プロジェクト: blankego/cphonetic
        public virtual string Transcribe(MSyl syl)
        {
            string start, end = "";
            INIT i = syl.Initial;
            TONE t = syl.Tone;
            MED m = syl.Medial;
            RIME r = syl.Rime;

            //initial
            if(i == INIT.Void && m != MED._)//y w yu
            {
                return _m0Trans[new MRt(r,t)];
            }
            else if(syl.InitialGroup ==INITGROUP.GGRP && syl.IsPalatized) //j q x
            {
                start = _specInit[i];
                if(m == MED.IU && syl.Final != FIN.ENG) //ü -> u but not iong
                {
                    r =  (RIME)((byte)MED.U | (byte)syl.Final); //ju qu xu
                }
            }
            else if(syl.InitialGroup == INITGROUP.TZGRP && m == MED.I && syl.Final == FIN.ZERO) //zyi cyi syi
            {
                start = _specInit[i];
            }
            else
                start = _miTrans[i];

            //final
            _mfTrans.TryGetValue( new MRt(r,t),out end);

            return start + end;
        }
コード例 #13
0
ファイル: Test.cs プロジェクト: blankego/CjkStew
        public void TestMSyl()
        {
            MSyl juang4 = new MSyl(INIT.J,MED.U,FIN.ANG,TONE.GOING);

            int size = Marshal.SizeOf( juang4 );
            var init = juang4.Initial;
            var med = juang4.Medial;
            var fin = juang4.Final;
            var tone = juang4.Tone;
            var rime = juang4.Rime;

            Assert.AreEqual(2, size);
            Assert.AreEqual(INIT.J, init);
            Assert.AreEqual(MED.U, med);
            Assert.AreEqual(FIN.ANG, fin);
            Assert.AreEqual(TONE.GOING, tone);
            Assert.AreEqual(RIME.UANG, rime);

            MSyl j2 = new MSyl(INIT.J, MED.U,FIN.ANG, TONE.GOING);
            Assert.IsTrue(juang4 == j2);
            j2.Tone = TONE.RISING;
            Assert.AreEqual(TONE.RISING, j2.Tone);
            j2.Initial = INIT.G;
            Assert.AreEqual(INIT.G, j2.Initial);
            j2.Medial = MED._;
            Assert.AreEqual(MED._, j2.Medial);
            Assert.IsFalse(j2.IsPalatized);
            j2.Final = FIN.ENG;
            Assert.AreEqual(FIN.ENG, j2.Final);
            j2.Medial = MED.U;
            Assert.AreEqual(RIME.ONG, j2.Rime);
            Assert.IsFalse(j2.IsPalatized);
            j2.Medial = MED.I;
            Assert.IsTrue(j2.IsPalatized);
            j2.Medial = MED.IU;
            Assert.IsTrue(j2.IsPalatized);
            Assert.AreEqual(INITGROUP.GGRP,j2.InitialGroup);

            //BOOST_CHECK(j2 < juang4);
        }
コード例 #14
0
ファイル: Bopomofo.cs プロジェクト: blankego/cphonetic
        public string Transcribe(MSyl syl)
        {
            var bpmf = new System.Text.StringBuilder();
             		bpmf.Append( (syl.IsPalatized && syl.InitialGroup == INITGROUP.GGRP) ?
                        _giGrp[syl.Initial] : _iTrans[syl.Initial]);
            bpmf.Append(_mTrans[syl.Medial]);
            bpmf.Append(_fTrans[syl.Final]);
            bpmf.Append(_tTrans[syl.Tone]);

            return bpmf.ToString();
        }