From 32df5ad916626b0ddd6f0d980f350c6485f23867 Mon Sep 17 00:00:00 2001 From: Waylan Limberg Date: Sat, 7 Feb 2015 14:28:42 -0500 Subject: Add Docs spellchecking Test. Not sure this is the best way to go, but it works. I'm not crazy about running the spellcheck against the built docs, but aspell has a builtin option to easily ignore everything in `` tags which greatly simplfies things. I looked at Doug Hellmans' sphinxcontrib-spelling package which does something similar for Sphinx. However, as Sphinx uses rST and the rST parser outputs a parse tree, Doug is essentially taking that parse tree and running the spellcheck on the appropriate parts (skipping code, etc.). He did a nice [writeup][5] of his development process if you are interested. As Python-Markdown's parse tree is represented as HTML (through ElementTree) I would have to use HTML anyway. And [PyEnchant][2] doesn't currently have good support for HTML. So I used [aspell][3], with inspiration from the [git-spell-check][4] hook. [1]: http://sphinxcontrib-spelling.readthedocs.org/en/latest/index.html [2]: https://pythonhosted.org/pyenchant/ [3]: http://aspell.net/ [4]: https://github.com/mprpic/git-spell-check [5]: http://doughellmann.com/2011/05/26/creating-a-spelling-checker-for-restructuredtext-documents.html --- checkspelling.sh | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100755 checkspelling.sh (limited to 'checkspelling.sh') diff --git a/checkspelling.sh b/checkspelling.sh new file mode 100755 index 0000000..4ae20cc --- /dev/null +++ b/checkspelling.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +echo "Building docs..." +python setup.py --quiet build_docs --force +echo "Compiling Dictionary..." +aspell --lang=en create master ./tmp <.spell-dict +echo "Checking spelling...\n" + +let "fails=0" + +for file in $(find build/docs/ -type f -name "*.html"); do + words=$(aspell list --lang=en --mode=html --add-html-skip=code --extra-dicts=./tmp <$file) + if [ "$words" ]; then + uniquewords=$(tr ' ' '\n' <<< "${words[@]}" | sort -u | tr '\n' ' ') + let "fails++" + echo "Misspelled words in '$file':" + echo "-----------------------------------------------------------------" + for word in ${uniquewords[@]}; do + echo $word + done + echo "-----------------------------------------------------------------" + fi +done +rm -f ./tmp +rm -rf build + +if [ $fails -gt 0 ]; then + echo "$fails files with misspelled words." + exit 1 +else + exit 0 +fi -- cgit v1.2.3