aboutsummaryrefslogtreecommitdiffstats
path: root/checkspelling.sh
diff options
context:
space:
mode:
authorWaylan Limberg <waylan.limberg@icloud.com>2015-02-07 14:28:42 -0500
committerWaylan Limberg <waylan.limberg@icloud.com>2015-02-07 14:28:42 -0500
commit32df5ad916626b0ddd6f0d980f350c6485f23867 (patch)
tree0f5539243138abd0a77bda9a234885c45836ad04 /checkspelling.sh
parent93dad08ca9967d75e5bb2b2e6e6301a98b900bfd (diff)
downloadmarkdown-32df5ad916626b0ddd6f0d980f350c6485f23867.tar.gz
markdown-32df5ad916626b0ddd6f0d980f350c6485f23867.tar.bz2
markdown-32df5ad916626b0ddd6f0d980f350c6485f23867.zip
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 `<code>` 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
Diffstat (limited to 'checkspelling.sh')
-rwxr-xr-xcheckspelling.sh32
1 files changed, 32 insertions, 0 deletions
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