Bot-Backbone-Service-Ticket
view release on metacpan or search on metacpan
lib/Bot/Backbone/Service/Ticket/Tracker.pm view on Meta::CPAN
package Bot::Backbone::Service::Ticket::Tracker;
$Bot::Backbone::Service::Ticket::Tracker::VERSION = '0.160490';
use v5.10;
use Moose::Role;
use String::Errf qw( errf );
use Try::Tiny;
# ABSTRACT: role implemented by ticket lookup whatsits
has title => (
is => 'ro',
isa => 'Str',
required => 1,
);
has link => (
is => 'ro',
isa => 'Str',
predicate => 'has_link',
);
has patterns => (
is => 'ro',
isa => 'ArrayRef[RegexpRef]',
required => 1,
);
requires 'lookup_issue';
sub titles_for_string {
my ($self, $string) = @_;
my @titles;
for my $pattern (@{ $self->patterns }) {
while ($string =~ /$pattern/g) {
my $issue = $+{issue};
my $scheme = $+{scheme};
my $title = $self->issue_title($issue, !defined($scheme));
push @titles, $title if defined $title;
}
}
return @titles;
}
sub issue_title {
my ($self, $number, $show_url) = @_;
my $result;
try {
my $issue = $self->lookup_issue($number);
$result = errf($self->title, $issue);
$result .= $self->issue_link($issue)
if $show_url and $self->has_link;
}
catch {
warn "Ticket $number not found: " . $_;
};
( run in 0.826 second using v1.01-cache-2.11-cpan-39bf76dae61 )