2018-07-20 16:45:42 +01:00
|
|
|
{% extends "base.j2.html" %}
|
2019-01-21 16:10:27 +00:00
|
|
|
|
2019-02-07 19:27:15 +00:00
|
|
|
{% block lang %} lang="{{ post.inLanguage }}" {% endblock %}
|
|
|
|
|
|
|
|
{% block title %}{{ post.headline }} - {{ site.name }}{% endblock %}
|
2019-01-31 21:23:16 +00:00
|
|
|
|
2018-07-20 16:45:42 +01:00
|
|
|
{% block meta %}
|
2019-02-07 19:27:15 +00:00
|
|
|
<meta name="description" content="{{ post.description|striptags|e }}" />
|
2018-07-20 16:45:42 +01:00
|
|
|
<link rel="canonical" href="{{ post.url }}" />
|
2019-02-16 00:14:12 +00:00
|
|
|
<link rel="alternate" type="application/json" href="{{ post.url }}index.json" />
|
|
|
|
<link rel="alternate" type="application/ld+json" href="{{ post.url }}index.json" />
|
2019-02-25 22:40:01 +00:00
|
|
|
<link rel="alternate" type="text/plain" href="{{ post.url }}index.txt" />
|
2019-05-28 13:27:34 +01:00
|
|
|
<link rel="alternate" type="application/json+oembed" href="{{ post.url }}oembed.json">
|
|
|
|
<link rel="alternate" type="text/xml+oembed" href="{{ post.url }}oembed.xml">
|
2019-02-07 19:27:15 +00:00
|
|
|
<meta property="og:title" content="{{ post.headline }}" />
|
|
|
|
<meta property="og:type" content="article" />
|
|
|
|
<meta property="og:url" content="{{ post.url }}" />
|
|
|
|
<meta property="og:description" content="{{ post.description|striptags|e }}" />
|
|
|
|
<meta property="article:published_time" content="{{ post.datePublished }}" />
|
|
|
|
<meta property="article:modified_time" content="{{ post.dateModified }}" />
|
|
|
|
<meta property="article:author" content="{{ post.author.name }} ({{ post.author.email}})" />
|
2019-02-25 22:40:01 +00:00
|
|
|
{% if post.image is iterable %}
|
|
|
|
<meta property="og:image" content="{{ post.image[0].url }}" />
|
|
|
|
<meta property="og:image:type" content="{{ post.image[0].encodingFormat }}" />
|
|
|
|
<meta property="og:image:width" content="{{ post.image[0].width }}" />
|
|
|
|
<meta property="og:image:height" content="{{ post.image[0].height }}" />
|
2019-02-07 19:27:15 +00:00
|
|
|
{% else %}
|
|
|
|
<meta property="og:image" content="{{ post.image }}" />
|
|
|
|
{% endif %}
|
2019-02-08 23:32:52 +00:00
|
|
|
|
|
|
|
{% if post['@type'] == 'TechArticle' %}
|
|
|
|
<style media="all">
|
|
|
|
{% include('prism.css') %}
|
|
|
|
</style>
|
|
|
|
{% endif %}
|
2018-08-04 09:30:26 +01:00
|
|
|
{% endblock %}
|
2019-01-21 16:10:27 +00:00
|
|
|
|
2018-08-04 09:30:26 +01:00
|
|
|
{% block prism %}
|
2019-02-07 19:27:15 +00:00
|
|
|
{% if post['@type'] == 'TechArticle' %}
|
2018-08-04 09:30:26 +01:00
|
|
|
<script>
|
2019-02-08 23:32:52 +00:00
|
|
|
{% include('prism.js') %}
|
2018-08-04 09:30:26 +01:00
|
|
|
</script>
|
Back To Pandoc
So, Python Markdown is a bottomless pit of horrors, including crippling parsing bugs,
random out of nowhere, lack of features. It's definitely much faster, than
Pandoc, but Pandoc doesn't go full retard where there's a regex in a fenced code block,
that happens to be a regex for markdown elements.
Also added some ugly post string replacements to make Pandoc fenced code output work
with Prism:
instead of the Pandoc <pre class="codelang"><code>, Prism wants
<pre><code class="language-codelang>, so I added a regex sub, because it's 00:32.
2018-08-04 00:28:55 +01:00
|
|
|
{% endif %}
|
|
|
|
{% endblock %}
|
2019-01-21 16:10:27 +00:00
|
|
|
|
2019-02-16 00:14:12 +00:00
|
|
|
{% block cc %}
|
|
|
|
<li>
|
|
|
|
<a href="{{ post.license }}">
|
|
|
|
<svg width="80" height="15">
|
|
|
|
<use xlink:href="#button-cc"/>
|
|
|
|
</svg>
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
{% endblock %}
|
|
|
|
|
2019-01-21 16:10:27 +00:00
|
|
|
{% block content %}
|
2019-02-07 19:27:15 +00:00
|
|
|
<main>
|
2019-02-08 23:32:52 +00:00
|
|
|
<article class="h-entry hentry" lang="{{ post.inLanguage }}" id="article">
|
2019-01-21 16:10:27 +00:00
|
|
|
<header>
|
2019-02-08 23:32:52 +00:00
|
|
|
<h1 class="p-name entry-title">
|
2019-02-07 19:27:15 +00:00
|
|
|
{% if post.mentions %}
|
2019-01-21 16:10:27 +00:00
|
|
|
<span>
|
|
|
|
<svg width="16" height="16">
|
|
|
|
<use xlink:href="#icon-reply" />
|
|
|
|
</svg>
|
2019-02-16 00:14:12 +00:00
|
|
|
<a href="{{ post.url|relurl(baseurl) }}">
|
2019-01-21 16:10:27 +00:00
|
|
|
RE:
|
|
|
|
</a>
|
2019-02-07 19:27:15 +00:00
|
|
|
<a href="{{ post.mentions.url }}" class="u-in-reply-to">
|
|
|
|
{{ post.mentions.url }}
|
2019-01-21 16:10:27 +00:00
|
|
|
</a>
|
|
|
|
</span>
|
|
|
|
{% else %}
|
2019-02-16 00:14:12 +00:00
|
|
|
<a href="{{ post.url|relurl(baseurl) }}">
|
2019-02-07 19:27:15 +00:00
|
|
|
{{ post.headline }}
|
2019-01-21 16:10:27 +00:00
|
|
|
</a>
|
|
|
|
{% endif %}
|
|
|
|
</h1>
|
2019-03-22 15:49:24 +00:00
|
|
|
|
|
|
|
<p>
|
|
|
|
<a rel="license" href="{{ post.license }}" class="u-license">
|
|
|
|
{{ post.license | extractlicense }}
|
|
|
|
</a>
|
|
|
|
by
|
|
|
|
<span class="p-author h-card vcard">
|
|
|
|
<img class="u-photo photo" src="{{ post.author.image|relurl(baseurl) }}" alt="" />
|
|
|
|
<a class="p-name u-url fn url" href="{{ post.author.url }}">{{ post.author.name }}</a>
|
|
|
|
(<a class="u-email email" href="mailto:{{ post.author.email }}">{{ post.author.email }}</a>)
|
|
|
|
</span>
|
|
|
|
at
|
|
|
|
<time datetime="{{ post.datePublished }}" class="dt-published published">{{ post.datePublished|printdate }}</time>
|
|
|
|
<time datetime="{{ post.dateModified }}" class="dt-updated updated"></time>
|
|
|
|
<br />
|
|
|
|
<a class="u-url u-uuid bookmark" href="{{ post.url }}">{{ post.url }}</a>
|
2019-04-29 09:34:00 +01:00
|
|
|
{% if post.keywords|length > 0 %}
|
|
|
|
<br />
|
|
|
|
{% for keyword in post.keywords %}
|
|
|
|
#<span class="p-category">{{ keyword }}</span>{% if not loop.last %} {% endif %}
|
|
|
|
{% endfor %}
|
|
|
|
{% endif %}
|
2019-05-05 13:04:36 +01:00
|
|
|
{% if post['@type'] == 'Photograph' %}
|
|
|
|
{% if post.image[0].locationCreated %}
|
|
|
|
<br />
|
|
|
|
Location:
|
|
|
|
<a class="h-geo" href="https://www.openstreetmap.org/#map=14/{{ post.image[0].locationCreated.geo.longitude }}/{{ post.image[0].locationCreated.geo.latitude }}">
|
|
|
|
<span class="p-longitude">{{ post.image[0].locationCreated.geo.longitude }}</span>,
|
|
|
|
<span class="p-latitude">{{ post.image[0].locationCreated.geo.latitude }}</span>
|
|
|
|
</a>
|
|
|
|
{% endif %}
|
|
|
|
{% endif %}
|
|
|
|
{% if post.sameAs|length %}
|
2019-03-22 15:49:24 +00:00
|
|
|
<br />
|
|
|
|
Syndicated to:
|
|
|
|
{% for url in post.sameAs %}
|
2019-05-05 13:04:36 +01:00
|
|
|
<a class="u-syndication" href="{{ url }}">{{ url }}</a>{% if not loop.last and post.sameAs|length >1 %}, {% endif %}
|
2019-03-22 15:49:24 +00:00
|
|
|
{% endfor %}
|
2019-05-05 13:04:36 +01:00
|
|
|
{% endif %}
|
2019-03-22 15:49:24 +00:00
|
|
|
</p>
|
|
|
|
|
|
|
|
{% if post.subjectOf %}
|
|
|
|
<p class="h-event vevent">
|
|
|
|
<span class="summary">
|
|
|
|
Journey from
|
|
|
|
<time class="dt-start dtstart" datetime="{{ post.subjectOf.startDate }}">
|
|
|
|
{{ post.subjectOf.startDate|printdate }}
|
|
|
|
</time>
|
|
|
|
to
|
|
|
|
<time class="dt-end dtend" datetime="{{ post.subjectOf.endDate }}">
|
|
|
|
{{ post.subjectOf.endDate|printdate }}
|
|
|
|
</time>, in
|
|
|
|
<span class="p-location location">
|
|
|
|
{{ post.subjectOf.location.name }}
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
<a class="u-url url" href="{{ post.url }}"></a>
|
|
|
|
</p>
|
|
|
|
{% endif %}
|
|
|
|
|
2019-01-21 16:10:27 +00:00
|
|
|
</header>
|
|
|
|
|
|
|
|
{% if post.review %}
|
2019-02-07 19:27:15 +00:00
|
|
|
<div class="h-review hreview">
|
2019-02-16 00:14:12 +00:00
|
|
|
<strong>Review summary of: <a href="{{ post.review.url }}" class="p-name u-url p-item h-product item fn url">{{ post.review.name }}</a></strong>
|
2019-01-21 16:10:27 +00:00
|
|
|
<p>
|
|
|
|
By
|
2019-02-08 23:32:52 +00:00
|
|
|
<span class="p-author h-card reviewer vcard">
|
|
|
|
<a class="p-name u-url fn" href="{{ post.author.url }}">
|
2019-02-07 19:27:15 +00:00
|
|
|
<span>{{ post.author.name }}</span>
|
2019-02-08 23:32:52 +00:00
|
|
|
</a></span> in <time class="dt-published dtreviewed" datetime="{{ post.datePublished }}" title="{{ post.datePublished }}">{{ post.datePublished|printdate }}</time>
|
2019-01-21 16:10:27 +00:00
|
|
|
</p>
|
|
|
|
<p>
|
2019-02-07 19:27:15 +00:00
|
|
|
<span class="rating">
|
2019-02-08 23:32:52 +00:00
|
|
|
<span class="value p-rating">{{ post.review.reviewRating.ratingValue }}</span>
|
2019-01-21 16:10:27 +00:00
|
|
|
out of
|
2019-02-07 19:27:15 +00:00
|
|
|
<span class="best">{{ post.review.reviewRating.bestRating }}</span>
|
2019-01-21 16:10:27 +00:00
|
|
|
</span>
|
|
|
|
</p>
|
2019-02-07 19:27:15 +00:00
|
|
|
<p class="p-summary summary">{{ post.review.text }}</p>
|
2019-01-21 16:10:27 +00:00
|
|
|
</div>
|
|
|
|
{% endif %}
|
|
|
|
|
2019-02-07 19:27:15 +00:00
|
|
|
{% if post.description|length %}
|
|
|
|
<div class="e-summary entry-summary">
|
2019-02-16 00:14:12 +00:00
|
|
|
{{ post.description|relurl(baseurl) }}
|
2019-01-21 16:10:27 +00:00
|
|
|
</div>
|
|
|
|
{% endif %}
|
|
|
|
|
2019-02-07 19:27:15 +00:00
|
|
|
<div class="e-content entry-content">
|
2019-02-16 00:14:12 +00:00
|
|
|
{{ post.text|relurl(baseurl) }}
|
2019-01-21 16:10:27 +00:00
|
|
|
</div>
|
|
|
|
|
2019-02-07 19:27:15 +00:00
|
|
|
{% if 'WebPage' != post['@type'] %}
|
2019-01-21 16:10:27 +00:00
|
|
|
<section class="syndication">
|
2019-02-07 19:27:15 +00:00
|
|
|
{% for action in post.potentialAction %}
|
|
|
|
{% if 'InteractAction' == action['@type'] %}
|
|
|
|
<a href="{{ action.url }}"></a>
|
|
|
|
{% endif %}
|
|
|
|
{% endfor %}
|
2019-01-21 16:10:27 +00:00
|
|
|
</section>
|
|
|
|
|
2019-02-07 19:27:15 +00:00
|
|
|
{% if post.comment|length %}
|
|
|
|
<section class="comments">
|
|
|
|
<h2><a id="comments"></a>Responses</h2>
|
2019-01-21 16:10:27 +00:00
|
|
|
<ol>
|
2019-02-07 19:27:15 +00:00
|
|
|
{% for comment in post.comment %}
|
2019-02-08 23:32:52 +00:00
|
|
|
<li class="h-entry p-comment hentry">
|
2019-02-16 00:14:12 +00:00
|
|
|
<i>
|
|
|
|
{% if 'like-of' == comment.disambiguatingDescription %}
|
|
|
|
{% set icon = 'star' %}
|
|
|
|
{% elif 'bookmark-of' == comment.disambiguatingDescription %}
|
|
|
|
{% set icon = 'bookmark' %}
|
|
|
|
{% elif 'reply' == comment.disambiguatingDescription %}
|
|
|
|
{% set icon = 'reply' %}
|
|
|
|
{% else %}
|
|
|
|
{% set icon = 'link' %}
|
|
|
|
{% endif %}
|
|
|
|
<svg width="16" height="16">
|
|
|
|
<use xlink:href="#icon-{{ icon }}"></use>
|
|
|
|
</svg>
|
|
|
|
</i>
|
2019-02-07 19:27:15 +00:00
|
|
|
from
|
2019-02-08 23:32:52 +00:00
|
|
|
<span class="p-author h-card vcard">
|
2019-01-21 16:10:27 +00:00
|
|
|
{% if comment.author.url %}
|
2019-02-16 00:14:12 +00:00
|
|
|
<a class="u-url p-name fn url org" href="{{ comment.author.url }}">
|
2019-02-08 23:32:52 +00:00
|
|
|
{{ comment.author.name }}
|
2019-01-21 16:10:27 +00:00
|
|
|
</a>
|
|
|
|
{% else %}
|
2019-01-31 21:23:16 +00:00
|
|
|
<span class="p-name fn">
|
2019-01-21 16:10:27 +00:00
|
|
|
{{ comment.author.name }}
|
|
|
|
</span>
|
|
|
|
{% endif %}
|
2019-02-07 19:27:15 +00:00
|
|
|
</span>
|
|
|
|
at
|
2019-02-08 23:32:52 +00:00
|
|
|
<time class="dt-published published" datetime="{{ comment.datePublished }}">
|
2019-02-07 19:27:15 +00:00
|
|
|
{{ comment.datePublished|printdate }}
|
|
|
|
</time>
|
|
|
|
<br />
|
2019-02-08 23:32:52 +00:00
|
|
|
<a class="u-url" href="{{ comment.url }}">
|
|
|
|
{{ comment.url }}
|
|
|
|
</a>
|
|
|
|
<a href="{{ post.url }}" class="u-in-reply-to"></a>
|
2019-01-21 16:10:27 +00:00
|
|
|
</li>
|
|
|
|
{% endfor %}
|
|
|
|
</ol>
|
|
|
|
</section>
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
{% endif %}
|
|
|
|
</article>
|
|
|
|
</main>
|
|
|
|
{% endblock %}
|