version 1.5, 2004/07/23 19:47:57
|
version 1.6, 2004/07/27 23:35:34
|
Line 37 use HTML::LCParser;
|
Line 37 use HTML::LCParser;
|
use strict; |
use strict; |
|
|
my $speller; |
my $speller; |
|
my $insidelink; |
|
|
sub spellcheck_language { |
sub spellcheck_language { |
if ($ENV{'form.lang'}) { return $ENV{'form.lang'}; } |
if ($ENV{'form.lang'}) { return $ENV{'form.lang'}; } |
Line 55 sub textsection {
|
Line 56 sub textsection {
|
my $input=shift; |
my $input=shift; |
my $output=''; |
my $output=''; |
&set_language(); |
&set_language(); |
foreach my $word (split(/\W+/,$input)) { |
foreach my $word (split(/\b/,$input)) { |
if ($speller->check($word)) { |
if (($word=~/\W/) || ($word=~/^(lt|gt|nbsp|amp)$/i) |
$output.=$word.' '; |
|| ($speller->check($word))) { |
|
$output.=$word; |
} else { |
} else { |
my $suggestions=join(' ',$speller->suggest($word)); |
my $suggestions=join(' ',$speller->suggest($word)); |
&Apache::lonnet::logthis($suggestions); |
|
$suggestions=~s/\'/\\\'/gs; |
$suggestions=~s/\'/\\\'/gs; |
if ($suggestions) { |
if (($suggestions) && (!$insidelink)) { |
$output.='<a href="javascript:alert('."'". |
$output.='<a href="javascript:alert('."'". |
$suggestions."');". |
$suggestions."');". |
'">'; |
'">'; |
} |
} |
$output.='<font color="red">'.$word.'</font>'; |
$output.='<font color="red">'.$word.'</font>'; |
if ($suggestions) { $output.='</a>'; } |
if (($suggestions) && (!$insidelink)) { $output.='</a>'; } |
$output.=' '; |
|
} |
} |
} |
} |
return $output; |
return $output; |
Line 80 sub markeduptext {
|
Line 80 sub markeduptext {
|
my $input=shift; |
my $input=shift; |
my $output=''; |
my $output=''; |
my $parser=HTML::LCParser->new(\$input); |
my $parser=HTML::LCParser->new(\$input); |
|
$insidelink=0; |
my $token; |
my $token; |
while ($token=$parser->get_token) { |
while ($token=$parser->get_token) { |
if ($token->[0] eq 'T') { |
if ($token->[0] eq 'T') { |
$output.=&textsection($token->[1]); |
$output.=&textsection($token->[1]); |
} elsif ($token->[0] eq 'S') { |
} elsif ($token->[0] eq 'S') { |
$output.=$token->[4]; |
$output.=$token->[4]; |
if ($token->[1] eq 'm') { |
foreach my $tag ('m','script') { |
$output.=$parser->get_text('/m'); |
if ($token->[1] eq $tag) { |
|
$output.=$parser->get_text('/'.$tag); |
|
} |
|
} |
|
if ($token->[1] eq 'a') { |
|
$insidelink=1; |
} |
} |
} elsif ($token->[0] eq 'E') { |
} elsif ($token->[0] eq 'E') { |
$output.=$token->[2]; |
$output.=$token->[2]; |
|
if ($token->[1] eq 'a') { |
|
$insidelink=0; |
|
} |
} |
} |
} |
} |
|
$insidelink=0; |
return $output; |
return $output; |
} |
} |
|
|
Line 100 sub initspeller {
|
Line 110 sub initspeller {
|
unless (defined($speller)) { |
unless (defined($speller)) { |
$speller = Text::Aspell->new; |
$speller = Text::Aspell->new; |
$speller->set_option('lang','en_US'); |
$speller->set_option('lang','en_US'); |
$speller->set_option('sug-mode','fast'); |
|
} |
} |
|
$insidelink=0; |
} |
} |
|
|
sub handler { |
sub handler { |