bin: add modified dictcc-helper.pl
This commit is contained in:
parent
0aeb5bcd4c
commit
d1a7740102
|
@ -0,0 +1,79 @@
|
||||||
|
#! /usr/bin/perl
|
||||||
|
|
||||||
|
# before you start: download dictionary file from dict.cc an rename it as wb.txt
|
||||||
|
# put it in the same directory as this script.
|
||||||
|
# ensure that it's encoding is the same as your systems!
|
||||||
|
|
||||||
|
# by matthias.bloch at puffin dot ch
|
||||||
|
|
||||||
|
# because the code is in German I wrote some comments in English :-)
|
||||||
|
|
||||||
|
open (LISTE, "dict.txt") or die "can't load dictionary: $!";
|
||||||
|
@woerterbuch= <LISTE>;
|
||||||
|
close LISTE;
|
||||||
|
|
||||||
|
# replace all ß by ss. German users may want to comment this line out. :-)
|
||||||
|
#$_ =~ s/ß/ss/ foreach (@woerterbuch);
|
||||||
|
|
||||||
|
$hits_per_page = 15;
|
||||||
|
$pad="true";
|
||||||
|
|
||||||
|
while (1){
|
||||||
|
if (length($next_input)==0 || $next_input =~ /^n$/i) {
|
||||||
|
%treffer = undef;
|
||||||
|
$laengstes = 0;
|
||||||
|
print "\n\nWelches Wort suchen? "; # Search which word?
|
||||||
|
$input = <STDIN>;
|
||||||
|
} else {
|
||||||
|
$input = $next_input;
|
||||||
|
}
|
||||||
|
undef $next_input;
|
||||||
|
chomp ($input);
|
||||||
|
if(length($input) == 0) {
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
print "*"x(21+length($input));
|
||||||
|
print "\n\n";
|
||||||
|
|
||||||
|
foreach $e (@woerterbuch) {
|
||||||
|
if ($e =~ /$input/i) {
|
||||||
|
($englisch, $deutsch) = split (/::/, $e); # the dictionary is in the form: english_word::german_word
|
||||||
|
s/\s$//g foreach ($englisch, $deutsch); # remove space
|
||||||
|
$deutsch =~ s/^\s//g;
|
||||||
|
chomp $deutsch;
|
||||||
|
$treffer{$englisch}.=", " if (exists $treffer{$englisch});
|
||||||
|
$treffer{$englisch}.=$deutsch;
|
||||||
|
|
||||||
|
$laengstes = length ($englisch) if ($laengstes < length ($englisch));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$treffer_anzahl = 0;
|
||||||
|
SUCHE:{
|
||||||
|
foreach $match ("^$input\$", "^$input\\S", "^$input\\s", ".+\\s$input", "\\S$input"
|
||||||
|
) {
|
||||||
|
# first it looks for a perfect match, then for a match at the beginning, then a match anywere
|
||||||
|
foreach (sort keys %treffer){
|
||||||
|
if ($_ =~ /$match/i or $treffer{$_} =~ /$match/i){
|
||||||
|
$treffer_anzahl ++;
|
||||||
|
if ($treffer_anzahl > $hits_per_page) {
|
||||||
|
print "weitere Treffer anzeigen? (J / n)"; # ask whether to continue printing after a few matches
|
||||||
|
$next_input = <STDIN>;
|
||||||
|
chomp ($next_input);
|
||||||
|
last SUCHE if ($next_input !~ /^[yj]?$/i);
|
||||||
|
$treffer_anzahl = 0;
|
||||||
|
}
|
||||||
|
treffer_drucken($_)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# print the findings
|
||||||
|
sub treffer_drucken {
|
||||||
|
($erste_spalte = $_) =~ s/($input)/\e[4m$1\e[0m/gi;
|
||||||
|
print $erste_spalte, "\n";
|
||||||
|
}
|
Loading…
Reference in New Issue