Skip to content

Commit 2d9d65c

Browse files
committed
atom feed 微調整
1 parent 43f4c47 commit 2d9d65c

File tree

1 file changed

+27
-26
lines changed

1 file changed

+27
-26
lines changed

lib/PerlUsersJP/Builder.pm

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -146,20 +146,6 @@ sub entry_url {
146146
return "https://perl-users.jp" . $self->entry_url_path($src);
147147
}
148148

149-
sub entry_updated {
150-
my ($self, $src) = @_;
151-
return Date::Format::time2str('%a, %d %b %Y %H:%M:%S %z', $src->stat->mtime);
152-
}
153-
154-
sub entry_published {
155-
my ($self, $src) = @_;
156-
157-
# FIXME
158-
#my $matter = $self->front_matter($src);
159-
#$matter->date
160-
return Date::Format::time2str('%a, %d %b %Y %H:%M:%S %z', $src->stat->mtime);
161-
}
162-
163149
sub entry_text {
164150
my ($self, $src) = @_;
165151
my $matter = $self->front_matter($src);
@@ -336,17 +322,35 @@ sub build_sitemap {
336322
... # TODO
337323
}
338324

325+
my $ATOM_FEED_COUNT = 10;
326+
my $ATOM_DATE_FORMAT = '%Y-%m-%dT%H:%M:%S%z';
327+
339328
sub build_atom_feed {
340329
my ($self, $src_list) = @_;
341330

342331
my $feed = XML::Atom::Feed->new;
343332
$feed->title('新着記事 - Perl Users JP');
344333
$feed->id('tag:perl-users.jp,2020:/feed');
345-
#$feed->description('Perl Users JPの新着記事');
346-
$feed->link('https://perl-users.jp');
334+
$feed->lang('ja-JP');
335+
336+
{ # link alternate
337+
my $link = XML::Atom::Link->new;
338+
$link->type('text/html');
339+
$link->rel('alternate');
340+
$link->href('https://perl-users.jp');
341+
$feed->add_link($link);
342+
}
343+
344+
{ # link self
345+
my $link = XML::Atom::Link->new;
346+
$link->type('application/atom+xml');
347+
$link->rel('self');
348+
$link->href('https://perl-users.jp/feed.atom');
349+
$feed->add_link($link);
350+
}
347351

348352
my @sorted = sort { $b->stat->mtime <=> $a->stat->mtime } $src_list->@*;
349-
my @new_src_list = splice @sorted, 0, 10;
353+
my @new_src_list = splice @sorted, 0, $ATOM_FEED_COUNT;
350354
for my $src (@new_src_list) {
351355
my $entry = XML::Atom::Entry->new;
352356

@@ -355,8 +359,8 @@ sub build_atom_feed {
355359

356360
$entry->title($matter->title);
357361
$entry->id("tag:perl-users.jp,2020:$path");
358-
$entry->updated($self->entry_updated($src)); # TODO: format
359-
$entry->published($self->entry_published($src)); # TODO: format
362+
$entry->updated(Date::Format::time2str($ATOM_DATE_FORMAT, $src->stat->mtime));
363+
#$entry->published(Date::Format::time2str($ATOM_DATE_FORMAT, $src->stat->mtime)); # FIXME mtime
360364
$entry->content(
361365
$self->entry_text($src)
362366
);
@@ -365,26 +369,23 @@ sub build_atom_feed {
365369
$author->name($matter->author);
366370
$entry->author($author);
367371

368-
my $url = $self->entry_url($src);
369-
#$entry->url($url);
370-
371372
my $link = XML::Atom::Link->new;
372373
$link->type('text/html');
373374
$link->rel('alternate');
374-
$link->href($url);
375-
375+
$link->href($self->entry_url($src));
376+
376377
$feed->add_entry($entry);
377378
}
378379

379380
my $first_src = $new_src_list[0];
380-
$feed->updated($self->entry_updated($first_src));
381+
$feed->updated(Date::Format::time2str($ATOM_DATE_FORMAT, $first_src->stat->mtime));
381382

382383
my $xml = $feed->as_xml;
383384

384385
my $atom_dir = $self->public_dir->child();
385386
my $dest = $atom_dir->child('feed.atom');
386387
$atom_dir->mkpath unless $atom_dir->is_dir;
387-
$dest->spew_utf8($xml);
388+
$dest->spew($xml);
388389
$self->diag("Created atom $dest\n");
389390
}
390391

0 commit comments

Comments
 (0)