Class: EnglishThesaurus::Thesaurus
- Inherits:
-
Object
- Object
- EnglishThesaurus::Thesaurus
- Defined in:
- lib/english_thesaurus.rb
Constant Summary collapse
- URL =
'http://thesaurus.com/browse/'
- RELEVANCY_MAP =
{high: 3, middle: 2, low: 1}
Instance Method Summary collapse
- #all_synonyms ⇒ Object
-
#initialize(word) ⇒ Thesaurus
constructor
A new instance of Thesaurus.
- #synonyms(relevancy:, word_of_speech: nil) ⇒ Object
Constructor Details
Instance Method Details
#all_synonyms ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/english_thesaurus.rb', line 29 def all_synonyms doc.xpath('//div[@class="synonyms"]').map {|synonym| filters_block = synonym.xpath('*[@class="filters"]') { word_of_speech: filters_block.xpath('div[@class="synonym-description"]/em').text, description: filters_block.xpath('div[@class="synonym-description"]/strong').text }.merge(RELEVANCY_MAP.inject({}) {|hash, (relevant, level)| hash.merge!("#{relevant}_relevance_list".to_sym => filters_block.xpath(relevancy_block_xpath_query(relevancy: level)).map(&:text)) }) } end |
#synonyms(relevancy:, word_of_speech: nil) ⇒ Object
18 19 20 21 22 23 24 25 26 27 |
# File 'lib/english_thesaurus.rb', line 18 def synonyms(relevancy:, word_of_speech: nil) raise "illegal relevancy. choose from #{RELEVANCY_MAP}" unless RELEVANCY_MAP.include?(relevancy.to_sym) filtered_synonyms = all_synonyms if word_of_speech filtered_synonyms = all_synonyms.reject {|s| s[:word_of_speech] != word_of_speech } end filtered_synonyms.map {|s| s.slice(:word_of_speech, :description, "#{relevancy}_relevance_list".to_sym) } end |