@@ -146,20 +146,6 @@ sub entry_url {
146
146
return " https://perl-users.jp" . $self -> entry_url_path($src );
147
147
}
148
148
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
-
163
149
sub entry_text {
164
150
my ($self , $src ) = @_ ;
165
151
my $matter = $self -> front_matter($src );
@@ -336,17 +322,35 @@ sub build_sitemap {
336
322
... # TODO
337
323
}
338
324
325
+ my $ATOM_FEED_COUNT = 10;
326
+ my $ATOM_DATE_FORMAT = ' %Y-%m-%dT%H:%M:%S%z' ;
327
+
339
328
sub build_atom_feed {
340
329
my ($self , $src_list ) = @_ ;
341
330
342
331
my $feed = XML::Atom::Feed-> new;
343
332
$feed -> title(' 新着記事 - Perl Users JP' );
344
333
$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
+ }
347
351
348
352
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 ;
350
354
for my $src (@new_src_list ) {
351
355
my $entry = XML::Atom::Entry-> new;
352
356
@@ -355,8 +359,8 @@ sub build_atom_feed {
355
359
356
360
$entry -> title($matter -> title);
357
361
$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
360
364
$entry -> content(
361
365
$self -> entry_text($src )
362
366
);
@@ -365,26 +369,23 @@ sub build_atom_feed {
365
369
$author -> name($matter -> author);
366
370
$entry -> author($author );
367
371
368
- my $url = $self -> entry_url($src );
369
- # $entry->url($url);
370
-
371
372
my $link = XML::Atom::Link-> new;
372
373
$link -> type(' text/html' );
373
374
$link -> rel(' alternate' );
374
- $link -> href($url );
375
-
375
+ $link -> href($self -> entry_url( $src ) );
376
+
376
377
$feed -> add_entry($entry );
377
378
}
378
379
379
380
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 ));
381
382
382
383
my $xml = $feed -> as_xml;
383
384
384
385
my $atom_dir = $self -> public_dir-> child();
385
386
my $dest = $atom_dir -> child(' feed.atom' );
386
387
$atom_dir -> mkpath unless $atom_dir -> is_dir;
387
- $dest -> spew_utf8 ($xml );
388
+ $dest -> spew ($xml );
388
389
$self -> diag(" Created atom $dest \n " );
389
390
}
390
391
0 commit comments