public override string Transcribe(MSyl syl) { string t = _tTrans[ syl.Tone]; syl.Tone = TONE.NEUTRAL; string s = base.Transcribe(syl); return s + t; }
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); } }
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); } }
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); }
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); }
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)); } }
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)); } }
public AltMSyl(MSyl syl) { MSyl = syl; Noise = null; }
public AltMSyl(string noise) { Noise = noise; MSyl = MSyl.Default; }
public MImt(MSyl syl) { _syl = syl; }
public MImt(INIT i, MED m = MED._, TONE t = TONE.NEUTRAL) { _syl = new MSyl(i,m,FIN.ZERO,t); }
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; }
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); }
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(); }