However, if you don't like RebGUI, there are a lot of open source programs that can be used. The most famous are Ispell and Aspell. You can use these programs to check spelling texts with Rebol.
I'll show you Aspell, that is more recent, but you can use any software.
First of all download Aspell for your platform from here:
ftp.gnu.org/gnu/aspell/w32/
and install also the dictionaries of your languages.
Then we need a phrase as example:
"Hello, this is Carl; a great warrrior!"
There is an error on warrrior, now let's try with Rebol:
a: "Hello, this is Carl; a great warrrior!"
we should split the original sentences in single words, and is very easy with Rebol:
>> b: parse a none
== ["Hello" "this" "is" "Carl" "a" "great" "warrrior!"]
Now we use Aspell and we create a file were every line is a word checked. If a line starts with *,the word is OK; else the line starts with a &, the word is misspelled and Aspeel gives the suggested word.
call/input " c:\Programmi\Aspell\bin\aspell.exe -a --lang=en > ./spellout.txt " a
The spellout file will be:
@(#) International Ispell Version 3.1.20 (but really Aspell 0.50.3)
*
*
*
*
*
*
& warrrior 10 30: warrior, warriors, warier, worrier, wearier, waterier, warrior's, wartier, wearer, barrio
Now let's show to the user that he misspelled some word:
c: read/lines %spellout.txt
foreach word b [
c: next c ; so we skip the first line with Aspell copyright
if (first c/1) = #"&" [ alert reform ["You misspelled:" word]]
]
This are the basis of spell-checking. If you want to see something better let's see this example:
view layout [
a: area
text "English spellcheck"
button "Spellcheck" [
call/input " c:\Programmi\Aspell\bin\aspell.exe -a --lang=en > ./spellout.txt " a/text
b: parse a/text none
c: read/lines %spellout.txt
temp: copy a/text
foreach word b [
temp: copy (find/case temp word); so we traverse the text
c: next c ; so we skip the first line with Aspell copyright
if (first c/1) = #"&" [
temp2: copy/part (find/case/tail temp word) 50
view/new/title layout [
across
text bold red word
text 200 temp2
return
box black 200x2
return
text 200 reform ["Suggest words" (find c/1 ":")]
] "Spellcheck"
]]]]
It's just a simple example in 10 lines of code, but here is the result:
No comments:
Post a Comment