SpellCheck

DunbarX at aol.com DunbarX at aol.com
Fri Dec 12 15:55:02 EST 2008


Here is a spellchecker of sorts. It will find certain possible valid words
stored in a hidden field "dict", where the misspelled test word either has
one char mistyped, one extra char somewhere, or if the test word is a string
one or two chars shorter than, but contained in a valid word. It is
implemented as a handler for single words. I also used my first pass at
creating a library version of Rinaldi's "fullFind".

I used a scrabble dictionary to populate field "dict", so no word is longer
than 15 chars. This was an old HC project ported over just to get practice
with Rev. I doubt it has any value except for the joy of scripting. Only the
very patient need proceed further...

on mouseUp
   ask "Check which word?"
   put it into toFind
   find whole toFind in fld "dict"
   if the result = "" then exit mouseup --word is correct
   else
      put fld "dict" into dict
     
      --find toFind within possibles up to 2 chars longer
      put revFullFind(dict,toFind,"txt") into subset
      repeat with y = number of lines of subset down to 1
         if abs(the length of line y of subset - the length of toFind) > 2
then delete line y of subset
      end repeat
      put subset into possibles
     
      --find possibles of same length as toFind but with one char incorrect
      put the length of toFind into wordlength
      repeat for each line theLine in dict
         if the length of theline = wordlength then put theline & return
after temp
      end repeat
      repeat for each line thisLine in temp
         put 0 into test
         repeat with y = 1 to the number of chars of thisLine
            if char y of thisLine ‚ char y of toFind then add 1 to test
         end repeat
         if test = 1 then
            put thisLine & return after possibles
         end if
      end repeat
     
      --find possibles where toFind has an extra char
      subtract 1 from wordLength
      repeat for each line theLine in dict
         if the length of theLine = wordLength then put theLine & return
after oneCharLessList
      end repeat
      repeat with y = 1 to number of chars of toFind
         put toFind into temp
         delete char y of temp
         put temp & return after toCheck
      end repeat
      repeat for each line theLine in toCheck

      end repeat
   end if
   answer possibles
end mouseUp

function revFullFind theText,theString,form
   put "" into temp
   put 0 into counter
  
   repeat for each line theline in thetext
      add 1 to counter
      if theString is in theLine then
         if form = "linNum" then
            put counter & return after temp
         else  if form = "txt" then
            put theLine & return after temp
         end if
      end if
   end repeat
   return temp
end revFullFind



**************
Make your life easier with all your friends, email, and 
favorite sites in one place.  Try it now. (http://www.aol.com/?optin=new-dp&
icid=aolcom40vanity&ncid=emlcntaolcom00000010)


More information about the use-livecode mailing list