diff --git a/lib/Atom.rakumod b/lib/Atom.rakumod index caee5d8..2091440 100644 --- a/lib/Atom.rakumod +++ b/lib/Atom.rakumod @@ -2,25 +2,15 @@ use v6.e.PREVIEW; use DB::Post; use DB::BlogMeta; +use Render::Util; use XML; unit module Atom; -# get the link for a post -sub post-link(BlogMeta:D $meta, Int:D $id, Post:D $post --> Str:D) { - my @slugs = $post.all-slugs; - my $base = $meta.get-base-url; - if @slugs.elems { - "$base/posts/by-slug/{@slugs[*-1]}.html" - } else { - "$base/posts/by-id/$id.html" - } -} - #| Convert a single post to an atom item sub post-to-item(BlogMeta:D $meta, Int:D $id, Post:D $post --> XML::Element) { - my $link = post-link $meta, $id, $post; + my $link = post-link-abs $meta, $id, $post; my $desc = $post.description; my $xml = XML::Element.new(:name); $xml.append: diff --git a/lib/Config.rakumod b/lib/Config.rakumod index 9a7ec07..9938f15 100644 --- a/lib/Config.rakumod +++ b/lib/Config.rakumod @@ -13,7 +13,18 @@ unit class Config; method generate-post(Int:D $id, Post:D $post, $db) { my $meta = $db.meta; my $content = $post.render-html; - my $head = generate-head($meta, $post.title, $post.description); + my $head = + head [ + generate-head($meta, $post.title, $post.description); + meta :property, :content($post.title); + meta :property, :content(post-link-abs $db.meta, $id, $post); + meta :property, :content($db.meta.title); + meta :property, :content
; + meta :property, :content($post.posted-at); + $post.tags.map(-> $tag { + meta :property, :content($tag) + }); + ]; my $body = body [ site-header $meta; @@ -45,7 +56,7 @@ method generate-index($db) { generate-blurb $pair.key, $db }); - my $head = generate-head($db.meta); + my $head = head [generate-head($db.meta);]; my $body = body [ site-header $db.meta; div :class, [ @@ -70,7 +81,7 @@ method generate-archive($db) { generate-blurb $pair.key, $db }); - my $head = generate-head($db.meta); + my $head = head [generate-head($db.meta);]; my $body = body [ site-header $db.meta; div :class, [ @@ -128,7 +139,7 @@ method generate-tag-blurb($db, $tag, $limit?) { } method generate-tags-page($db, @tags) { - my $head = generate-head($db.meta); + my $head = head [generate-head($db.meta);]; my $body = body [ site-header $db.meta; div :class, [ @@ -146,7 +157,7 @@ method generate-tags-page($db, @tags) { } method generate-tag-page($db, $tag) { - my $head = generate-head($db.meta); + my $head = head [generate-head($db.meta);]; my $body = body [ site-header $db.meta; self.generate-tag-blurb($db, $tag, 4); diff --git a/lib/Render/Head.rakumod b/lib/Render/Head.rakumod index 22fa4ee..3dde02a 100644 --- a/lib/Render/Head.rakumod +++ b/lib/Render/Head.rakumod @@ -7,17 +7,18 @@ use Render::Util; use DB::BlogMeta; sub generate-head(BlogMeta:D $meta, $title?, $description?) is export { - head [ + my $final-title = do if $title ~~ Str:D { + "$title — {$meta.title}" + } else { + $meta.title + }; + [ meta :charset; meta :name, :content; meta :author :content; - do if $title ~~ Str:D { - title "$title — {$meta.title}"; - } else { - title $meta.title; - } + title $final-title; # Add description, if one exists - optl $description ~~ Str:D, -> {meta :description :content($description)}; + optl $description ~~ Str:D, -> {meta :description :content(^ $description)}; # Preconnect to all our resource sources link :rel :href; link :rel :href; diff --git a/lib/Render/Series.rakumod b/lib/Render/Series.rakumod index 1b2ebc8..f0b2adf 100644 --- a/lib/Render/Series.rakumod +++ b/lib/Render/Series.rakumod @@ -85,7 +85,7 @@ sub series-header(Series:D $series, $db) is export { sub series-page(Int:D $series-id, $db) is export { my $meta = $db.meta; my $series = $db.series{$series-id}; - my $head = generate-head($meta, $series.title, $series.desc); + my $head = head [generate-head($meta, $series.title, $series.desc);]; my $body = body [ site-header $meta; @@ -127,7 +127,7 @@ sub series-list-page($db) is export { series-blurb $id, $series, $db; } - my $head = generate-head($db.meta); + my $head = head [generate-head($db.meta);]; my $body = body [ site-header $db.meta; div :class, [ diff --git a/lib/Render/Util.rakumod b/lib/Render/Util.rakumod index 1dca304..4a94800 100644 --- a/lib/Render/Util.rakumod +++ b/lib/Render/Util.rakumod @@ -2,6 +2,7 @@ use v6.e.PREVIEW; unit module Render::Util; use DB::Post; +use DB::BlogMeta; use HTML::Functional; @@ -68,3 +69,14 @@ sub intersperse (\element, +list) is export { take slip element, $_; } } + +# get the link for a post +sub post-link-abs(BlogMeta:D $meta, Int:D $id, Post:D $post --> Str:D) is export { + my @slugs = $post.all-slugs; + my $base = $meta.get-base-url; + if @slugs.elems { + "$base/posts/by-slug/{@slugs[*-1]}.html" + } else { + "$base/posts/by-id/$id.html" + } +}