private void readTrans(EdictEntryBuilder entry, XmlReader xml) { DictionarySense sense = new DictionarySense(); while (xml.Read()) { if (xml.NodeType == XmlNodeType.EndElement && xml.Name == "trans") { break; } if (xml.NodeType == XmlNodeType.Element) { if (xml.Name == "trans_det") { string lang = xml.GetAttribute("xml:lang"); if (lang == "eng") { lang = null; } string value = xml.ReadString(); sense.addGloss(lang, value); } else { switch (xml.Name) { case "name_type": entry.nameType = fromEntity(xml); break; } } } } entry.addSense(sense, 1.0, 1.0); }
internal void addSense(DictionarySense sense, double globalMult = 1.0, double kanaMult = 0.8) { if (this.sense.Count == 0) { globalMultiplier = globalMult; globalKanaMultiplier = kanaMult; } else { globalMultiplier = Math.Max(globalMultiplier, globalMult); globalKanaMultiplier = Math.Max(globalKanaMultiplier, kanaMult); } this.sense.Add(sense); }
private void readSense(EdictEntryBuilder entry, XmlReader xml) { DictionarySense sense = new DictionarySense(); double globalMult = 1.0; double kanaMult = 0.8; while (xml.Read()) { if (xml.NodeType == XmlNodeType.EndElement && xml.Name == "sense") { break; } if (xml.NodeType == XmlNodeType.Element) { if (xml.Name == "gloss") { string lang = xml.GetAttribute("xml:lang"); if (lang == "eng") { lang = null; } string value = xml.ReadString(); sense.addGloss(lang, value); } else { switch (xml.Name) { case "pos": entry.addPOS(fromEntity(xml)); break; case "field": case "misc": case "dial": string v = fromEntity(xml); adjustMultipliers(v, ref globalMult, ref kanaMult); sense.addMisc(v); break; } } } } entry.addSense(sense, globalMult, kanaMult); }
private void readTrans(EdictEntryBuilder entry, XmlReader xml) { DictionarySense sense = new DictionarySense(); while (xml.Read()) { if (xml.NodeType == XmlNodeType.EndElement && xml.Name == "trans") break; if (xml.NodeType == XmlNodeType.Element) { if (xml.Name == "trans_det") { string lang = xml.GetAttribute("xml:lang"); if (lang == "eng") lang = null; string value = xml.ReadString(); sense.addGloss(lang, value); } else { switch (xml.Name) { case "name_type": entry.nameType = fromEntity(xml); break; } } } } entry.addSense(sense, 1.0, 1.0); }
private void readSense(EdictEntryBuilder entry, XmlReader xml) { DictionarySense sense = new DictionarySense(); double globalMult = 1.0; double kanaMult = 0.8; while (xml.Read()) { if (xml.NodeType == XmlNodeType.EndElement && xml.Name == "sense") break; if (xml.NodeType == XmlNodeType.Element) { if (xml.Name == "gloss") { string lang = xml.GetAttribute("xml:lang"); if (lang == "eng") lang = null; string value = xml.ReadString(); sense.addGloss(lang, value); } else { switch (xml.Name) { case "pos": entry.addPOS(fromEntity(xml)); break; case "field": case "misc": case "dial": string v = fromEntity(xml); adjustMultipliers(v, ref globalMult, ref kanaMult); sense.addMisc(v); break; } } } } entry.addSense(sense, globalMult, kanaMult); }
public void addUserName(string key, string sense, string nameType) { lock (this) { Settings.app.removeBannedWord(key); EdictMatch match = new EdictMatch(key); EdictEntryBuilder eb = new EdictEntryBuilder(); eb.addKanji(new DictionaryKeyBuilder(key)); eb.addKana(new DictionaryKeyBuilder(sense)); DictionarySense ds = new DictionarySense(); ds.addGloss(null, sense); eb.addSense(ds); if (nameType != "notname") { eb.addPOS("name"); } else { eb.addPOS("n"); } eb.nameType = nameType; match.addEntry(new RatedEntry { entry = eb.build(), rate = 5.0F }); userNames[key] = match; this.isDirty = true; } }
internal string replaceNames(ParseResult parseData) { StringBuilder sb = new StringBuilder(); IEnumerable <ParseResult> parts; if (parseData.type == ParseResult.ParseResultType.COMPLEX) { parts = (parseData as ComplexParseResult).parts; } else { parts = Enumerable.Repeat(parseData, 1); } bool prevName = false; foreach (var part in parts) { if (part.type == ParseResult.ParseResultType.UNPARSED) { prevName = false; sb.Append(part.asText()); } else if (part.type == ParseResult.ParseResultType.WORD) { WordParseResult wp = part as WordParseResult; bool found = false; bool isName = wp.isName(); bool isReplacement = wp.isReplacement(); if (isName || isReplacement) { var entry = wp.getSelectedEntry(); DictionarySense sense = entry.sense.FirstOrDefault(); if (sense != null && sense.glossary.Count > 0) { if (prevName) { sb.Append(' '); } sb.Append(sense.glossary.First()); found = true; } else { if (entry.kana.Count > 0) { if (prevName) { sb.Append(' '); } sb.Append(entry.kana.First().text); found = true; } } } else if (prevName) { foreach (EdictEntry entry in wp.getEntries()) { if (nameSuffixes.ContainsKey(part.asText())) { string reading = nameSuffixes[part.asText()]; sb.Append(reading); found = true; break; } else if (nameSuffixes.ContainsKey(entry.getText())) { string reading = nameSuffixes[entry.getText()]; sb.Append(reading); found = true; break; } } } if (found) { prevName = isName || prevName; } else { prevName = false; sb.Append(part.asText()); } } } return(sb.ToString()); }