/// <summary> /// Get the meaning and synonyms. /// </summary> /// <param name="word">The word to get the meaning of.</param> /// <returns>The thesaurus result.</returns> public ThesaurusResult Thesaurus(string word) { if (_thesaurus != null) { // Get the meaning. ThesResult result = _thesaurus.Lookup(word, _hunspell); List <ThesaurusMeaning> meanings = new List <ThesaurusMeaning>(); // For each meaning found. foreach (ThesMeaning meaning in result.Meanings) { // Add the meaning. meanings.Add(new ThesaurusMeaning(meaning.Description, meaning.Synonyms)); } // Create the result. ThesaurusResult theResult = new ThesaurusResult(meanings, result.IsGenerated); // Return the result. return(theResult); } else { throw new NotImplementedException(); } }
private void lstResults_SelectedIndexChanged(object sender, EventArgs e) { ThesaurusResult result = thesaurusEntries.Single(t => t.Query == (string)lstWords.SelectedItem).GetResults()[lstResults.SelectedIndex]; foreach (ThesaurusDefinition def in result.Definitions) { txtDescription.Text = def.Description; if (!txtPOS.Text.Split("; ".ToCharArray()).Contains(def.ListPOS())) { if (txtPOS.Text != "") { txtPOS.Text += "; "; } txtPOS.Text += def.ListPOS(); } lstSynonyms.Items.Clear(); foreach (string syn in def.Synonyms) { lstSynonyms.Items.Add(syn); } lstAntonyms.Items.Clear(); foreach (string ant in def.Antonyms) { lstAntonyms.Items.Add(ant); } } }
public async Task Thesaurus(string word) { string url = $"https://od-api.oxforddictionaries.com:443/api/v1/entries/en/{word.ToLower ()}/synonyms;antonyms"; string json = await FetchJson(url); if (string.IsNullOrEmpty(json)) { return; } ThesaurusData data = ThesaurusData.FromJson(json); string finalMessage = string.Empty; ThesaurusResult result = data.Results [0]; finalMessage += $"**{result.Word.ToUpper ()}**\n\n"; foreach (ThesaurusLexicalEntry lexicalEntry in result.LexicalEntries ?? Enumerable.Empty <ThesaurusLexicalEntry> ()) { foreach (ThesaurusEntry entry in lexicalEntry.Entries ?? Enumerable.Empty <ThesaurusEntry> ()) { int nOfSenses = 1; foreach (ThesaurusSense sense in entry.Senses ?? Enumerable.Empty <ThesaurusSense> ()) { if (sense.Examples != null) { finalMessage += $"{nOfSenses}. \"{sense.Examples [0].Text.UppercaseFirst ()}\"\n"; } else { finalMessage += $"{nOfSenses}.\n"; } if (sense.Synonyms != null || sense.Synonyms.Length >= 1) { finalMessage += "**Synonyms**\n"; } string synonyms = string.Empty; foreach (DictionaryOnym onym in sense.Synonyms ?? Enumerable.Empty <DictionaryOnym> ()) { synonyms += $"{onym.Text}, "; } if (string.IsNullOrEmpty(synonyms) == false) { finalMessage += $" {synonyms.Remove (synonyms.Length - 2).UppercaseFirst ()}\n"; } foreach (ThesaurusSense subsense in sense.Subsenses ?? Enumerable.Empty <ThesaurusSense> ()) { finalMessage += " "; if (subsense.Regions != null) { if (subsense.Regions [0] != null) { finalMessage += $"___{subsense.Regions [0].UppercaseFirst ()}___ "; } } if (subsense.Registers != null) { if (subsense.Registers [0] != null) { finalMessage += $"___{subsense.Registers [0].UppercaseFirst ()}___ "; } } string ssynonyms = string.Empty; foreach (DictionaryOnym onym in subsense.Synonyms ?? Enumerable.Empty <DictionaryOnym> ()) { ssynonyms += $"{onym.Text}, "; } if (string.IsNullOrEmpty(ssynonyms) == false) { finalMessage += $"{ssynonyms.Remove (ssynonyms.Length - 2).UppercaseFirst ()}\n"; } } if (sense.Antonyms != null) { if (sense.Antonyms.Length > 0) { finalMessage += "\n**Antonyms**\n"; } } string antonyms = string.Empty; foreach (DictionaryOnym onym in sense.Antonyms ?? Enumerable.Empty <DictionaryOnym> ()) { antonyms += $"{onym.Text}, "; } if (string.IsNullOrEmpty(antonyms) == false) { finalMessage += $" {antonyms.Remove (antonyms.Length - 2).UppercaseFirst ()}\n"; } foreach (ThesaurusSense subsense in sense.Subsenses ?? Enumerable.Empty <ThesaurusSense> ()) { string santonyms = string.Empty; foreach (DictionaryOnym onym in subsense.Antonyms ?? Enumerable.Empty <DictionaryOnym> ()) { santonyms += $"{onym.Text}, "; } if (string.IsNullOrEmpty(santonyms)) { continue; } finalMessage += " "; if (subsense.Regions != null) { if (subsense.Regions [0] != null) { finalMessage += $"___{subsense.Regions [0].UppercaseFirst ()}___ "; } } if (subsense.Registers != null) { if (subsense.Registers [0] != null) { finalMessage += $"___{subsense.Registers [0].UppercaseFirst ()}___ "; } } if (string.IsNullOrEmpty(santonyms) == false) { finalMessage += $"{santonyms.Remove (santonyms.Length - 2).UppercaseFirst ()}\n"; } } finalMessage += "\n"; nOfSenses++; } } } if (finalMessage.Length >= 2000) { IEnumerable <string> messages = finalMessage.SplitEveryNth(2000); foreach (string message in messages) { await ReplyAsync(message); } return; } await ReplyAsync(finalMessage); }