Start better parsing of common misspellings list
This commit is contained in:
parent
a4be679c4b
commit
7ae70fca70
44
README.org
44
README.org
@ -3197,6 +3197,50 @@ Listing [[lst:word-games]] defines the =anagram-p= function that migth be used f
|
|||||||
better exploitation of [[https://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines][Wikipedia's list of common misspellings for machines]] in
|
better exploitation of [[https://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines][Wikipedia's list of common misspellings for machines]] in
|
||||||
the future.
|
the future.
|
||||||
|
|
||||||
|
#+caption[Better parsing of the common misspellings list]:
|
||||||
|
#+caption: Better parsing of the common misspellings list.
|
||||||
|
#+name: lst:better-misspellings
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(with-eval-after-load 'emacs
|
||||||
|
(defun browse-common-misspellings ()
|
||||||
|
"Open the Wikipedia page of common misspellings for machines in EWW."
|
||||||
|
(interactive)
|
||||||
|
(eww (concat "https://en.wikipedia.org/wiki/Wikipedia"
|
||||||
|
":Lists_of_common_misspellings/For_machines")))
|
||||||
|
|
||||||
|
(defun wordnet-check (word)
|
||||||
|
"Check whether WORD occurs in the wordnet lexical database."
|
||||||
|
(cl-destructuring-bind (exit-code output)
|
||||||
|
(shell-command-with-exit-code "wn" word "-grepn" "-grepv" "-grepa" "-grepr")
|
||||||
|
(if (= 0 exit-code)
|
||||||
|
(< 0 (length (string-trim output)))
|
||||||
|
(error "%s" (string-trim output)))))
|
||||||
|
|
||||||
|
(defun better-misspellings ()
|
||||||
|
"Pick the best from each common misspelling multiple choice of corrections."
|
||||||
|
(interactive)
|
||||||
|
(let (start end lines)
|
||||||
|
(save-excursion
|
||||||
|
(if (re-search-forward (rx bol "abandon"))
|
||||||
|
(setq start (match-beginning 0))
|
||||||
|
(user-error "Failed to find beginning of misspellings"))
|
||||||
|
(if (re-search-forward (rx bol "Retrieved from"))
|
||||||
|
(setq end (match-beginning 0))
|
||||||
|
(user-error "Failed to find end of misspellings")))
|
||||||
|
(dolist (line (split-string
|
||||||
|
(buffer-substring-no-properties start end) "\n"))
|
||||||
|
(pcase-let ((`(,lhs . (,rhs . ,rest)) (split-string line "->")))
|
||||||
|
(when (and (stringp rhs)
|
||||||
|
(string-match ", " rhs))
|
||||||
|
(message "%s -> %s" lhs rhs)
|
||||||
|
(let ((words (split-string rhs ", "))
|
||||||
|
(stack))
|
||||||
|
(dolist (word words)
|
||||||
|
(when (wordnet-check word)
|
||||||
|
(message "wordnet finds: %s" word)
|
||||||
|
(push word stack))))))))))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
#+caption[Word games]:
|
#+caption[Word games]:
|
||||||
#+caption: Word games.
|
#+caption: Word games.
|
||||||
#+name: lst:word-games
|
#+name: lst:word-games
|
||||||
|
Loading…
Reference in New Issue
Block a user