static string Rewrite(string source, CombineMode mode) { var analysis = Tagger.Parse(source); Combiner.CombineMode = mode; var jotai = Combiner.Combine(analysis); return(jotai); }
private static string ConvertText(string ketai) { var analysis = Tagger.Parse(ketai); var buffer = new EditBuffer(analysis); Changer.ToJotai(buffer); var jotai = Combiner.Combine(buffer); return(jotai); }
public string ChangeText(string text) { IEnumerable <WNode> nodes = Tagger.Parse(text); if (ChangeToJotai) { Changer.PreferDearu = (JotaiPreferences & JotaiPreferences.PreferDearu) != 0; var buffer = new EditBuffer(nodes); Changer.ToJotai(buffer); nodes = buffer; } Combiner.CombineMode = CombineMode; switch (WidthPreferences & (WidthPreferences.HalfwidthParentheses | WidthPreferences.FullwidthParentheses)) { case WidthPreferences.HalfwidthParentheses: Combiner.Postprocess = TokenCombiner.AsciiParentheses; break; case WidthPreferences.FullwidthParentheses: Combiner.Postprocess = TokenCombiner.FullWidthParentheses; break; default: Combiner.Postprocess = null; break; } if (WidthPreferences.None != (WidthPreferences & (WidthPreferences.FullwidthAlphabets | WidthPreferences.FullwidthDigits | WidthPreferences.FullwidthSymbols | WidthPreferences.CustomFullwidthSet))) { var p = TokenCombiner.SimpleFullwidthPostprocess( WidthPreferences.HasFlag(WidthPreferences.FullwidthAlphabets) ? TokenCombiner.AsciiAlphabets : null, WidthPreferences.HasFlag(WidthPreferences.FullwidthDigits) ? TokenCombiner.AsciiDigits : null, WidthPreferences.HasFlag(WidthPreferences.FullwidthSymbols) ? TokenCombiner.OtherAsciiSymbols : null, WidthPreferences.HasFlag(WidthPreferences.CustomFullwidthSet) ? CustomFullwidthSet : null); var q = Combiner.Postprocess; Combiner.Postprocess = (q == null) ? p : sb => p(q(sb)); } if (WidthPreferences.None != (WidthPreferences & WidthPreferences.CustomHalfwidthSet)) { var p = TokenCombiner.SimpleHalfwidthPostprocess( WidthPreferences.HasFlag(WidthPreferences.CustomHalfwidthSet) ? CustomHalfwidthSet : null); var q = Combiner.Postprocess; Combiner.Postprocess = (q == null) ? p : sb => p(q(sb)); } var result = Combiner.Combine(nodes); return(result); }
private void txtInput_TextChanged(object sender, TextChangedEventArgs _) { var split = mTagger.Parse(txtInput.Text); var niceEntries = new List <MyEntry>(); foreach (var morph in split) { string jmPos = GetJmPartOfSpeach(morph); if (jmPos == null) { continue; } var reading = fromKataToHira(morph.Reading); List <entry> ent; if (kLookup.TryGetValue(morph.BaseForm, out ent) || rLookup.TryGetValue(reading, out ent)) { if (ent.Count != 1) { //try to narrow it down by reading var entriesWithCorrectReading = ent.Where(e => e.r_ele != null && e.r_ele.Any(r => r.reb == reading)).ToList(); if (entriesWithCorrectReading.Count == 0) { Console.WriteLine(); } else { ent = entriesWithCorrectReading; } } var entriesWithTheCorrectPartOfSpeech = ent.Where(e => e.sense.Any(s => s.pos != null && s.pos.Any(p => p.StartsWith(jmPos)))).ToList(); if (entriesWithTheCorrectPartOfSpeech.Count == 1) { var n = entriesWithTheCorrectPartOfSpeech[0]; var e = new MyEntry(); e.k_ele = n.k_ele; e.r_ele = n.r_ele; e.Meaning = n.sense .Where(s => s.pos != null && s.pos.Any(p => p.StartsWith(jmPos))) .SelectMany(s => s.gloss.SelectMany(g => g.Text)) .ToArray(); niceEntries.Add(e); } else if (ent.Count > 1) { var e = new MyEntry(); e.k_ele = entriesWithTheCorrectPartOfSpeech.SelectMany(n => n.k_ele ?? new k_ele[0]).ToArray(); e.r_ele = entriesWithTheCorrectPartOfSpeech.SelectMany(n => n.r_ele ?? new r_ele[0]).ToArray(); e.Meaning = entriesWithTheCorrectPartOfSpeech.SelectMany(n => n.sense ?? new sense[0]) .Where(s => s.pos != null && s.pos.Any(p => p.StartsWith(jmPos))) .SelectMany(s => s.gloss.SelectMany(g => g.Text)) .ToArray(); niceEntries.Add(e); Console.WriteLine(); //todo, support multiple meanings in gui } } else { Console.WriteLine(); } } lv.ItemsSource = niceEntries; }