<%shared> our $titlestr; <%method title> Lojban XML Dictionary Generation <%init> $r->content_type('application/xml; charset=utf-8'); our($dbh); use File::Temp qw{ tempfile tempdir }; use POSIX; use Data::Dumper; <%args> $lang => undef <%perl> our $unofficialwarning = 'unofficial="true" '; my $langrealname = $dbh->selectrow_array("SELECT realname FROM languages WHERE tag=?", undef, $lang); my $langid = $dbh->selectrow_array("SELECT langId FROM languages WHERE tag=?", undef, $lang); #print Dumper( $valsibestguesses ); my $lojbanToNatLang; my @lojbanToNatLangEntries; my $natLangToLojban; my @natLangToLojbanEntries; print qq{\n}; print qq{\n}; print qq{}; # Get the valsi best guesses list. my $valsiquery = $dbh->prepare("SELECT v.word, vbg.* from valsibestguesses vbg, valsi v WHERE vbg.langid=$langid AND v.valsiid=vbg.valsiid ORDER BY v.word"); $valsiquery->execute; # Print the lojban -> foo section while(defined(my $valsirow=$valsiquery->fetchrow_hashref)) { my $convenientDefinition = $dbh->selectrow_hashref("SELECT * FROM convenientdefinitions WHERE definitionid=${$valsirow}{'definitionid'}" ); my $valsitype = $dbh->selectrow_array("SELECT descriptor FROM valsi v, definitions d, valsitypes vt WHERE v.valsiid = d.valsiid AND d.definitionid = ${$valsirow}{'definitionid'} AND v.typeid=vt.typeid"); my $entry .= "\n\n"; } $entry .= "" . massage("${$convenientDefinition}{'definition'}") . ""; if( ${$convenientDefinition}{'notes'} ) { $entry .= "". massage(${$convenientDefinition}{'notes'}) .""; } # Close the entry $entry .= ""; #push @lojbanToNatLangEntries, $entry; print $entry; } #print $lojbanToNatLang; print qq{}; print qq{}; $valsiquery->execute; # Print the foo -> lojban section while(defined(my $valsirow=$valsiquery->fetchrow_hashref)) { #print Dumper( $valsirow ); my $nlwbg = $dbh->selectall_hashref("SELECT nlw.word, nlw.meaning, nlwbg.* from natlangwordbestguesses nlwbg, natlangwords nlw WHERE definitionid=${$valsirow}{'definitionid'} AND nlwbg.natlangwordid = nlw.wordid ORDER BY nlw.word", "word" ); #print Dumper( $nlwbg ); foreach my $nlwbgrow (values %{$nlwbg} ) { my $entry .= "\n\nselectrow_array("SELECT word FROM valsi v, definitions d WHERE v.valsiid = d.valsiid AND d.definitionid = ${$nlwbgrow}{'definitionid'}"); $entry .= " valsi=\"" . massage($defvalsi) . "\""; if( ${$nlwbgrow}{'place'} > 0 ) { $entry .= " place=\"${$nlwbgrow}{'place'}\""; } # Close the entry $entry .= " />"; #push @natLangToLojbanEntries, $entry; #print Dumper( $nlwbgrow ); print $entry; } } sub dictcollate { my $to_be_ignored = $unofficialwarning; my $temp_a = $a; my $temp_b = $b; $temp_a =~ s/\Q$to_be_ignored\E//; $temp_b =~ s/\Q$to_be_ignored\E//; lc($temp_a) cmp lc($temp_b); } #$lojbanToNatLang = join('', sort dictcollate @lojbanToNatLangEntries); #$natLangToLojban = join('', sort dictcollate @natLangToLojbanEntries); #print $natLangToLojban; print qq{}; print qq{\n}; sub massage { my $input=shift(@_); $input =~ s/\&/\&/g; $input =~ s//\>/g; return $input; }