scott%scott-macgregor.org 7222c83634 Bug #307052 --> Spellchecker doesn't display suggestion list for misspelled words in cyrillic based directions.
In addition to fixing the string conversion issue, fix various memory leaks, poor allocation strategies and other problems with this code.

r=mvl
sr=bz


git-svn-id: svn://10.0.0.236/trunk@187001 18797224-902f-48f8-a5cc-f745e15eee43
2006-01-05 19:11:10 +00:00
..
2005-07-25 21:06:44 +00:00

MySpell is a simple spell checker that uses affix 
compression and is modelled after the spell checker
ispell.  

MySpell was written to explore how affix compression 
can be implemented. 

The Main features of MySpell are:

1. written in C++ to make it easier to interface with 
   Pspell, OpenOffice, AbiWord, etc

2. it is stateless, uses no static variables and
   should be completely reentrant with almost no 
   ifdefs  

3. it tries to be as compatible with ispell to
   the extent it can.  It can read slightly modified 
   versions of munched ispell dictionaries (and it 
   comes with a munched english wordlist borrowed from 
   Kevin Atkinson's excellent Aspell.

4. it uses a heavily modified aff file format that
   can be derived from ispell aff files but uses
   the iso-8859-X character sets only
 
5. it is simple with *lots* of comments that 
   describes how the affixes are stored
   and tested for (based on the approach used by 
   ispell).

6. like ispell it has a BSD license (and  no 
   advertising clause)

But ... it has *no* support for adding words
to a personal dictionary, *no* support for converting
between various text encodings, and *no* command line
interface (it is purely meant to be a library).

It can not (in any way) replace all of the functionality
of ispell or aspell/pspell.  It is meant as a learning
tool for understanding affix compression and for 
being used by front ends like OpenOffice, Abiword, etc.

MySpell has been tested under Linux and Solaris
and has the world's simplest Makefile and no 
configure support.

It does come with a simple example program that 
spell checks some words and returns suggestions.

To build a static library and an example
program under Linux simply type:

tar -zxvf myspell.tar.gz
cd myspell
make

To run the example program:
./example ./en_US.aff ./en_US.dic checkme.lst

Please play around with it and let me know
what you think.


Developer Credits:

Special credit and thanks go to ispell's creator Geoff Kuenning.  
Ispell affix compression code was used as the basis for the 
affix code used in MySpell. Specifically Geoff's use of a 
conds[] array that makes it easy to check if the conditions 
required for a particular affix are present was very 
ingenious! Kudos to Geoff.  Very nicely done.  
BTW: ispell is available under a BSD style license 
from Geoff Kuennings ispell website:
http://www.cs.ucla.edu/ficus-members/geoff/ispell.html 


The Original MySpell code was written by Kevin Hendricks
and released under a BSD license.   An almost complete rewrite 
of MySpell for use by the Mozilla project has been developed by
David Einstein (Deinst@world.std.com).  David and I are now 
working on parallel development tracks to help our respective 
projects (Mozilla and OpenOffice.org and we will maintain full 
affix file and dictionary file compatibility and work on merging our
versions of MySpell back into a single tree. David has been 
a significant help in improving MySpell.


Special thanks also go to La'szlo' Ne'meth <nemethl@gyorsposta.hu>
who is the author of the Hungarian dictionary and who
developed and contributed the code to support compound words in 
MySpell and fixed numerous problems with the encoding case conversion 
tables.


Thanks,

Kevin Hendricks
kevin.hendricks@sympatico.ca