16 releases

0.2.8 Sep 10, 2023
0.2.7 May 24, 2023
0.2.6 Mar 28, 2023
0.2.3 Dec 6, 2022
0.1.4 May 9, 2021

#1240 in Command line utilities

MIT license

24KB
346 lines

gloss-word

This is a simple CLI utility for looking up the definition or (with flag -e) the etymology of an English word. Definitions are drawn from the American Heritage Dictionary, as provided by the website of The Free Dictionary. Etymologies are pulled from the Online Etymology Dictionary.

While the package is called gloss-word—since I needed a unique name to publish it to crates.io—the binary itself, and hence the command, is gloss. I also like to use a shell function (pasted below) to pipe the output to bat for pretty-printing.

In short, the program makes a request (if necessary) to the appropriate website; scrapes relevant HTML elements; converts that material to nicely formatted plain text with Pandoc; and prints it to stdout. Results are cached in a rudimentary manner, so that repeat searches—however unlikely they may be—will not require fetching from TFD or Etymonline.

Pandoc is a required external dependency. Everything else is handled by the Rust binary. I should note, however, that I wrote this program for my own use on macOS, and I've tested it only lightly on Windows (seems fine), and not at all on Linux. It's possible that some adjustments would be necessary.

Cached results are in the form of a basic SQLite database, in what is supposed to be a platform-appropriate location (relying on the directories library).

Answers to a few other potential questions: Why scrape from TFD, as opposed to other good dictionary sites? I actually tried Wiktionary first, but their markup is not at all suited to this. Why AHD, as opposed to other English dictionaries? I just like it. I looked at a few and chose the one that most appealed to me.

Shell function

gloss() {
  (
    set -o pipefail
    command gloss "$@" | bat --style=grid,numbers
  )
}

bat is a Rust quasi-reimplementation of cat, which I enjoy. You might also like to give it a try.

asciicast

asciicast

Dependencies

~33–64MB
~1M SLoC