Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add convenient scripts to check spelling.
authorArnaud Legrand <arnaud.legrand@imag.fr>
Thu, 22 Aug 2013 11:27:41 +0000 (13:27 +0200)
committerArnaud Legrand <arnaud.legrand@imag.fr>
Thu, 22 Aug 2013 11:27:41 +0000 (13:27 +0200)
I stole them from http://www.kegel.com/kerspell/ and updated them to "modernity" (aspell did not work as expected so I switched to ispell).
Simply sh tools/spell/spell.sh and it will spit a list of dubious words.
Note that it ignores all the dubious words listed in tools/spell/sg_stopwords.txt and that I only checked the A's in there so far.

tools/spell/lspell.pl [new file with mode: 0644]
tools/spell/lspell2.pl [new file with mode: 0644]
tools/spell/sg_stopwords.txt [new file with mode: 0644]
tools/spell/spell.sh [new file with mode: 0644]

diff --git a/tools/spell/lspell.pl b/tools/spell/lspell.pl
new file mode 100644 (file)
index 0000000..ef09839
--- /dev/null
@@ -0,0 +1,49 @@
+# C comment spell checker
+# For each given source file, print the filename, a colon, and the number
+# of misspelled words, then a list of misspelled words.
+# Words contained in the file stopwords.txt are not considered spelling errors.
+# Copyright 2003, Dan Kegel.  Licensed under GPL.  See the file ../COPYING for details.
+sub check_content($) {
+       my $content = shift;
+       $content =~ tr/*/ /;
+       print POUT "$content\n";
+open(STOPFILE, $STOPFILE) || die "can't open stopword file $STOPFILE";
+while (<STOPFILE>) {
+       chomp;
+       $stopped{$_}++;
+foreach $file (@ARGV) {
+       open (FI, $file) || die $file;
+       $content = join ("", <FI>);
+       close (FI);
+       open(POUT, "> $TEMPFILE") || die;
+       $content =~ s!//(.+)$!check_content($1)!egm;
+       $content =~ s!/\*(.+?)\*/!check_content($1)!egs;
+       close(POUT);
+       open(PIN, "ispell -d american -l < $TEMPFILE | sort -uf |") || die;
+       undef @badwords;
+       while (<PIN>) {
+               chomp;
+               if ($stopped{$_} == 0) {
+                       push(@badwords, $_);
+               }
+       }
+       close(PIN) || die;
+       if (@badwords) {
+               print "$file: ".scalar(@badwords)."\n\n";
+               print join(" ",@badwords)."\n\n";
+       }
diff --git a/tools/spell/lspell2.pl b/tools/spell/lspell2.pl
new file mode 100644 (file)
index 0000000..2532575
--- /dev/null
@@ -0,0 +1,50 @@
+# C noncomment spell checker
+# For each given source file, print the filename, a colon, and the number
+# of misspelled words, then a list of misspelled words.
+# Words contained in the file stopwords.txt are not considered spelling errors.
+# Copyright 2003, Dan Kegel.  Licensed under GPL.  See the file ../COPYING for details.
+sub check_content($) {
+       my $content = shift;
+       $content =~ tr/*/ /;
+       print POUT "$content\n";
+open(STOPFILE, $STOPFILE) || die "can't open stopword file $STOPFILE";
+while (<STOPFILE>) {
+       chomp;
+       $stopped{$_}++;
+foreach $file (@ARGV) {
+       open (FI, $file) || die $file;
+       $content = join ("", <FI>);
+       close (FI);
+       open(POUT, "> $TEMPFILE") || die;
+       $content =~ s!//(.+)$! !gm;
+       $content =~ s!/\*(.+?)\*/! !gs;
+       print POUT $content;
+       close(POUT);
+       open(PIN, "ispell -d american -l < $TEMPFILE | sort -uf |") || die;
+       undef @badwords;
+       while (<PIN>) {
+               chomp;
+               if ($stopped{$_} == 0) {
+                       push(@badwords, $_);
+               }
+       }
+       close(PIN) || die;
+       if (@badwords) {
+               print "$file: ".scalar(@badwords)."\n\n";
+               print join(" ",@badwords)."\n\n";
+       }
diff --git a/tools/spell/sg_stopwords.txt b/tools/spell/sg_stopwords.txt
new file mode 100644 (file)
index 0000000..bbb97a5
--- /dev/null
@@ -0,0 +1,5408 @@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@ STOPPED CHECKKING HERE @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
diff --git a/tools/spell/spell.sh b/tools/spell/spell.sh
new file mode 100644 (file)
index 0000000..406d634
--- /dev/null
@@ -0,0 +1 @@
+(find ./ -name '*.[ch]' | xargs perl tools/spell/lspell2.pl tools/spell/sg_stopwords.txt ; find ./ -name '*.[ch]' | xargs perl tools/spell/lspell.pl tools/spell/sg_stopwords.txt ) | grep -v ':' | sort -f | uniq 
\ No newline at end of file