From bf238eb4266f4c61291b1816cafb4b322d9103e8 Mon Sep 17 00:00:00 2001 From: dakkar Date: Sun, 9 Dec 2012 14:08:58 +0000 Subject: extract author name for email address --- lib/Feed/AuthorName.pm | 30 ++++++++++++++++++++++++++++++ lib/Feed/Printer.pm | 2 +- 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 lib/Feed/AuthorName.pm (limited to 'lib') 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; + diff --git a/lib/Feed/Printer.pm b/lib/Feed/Printer.pm index 7fd2f65..89dd93f 100644 --- a/lib/Feed/Printer.pm +++ b/lib/Feed/Printer.pm @@ -16,7 +16,7 @@ sub process_entry { $self->log->trace('process_entry - begin'); - for my $f (qw(id title link issued modified)) { + for my $f (qw(id author title link issued modified)) { say " $f:",$entry->$f//''; } say $entry->content->body; -- cgit v1.2.3