Example #1
0
        /// <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();
            }
        }
Example #2
0
        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);
                }
            }
        }
Example #3
0
        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);
        }