urban module: improve showing of number of entries

This commit is contained in:
Pragmatic Software 2017-05-14 01:39:02 -07:00
parent 5bc65c9f67
commit f120959935
1 changed files with 16 additions and 11 deletions

View File

@ -55,19 +55,15 @@ my $num_entries = @entries;
if ($num_entries == 0) { if ($num_entries == 0) {
print "$args: no definition found.\n"; print "$args: no definition found.\n";
exit; exit;
} else {
if ($num_entries > 1) {
if (defined $entry) {
print "$entry/$num_entries:\n";
} else {
print "1/$num_entries:\n";
}
}
} }
if (defined $entry) { if (defined $entry) {
if ($entry < 1 or $entry > $num_entries) { if ($entry < 1 or $entry > $num_entries) {
print "No such entry. There are $num_entries for $args.\n"; if ($num_entries == 1) {
print "There is only one entry for $args.\n";
} else {
print "$args: no such entry. There are $num_entries entries.\n";
}
exit; exit;
} }
$entry--; $entry--;
@ -75,6 +71,13 @@ if (defined $entry) {
sub show_definition { sub show_definition {
my $entry = shift; my $entry = shift;
my $num = shift;
$num = 1 if not defined $num;
if ($num_entries > 1) {
print "$num/$num_entries: ";
}
print "($entry->{'thumbs_up'}/$entry->{'thumbs_down'}) $entry->{'definition'}\n"; print "($entry->{'thumbs_up'}/$entry->{'thumbs_down'}) $entry->{'definition'}\n";
print "$entry->{'example'}\n" if $entry->{'example'}; print "$entry->{'example'}\n" if $entry->{'example'};
@ -83,12 +86,14 @@ sub show_definition {
if (defined $show_all or defined $match) { if (defined $show_all or defined $match) {
my $shown; my $shown;
eval { eval {
my $n = 0;
for my $each (@entries) { for my $each (@entries) {
$n++;
if (defined $match) { if (defined $match) {
my $def = $each->{'definition'} . "\n" . $each->{'example'}; my $def = $each->{'definition'} . "\n" . $each->{'example'};
next if $def !~ m/$match/im; next if $def !~ m/$match/im;
} }
show_definition($each); show_definition($each, $n);
print "\n"; print "\n";
$shown++; $shown++;
} }
@ -107,5 +112,5 @@ if (defined $show_all or defined $match) {
print "$args: no definition matching '$match' found.\n"; print "$args: no definition matching '$match' found.\n";
} }
} else { } else {
show_definition($entries[$entry]); show_definition($entries[$entry], $entry + 1);
} }