mirror of
https://github.com/pragma-/pbot.git
synced 2024-12-23 11:12:42 +01:00
Plugin/FuncBuiltin: add maybe-the
function
The `maybe-the` function examines the argument's part-of-speech classification (noun, verb, etc) to determine whether to prepend the word "the".
This commit is contained in:
parent
833c20efbb
commit
3ab4ed0a81
@ -12,6 +12,7 @@ use PBot::Imports;
|
|||||||
|
|
||||||
use PBot::Core::Utils::Indefinite;
|
use PBot::Core::Utils::Indefinite;
|
||||||
|
|
||||||
|
use Lingua::EN::Tagger;
|
||||||
use URI::Escape qw/uri_escape_utf8/;
|
use URI::Escape qw/uri_escape_utf8/;
|
||||||
|
|
||||||
sub initialize {
|
sub initialize {
|
||||||
@ -72,6 +73,16 @@ sub initialize {
|
|||||||
subref => sub { $self->func_ana(@_) }
|
subref => sub { $self->func_ana(@_) }
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
$self->{pbot}->{functions}->register(
|
||||||
|
'maybe-the',
|
||||||
|
{
|
||||||
|
desc => 'prepend "the" in front of text depending on the part-of-speech of the first word in text',
|
||||||
|
usage => 'maybe-the <text>',
|
||||||
|
subref => sub { $self->func_maybe_the(@_) }
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
$self->{tagger} = Lingua::EN::Tagger->new;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub unload {
|
sub unload {
|
||||||
@ -83,6 +94,7 @@ sub unload {
|
|||||||
$self->{pbot}->{functions}->unregister('unquote');
|
$self->{pbot}->{functions}->unregister('unquote');
|
||||||
$self->{pbot}->{functions}->unregister('uri_escape');
|
$self->{pbot}->{functions}->unregister('uri_escape');
|
||||||
$self->{pbot}->{functions}->unregister('ana');
|
$self->{pbot}->{functions}->unregister('ana');
|
||||||
|
$self->{pbot}->{functions}->unregister('maybe-the');
|
||||||
}
|
}
|
||||||
|
|
||||||
sub func_unquote {
|
sub func_unquote {
|
||||||
@ -146,4 +158,24 @@ sub func_ana {
|
|||||||
return $text;
|
return $text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub func_maybe_the {
|
||||||
|
my $self = shift;
|
||||||
|
my $text = "@_";
|
||||||
|
|
||||||
|
my ($word) = $text =~ m/^\s*([^',.; ]+)/;
|
||||||
|
|
||||||
|
# don't prepend "the" if a proper-noun nick follows
|
||||||
|
if ($self->{pbot}->{nicklist}->is_present_any_channel($word)) {
|
||||||
|
return $text;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $tagged = $self->{tagger}->add_tags($word);
|
||||||
|
|
||||||
|
if ($tagged !~ m/^\s*<(?:det|prps?|cd|in|nnp|to|rb|wdt|vbg)>/) {
|
||||||
|
$text = "the $text";
|
||||||
|
}
|
||||||
|
|
||||||
|
return $text;
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
Loading…
Reference in New Issue
Block a user