I have a list of more than 80 search engines to perform keyword searches. They are listed in an org-table like this:
#+name: keyword-search
|---------------+---------------------------------------------------------------------+-----|
| Name | URL | key |
|---------------+---------------------------------------------------------------------+-----|
| Antonyms-PT | https://www.powerthesaurus.org/%s/antonyms | eta |
| Arch-Packages | https://archlinux.org/packages/?sort=&q=%s | pac |
| Arch-Wiki | https://wiki.archlinux.org/index.php?title=Special:Search&search=%s | wia |
| IMDB | http://www.imdb.com/find?s=all&q=%s | imd |
| Synonyms-WR | https://www.wordreference.com/synonyms/%s | ets |
| ... | ... | ... |
|---------------+---------------------------------------------------------------------+-----|
I would like to generate defengine macros (which are used by engine-mode) from this table. The output would look like this:
(defengine Antonyms-PT "https://www.powerthesaurus.org/%s/antonyms" :keybinding "eta")
(defengine Arch-Packages "https://archlinux.org/packages/?sort=&q=%s" :keybinding "pac")
(defengine WikiArch "https://wiki.archlinux.org/index.php?title=Special:Search&search=%s" :keybinding "wia")
(defengine IMDB "http://www.imdb.com/find?s=all&q=%s" :keybinding "imd")
(defengine Synonyms-WR "https://www.wordreference.com/synonyms/%s" :keybinding "ets")
What are the Elisp tools that I could use to write such a script?