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 )