module Ety

Constants

VERSION

Public Instance Methods

entry(args) click to toggle source
# File lib/ety.rb, line 10
def entry(args)
  if !(args & %w[--help -h]).empty? or args.empty?
    help
  end

  @word=args.pop
  etymology, related_words=fetch_site
  puts "\e[1;4mEtymology of \"#{word}\":\e[m\n#{etymology}"
  puts "\n\e[1;4mRelated words:\e[m\n#{related(related_words).join(', ')}"
end
fetch_site() click to toggle source
# File lib/ety.rb, line 28
def fetch_site
  html=Nokogiri::HTML(open(url,headers))
  pattern='//section[starts-with(@class,"word__defination")]'
  content=html.xpath(pattern)
  etymology=content[0].css('p').text
  related_words=content.map {|s| s.css('span').map(&:text)}.flatten!
  [etymology,related_words]
end
headers() click to toggle source
# File lib/ety.rb, line 57
def headers
  {'User-Agent' => 'ety-rubygem', 'accept' => 'text/html'}
end
help() click to toggle source
# File lib/ety.rb, line 21
  def help
    puts <<~eof
    Usage: ety <word>
    eof
    exit
  end
url() click to toggle source
# File lib/ety.rb, line 53
def url
  "https://www.etymonline.com/search?q=#{word}"
end
word() click to toggle source
# File lib/ety.rb, line 49
def word
  @word
end