Mi finfaris la kreilon por dict-vortaro.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/LEGUMIN Sat Mar 17 02:40:40 2007 +0100
@@ -0,0 +1,11 @@
+Paŝoj por konstrui la dict-vortaron:
+
+1. Rekodigu ĉiujn html-dosierojn al utf-8/uniksaj linioŝanĝoj:
+ Ekz: ./encoding.sh DeDiego/html html-reencoded
+2. Ŝanĝu la variablojn de la Makefile por ke ĝi trovu viajn HTML dosierojn. (la
+ novajn en html-reencoded, laŭ la antaŭa ekzemplo)
+3. Ruligu na "make".
+
+Post tio, vi ŝajne povas kopii viajn de-diego.dict.dz kaj de-diego.index al via
+dict-dosierujo (kutime /usr/lib/dict), meti ilin en via dictd.conf dosiero, kaj
+vi jam povas reŝalti la dict-servilon (dictd).
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Makefile Sat Mar 17 02:40:40 2007 +0100
@@ -0,0 +1,12 @@
+HTMLDIR?=html-reencoded
+
+BASE=de-diego
+
+$(BASE).dict.dz: $(BASE).dict
+ dictzip $(BASE).dict
+
+$(BASE).dict: $(BASE).txt
+ dictfmt -j $(BASE) --locale="es_ES.UTF-8" -s "Gran Diccionario Español-Esperanto de Fernando de Diego" -u "http://www.esperanto-es.net/diccionario/" --without-info < $(BASE).txt
+
+$(BASE).txt: vortaro.pl
+ ./vortaro.pl $(HTMLDIR) > $(BASE).txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/encoding.sh Sat Mar 17 02:40:40 2007 +0100
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+# Tio ĉi prenas la originalajn dosierojn kaj ilin rekodigas al UTF-8 kaj
+# al uniksa liniofina stilo.
+
+
+if [ $# -ne 2 ] ; then
+ echo usage: $0 ORIGIN DEST
+ exit 1
+fi
+
+ORIGINDIR=$1
+DESTDIR=$2
+
+mkdir -p $DESTDIR
+
+for a in `seq 1 60000`; do
+ echo -n "$a ";
+ ORIGIN=$ORIGINDIR/diego$a.html
+ DEST=$DESTDIR/diego$a.html
+ if [ ! -f $ORIGIN ]; then
+ break ;
+ fi;
+
+ cat $ORIGIN | dos2unix | recode latin1..utf-8 > $DEST
+done
--- a/vortaro.pl Wed Mar 14 14:37:48 2007 +0100
+++ b/vortaro.pl Sat Mar 17 02:40:40 2007 +0100
@@ -2,10 +2,12 @@
use utf8;
-$maks_vortoj = 1;
+binmode STDOUT, ":utf8";
-$celdosierujo = "prova";
-if ($#ARGV != 1) {
+$unua_vortonumero = 2;
+$lasta_vortonumero = 50925;
+
+if (scalar(@ARGV) != 1) {
print "Unua parametro: dosierujo de la html dosieroj\n";
exit;
}
@@ -14,15 +16,41 @@
# States
$s_komenco = 0;
$s_nomo = 1;
-$s_antauxdifinoj = 1;
-$s_difinoj = 1;
+$s_antaŭdifinoj = 2;
+$s_difinoj = 3;
+$s_fino = 4;
+
+sub elhtmligi {
+ $ĉeno = $_[0];
+
+ $ĉeno =~ s/<u><i><b>/[/g;
+ $ĉeno =~ s/<\/b><\/i><\/u>/]/g;
+
+ $ĉeno =~ s/ĉ/ĉ/g;
+
+ $ĉeno =~ s/ĉ/ĉ/g;
+ $ĉeno =~ s/ĝ/ĝ/g;
+ $ĉeno =~ s/ĥ/ĥ/g;
+ $ĉeno =~ s/ĵ/ĵ/g;
+ $ĉeno =~ s/ŝ/ŝ/g;
+ $ĉeno =~ s/ŭ/ŭ/g;
+
+ $ĉeno =~ s/Ĉ/Ĉ/g;
+ $ĉeno =~ s/Ĝ/Ĝ/g;
+ $ĉeno =~ s/Ĥ/Ĥ/g;
+ $ĉeno =~ s/Ĵ/Ĵ/g;
+ $ĉeno =~ s/Ŝ/Ŝ/g;
+ $ĉeno =~ s/Ţ/Ŭ/g;
+
+ return $ĉeno;
+}
sub procezi_dosieron {
my $nomo = $_[0];
my $stato = $s_komenco;
my $linio;
- open $dosiero, $nomo or die "DIED: File not found";
+ open ($dosiero, "<:utf8", $nomo) or die "DIED: File not found";
while(<$dosiero>) {
$linio = $_;
@@ -30,12 +58,34 @@
if ($linio eq
"<table cellpadding=\"2\" cellspacing=\"2\">\n") {
$stato = $s_nomo;
- print "Statosxangxo!";
}
} elsif ($stato == $s_nomo) {
- $stato = $s_antauxdifinoj;
+ $linio =~ /font [^>]*>([^<]+)<\/b><\/td><\/tr>/;
+ # Ni skribas la kapvorton
+ print ":" . $1 . ":";
+ $stato = $s_antaŭdifinoj;
+ } elsif ($stato == $s_antaŭdifinoj) {
+ if ($linio eq
+ "<table cellpadding=\"1\" cellspacing=\"2\">\n") {
+ $stato = $s_difinoj;
+ }
+ } elsif ($stato == $s_difinoj) {
+ if ($linio eq "</table>\n") {
+ $stato = $s_fino;
+ last;
+ }
+ if ($linio =~ /^\t<tr>.*font size=\"1\"><i>([0-9]+).*size=\"2\">(.*)<\/td><\/tr>\n/) {
+ # Ni skribas la linion de difino/traduko
+ print $1 . ". " . elhtmligi($2) . "\n";
+ }
}
}
+
+ if ($stato != $s_fino && $stato != $s_komenco) {
+ die;
+ }
+
+ close $dosiero;
}
sub krei_dosiernomon {
@@ -43,9 +93,8 @@
return "$origino/diego$num.html";
}
-for $i (1 .. $maks_vortoj) {
+for $i ($unua_vortonumero .. $lasta_vortonumero) {
$nomo = krei_dosiernomon($i);
- print $nomo
procezi_dosieron($nomo);
}