ing Fireball|http://daringfireball.net/archive>), and syndication documents in Atom and L<JSON Feed|http://jsonfeed.org> formats. All these are constructed from simple, customizable templates.
That's
ge. It will also appear in the recent-posts sidebar of every other entry, as well as the Atom and JSON Feed documents (unless you decided to manually backdate the entry by specifying your own date att
r $subdir or die "Can't create subdir $subdir: $!";
}
foreach ( qw( archive atom jsonfeed post wrapper tags ) ) {
my $template = Path::Class::File->new(
$d
>
EOF
jsonfeed => <<EOF,
{
"version": "https://jsonfeed.org/version/1",
"title": "[% plerd.title %]",
"home_page_url": "[% plerd.base_uri %]",
"feed_url": "[% plerd.base_uri %]/feed.json",
"
his site in any feed reader that supports the JSON Feed format. To add this feed to your reader, copy the following URL — [% plerd.base_uri %]/feed.json — and add it your reader.",
"author": {
Moose;
use Path::Class::Dir;
use Data::GUID;
use Web::Mention;
use Scalar::Util qw(blessed);
use JSON;
use Try::Tiny;
use Carp qw(croak);
use Readonly;
Readonly my $DEFAULT_DIR_NAME => 'webmention_i
) && $wm->isa( "Web::Mention" ) ) {
croak "Not a Web::Mention object!";
}
my $json = JSON->new->convert_blessed->encode( $wm );
my $file = Path::Class::File->new(
$self->
rectory->children(no_hidden=>1) ) {
try {
push @wms, Web::Mention->FROM_JSON( decode_json( $file->slurp(iomode => '<:encoding(UTF-8)')) );
}
catch {
die "Failed to de
w( markdown );
use URI;
use HTML::Strip;
use Data::GUID;
use HTML::SocialMeta;
use Try::Tiny;
use JSON;
use Path::Class::File;
use Plerd::SmartyPants;
use Web::Mention;
use Readonly;
Readonly my $WP
words-per-minute reading speed to assume
Readonly my $WEBMENTIONS_STORE_FILENAME => 'webmentions.json';
has 'plerd' => (
is => 'ro',
required => 1,
isa => 'Plerd',
weak_ref => 1,
);
handles => {
mention_count => 'count',
},);
has 'json' => (
is => 'ro',
isa => 'JSON',
default => sub { JSON->new->convert_blessed },
);
sub _build_publication_file {
template_file' => (
is => 'ro',
isa => 'Path::Class::File',
lazy_build => 1,
);
has 'jsonfeed_template_file' => (
is => 'ro',
isa => 'Path::Class::File',
lazy_build => 1,
);
has 'rss_file' => (
is => 'ro',
isa => 'Path::Class::File',
lazy_build => 1,
);
has 'jsonfeed_file' => (
is => 'ro',
isa => 'Path::Class::File',
lazy_build => 1,
);
has 'rece
publish_archive_page;
$self->publish_recent_page;
$self->publish_rss;
$self->publish_jsonfeed;
$self->clear_recent_posts;
$self->clear_posts;
$self->clear_post_index_hash;