はじめに
terminalから全ての動作を完結させたいというのは,どんなプログラマーでも思っていることと信じたい.
(emacsは使えないのでvscode派なのは内緒)
ということで,rubyでterminalから英単語の意味を調べる.
プログラム本体
旧バージョン
dic.rb
system "curl -s https://ejje.weblio.jp/content/#{ARGV[0]} | grep 主な > ~/dic/tmp.txt"
File.open("#{Dir.home}/dic/tmp.txt", "r") do |f|
f.readlines[0].match(/.*<td class="content-explanation .*\">(.*)<\/td>.*/)
puts $1
end
system "rm ~/dic/tmp.txt"
1行目:システムコールでcurlを使用.Weblio英和辞典を使用させていただいている.引数をurl内で展開して,grepで絞り込んでいる.それを,~/dic/tmp.txtに書き込む.
2行目:先ほどのファイルを読み込みモードで開く.Fileメソッドでは"~"が使えなかったので,Dir.homeとしている.
3行目:ファイルを読み込み,正規表現を用いて和訳部分を抽出.それを出力する.
最後に,ファイルを消去.
新バージョン
@scivola さんよりコメントで指摘いただきました.ありがとうございます.
dic.rb
result = `curl -s https://ejje.weblio.jp/content/#{ARGV[0]}`
puts result.match(%r{主な.*<td class="content-explanation .*">(.*)</td>}).to_a[1]
こんなにも簡潔に記述できるなんて!
まだまだ,学ぶことがたくさんあると痛感しました.
aliasを追加
config.fish
alias dic='ruby ~/dic/dic.rb'
使用例
~
❯❯❯ dic dog
犬、(イヌ科の動物の)雄、雄犬、くだらない人間、魅力のない男、醜い女、「ぶす」、やつ、くだらないもの、失敗作
単語はもちろん
~
❯❯❯ dic takecareof
…を世話する、大事にする、…に気をつける、…を引き受ける、を処理する、切り抜ける、自分のことは自分で始末する、をやっつける、殺す
連語もok
~
❯❯❯ dic 物理
natural philosophy、physics
逆に英訳もok