Lingua-NATools
view release on metacpan or search on metacpan
cgis/nat-ngrams.cgi view on Meta::CPAN
($name) = keys %$corpora unless $name;
# Create JavaScript combo-box to change corpus being queried
my $s = join("\n",
join("\n", map {
"source[\"$_\"]=\"$corpora->{$_}{source}\";"} keys %$corpora),
join("\n", map {
"target[\"$_\"]=\"$corpora->{$_}{target}\";"} keys %$corpora));
my $JSCRIPT = <<"EOS";
var source = new Array();
var target = new Array();
$s
function changeLanguages() {
var corpus = document.getElementById('crp').value;
document.getElementById('source').innerHTML = source[corpus];
document.getElementById('target').innerHTML = target[corpus];
}
function go(l,c) {
if (parseInt(navigator.appVersion)>=4)
if (navigator.userAgent.indexOf("MSIE")>0) { //IE 4+
var sel=document.selection.createRange();
sel.expand("word");
window.location="nat-dict.cgi?corpus=" + c + "&" + l + "=" + escape(sel.text)
} else // NS4+
window.location="nat-dict.cgi?corpus=" + c + "&" + l + "=" + escape(document.getSelection())
}
function help() {
window.open('nat-search.cgi?HELP=1','NAT-QI Quick Help',
'menubar=no,height=600,width=800,resizable=yes,toolbar=no,location=no,status=no');
}
EOS
print Lingua::NATools::CGI::my_header(jscript => $JSCRIPT);
# Check if we were asked for help
if (param("HELP")) {
print Lingua::NATools::CGI::close_window();
print_help();
print Lingua::NATools::CGI::my_footer();
exit;
}
# Print form HTML
print div({-class=>"hlpbt",
-onclick=>"help()"}, "Help ");
print h1("NAT-QI: NATools Corpora Query Interface");
print start_form({-class=>"main"});
print "<table>\n";
print Tr(td({-rowspan=>'1'},submit("Search")),
td({-colspan=>'2', -style=>"text-align: left"},
"Corpus: ",popup_menu(-onchange=>"changeLanguages();",
-name=>'crp',
-id => 'crp',
-default=>$name,
-values=>[keys %$corpora])));
print Tr(td(["",
"Search on ".
span({id=>"source"}, $corpora->{$name}{source}). " language: ",
textfield("l1")
]));
print Tr(td(["",
"Search on ".
span({id=>"target"}, $corpora->{$name}{target}). " language: ",
textfield("l2"),
]));
print "</table>";
print end_form;
# If we have a corpus, and at least one word in one of the two
# languages, then query the server
if ($crp && (param("l1") || param("l2"))) {
# print the corpus name and a link to the information page
print h1($name);
print "<center>",
a({-style=>"font-size: small;", -href=>"nat-about.cgi?corpus=$crp"},
"meta-information"), "</center>",br;
$server->set_corpus($crp);
if (param("l1")) {
ngrams(param("l1"),"l1",$crp)
}
if (param("l2")) {
ngrams(param("l2"),"l2",$crp)
}
} else {
# if no corpus is selected, and/or no word was passed as parameter,
# print help usage and go out.
print_help();
}
print Lingua::NATools::CGI::my_footer();
sub ngrams {
my ($word, $field, $crp) = @_;
my %r = ();
my $ws =scalar(split(/\s+/,$word));
print "<div style=\"margin-left: 25px; margin-right: 25px;\">";
print h2($word);
my %dir = ();
if ($field eq "l1") {
$dir{direction} = ':>';
} else {
$dir{direction} = '<:';
( run in 0.545 second using v1.01-cache-2.11-cpan-364913b4093 )