diff options
Diffstat (limited to 'lib/Feed/AuthorName.pm')
-rw-r--r-- | lib/Feed/AuthorName.pm | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/Feed/AuthorName.pm b/lib/Feed/AuthorName.pm new file mode 100644 index 0000000..ae883b2 --- /dev/null +++ b/lib/Feed/AuthorName.pm @@ -0,0 +1,30 @@ +package Feed::AuthorName; +use Moose::Role; +use 5.016; +use namespace::autoclean; +use Email::Address; +use Try::Tiny; + +requires 'process_entry'; + +before process_entry => sub { + my ($self,$entry) = @_; + + $self->log->trace('before process_entry - begin'); + + my $author = $entry->author; + + return unless $author && $author =~ /\@/; + + try { + my $address = (Email::Address->parse($author))[0]; + if (my $name = $address->name) { + $entry->author($name); + } + }; + + $self->log->trace('before process_entry - end'); +}; + +1; + |