Packages
indieweb
0.0.38
0.0.66
0.0.65
0.0.64
0.0.63
0.0.62
0.0.61
0.0.60
0.0.59
0.0.58
0.0.56
0.0.55
0.0.54
0.0.53
0.0.51
0.0.50
0.0.49
0.0.48
0.0.47
0.0.46
0.0.42
0.0.41
0.0.40
0.0.39
0.0.38
0.0.37
0.0.36
0.0.35
0.0.34
0.0.33
0.0.32
0.0.31
0.0.30
0.0.29
0.0.28
0.0.27
0.0.26
0.0.25
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.3
0.0.2
0.0.1
Collection of common IndieWeb utilites like authorship resolution, Webmention, post type discovery and IndieAuth.
Current section
Files
Jump to
Current section
Files
priv/dist/doc/IndieWeb.Post.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="ExDoc v0.19.3">
<title>IndieWeb.Post — IndieWeb v0.0.31</title>
<link rel="stylesheet" href="dist/html-399e30b9b028e3059575.css" />
<link rel="canonical" href="https://hexdocs.pm/indieweb/IndieWeb.Post.html" />
<script src="dist/sidebar_items-23b3c70799.js"></script>
<script async src="dist/html-399e30b9b028e3059575.js"></script>
</head>
<body data-type="modules">
<script>try { if(localStorage.getItem('night-mode')) document.body.className += ' night-mode'; } catch (e) { }</script>
<div class="main">
<button class="sidebar-button sidebar-toggle">
<span class="icon-menu" aria-hidden="true"></span>
<span class="sr-only">Toggle Sidebar</span>
</button>
<button class="sidebar-button night-mode-toggle">
<span class="icon-theme" aria-hidden="true"></span>
<span class="sr-only">Toggle Theme</span>
</button>
<section class="sidebar">
<a href="https://indieweb.org/" class="sidebar-projectLink">
<div class="sidebar-projectDetails">
<h1 class="sidebar-projectName">
IndieWeb </h1>
<h2 class="sidebar-projectVersion">
v0.0.31
</h2>
</div>
<img src="assets/logo.png" alt="IndieWeb" class="sidebar-projectImage">
</a>
<form class="sidebar-search" action="search.html">
<button type="submit" class="search-button">
<span class="icon-search" aria-hidden="true"></span>
</button>
<input name="q" type="text" id="search-list" class="search-input" placeholder="Search" aria-label="Search" autocomplete="off" />
</form>
<ul class="sidebar-listNav">
<li><a id="extras-list" href="#full-list">Pages</a></li>
<li><a id="modules-list" href="#full-list">Modules</a></li>
</ul>
<div class="gradient"></div>
<ul id="full-list" class="sidebar-fullList"></ul>
</section>
<section class="content">
<div class="content-outer">
<div id="content" class="content-inner">
<h1>
<small class="visible-xs">IndieWeb v0.0.31</small>
IndieWeb.Post
<a href="https://git.jacky.wtf/indieweb/elixir" title="View Source" class="view-source" rel="help">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</h1>
<section id="moduledoc">
<p>Post-specific logic for the IndieWeb.</p>
<p>This module provides helper methods for parsing <a href="http://microformats.org/wiki/microformats2-parsing">MF2</a>
data in a handy and simple fashion. The structure of the properties you'd use would be similar
to that of a <abbr tittle="Micformats2 JSON">MF2+JSON</abbr> object:</p>
<pre><code class="json">{
"items": [
{
"type": [
"h-feed"
],
"properties": {
"name": [
"Updates"
],
"uid": [
"https://v2.jacky.wtf/stream"
],
"url": [
"https://v2.jacky.wtf/stream"
]
},
"lang": "en",
"children": [
{
"type": [
"h-entry"
],
"properties": {
"summary": [
"One big step for Koype is going to be bridging the IndieWeb into the IPFS landscape. I have concerns over it not being privacy-centric since there’s no sense of private data (everything is publishable outwards). IPFS provides pubsub logic so I thi..."
],
"url": [
"https://v2.jacky.wtf/post/4fbdcd28-b558-42bc-99a9-802e33d01810",
"https://v2.jacky.wtf/tag/7c1e5ef9-aa31-40e6-b26a-ecdba728b4a1",
"https://v2.jacky.wtf/tag/bc945dde-95bb-468e-9127-620f1c35cd70"
],
"uid": [
"https://v2.jacky.wtf/post/4fbdcd28-b558-42bc-99a9-802e33d01810"
],
"category": [
"https://v2.jacky.wtf/tag/7c1e5ef9-aa31-40e6-b26a-ecdba728b4a1",
"https://v2.jacky.wtf/tag/bc945dde-95bb-468e-9127-620f1c35cd70"
],
"published": [
"2019-02-15T13:29:51.60956-08:00"
]
},
"lang": "en"
}
]
},
{
"type": [
"h-card"
],
"properties": {
"name": [
"Jacky Alcine"
],
"tz": [
"America/Los_Angeles"
],
"note": [
"I had a dream I could buy my way into heaven. When I woke up, I spent that on a m4.large from EvilCorp. Wait until I get my money right!"
],
"url": [
"https://v2.jacky.wtf"
],
"photo": [
"https://v2.jacky.wtf/media/image/floating/PhotoJacky%20n%203J5430.png?v=original"
]
},
"lang": "en"
}
]
}</code></pre>
</section>
<section id="summary" class="details-list">
<h1 class="section-heading">
<a class="hover-link" href="#summary">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this section</span>
</a>
Summary
</h1>
<div class="summary-functions summary">
<h2>
<a href="#functions">Functions</a>
</h2>
<div class="summary-row">
<div class="summary-signature">
<a href="#determine_type/2">determine_type(properties, types)</a>
</div>
<div class="summary-synopsis"><p>Determines the type of a post from a set of types and its MF2 properties</p>
</div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#extract_types/1">extract_types(properties)</a>
</div>
<div class="summary-synopsis"><p>Determines the potential types exposed by the set of provided properties</p>
</div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#is_response_type?/1">is_response_type?(type)</a>
</div>
<div class="summary-synopsis"><p>Determines if the provided type is a response type</p>
</div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#response_types/0">response_types()</a>
</div>
<div class="summary-synopsis"><p>Returns a list of atoms representing response post types</p>
</div>
</div>
</div>
</section>
<section id="functions" class="details-list">
<h1 class="section-heading">
<a class="hover-link" href="#functions">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this section</span>
</a>
Functions </h1>
<div class="functions-list">
<section class="detail" id="determine_type/2">
<div class="detail-header">
<a href="#determine_type/2" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">determine_type(properties, types)</span>
<a href="https://git.jacky.wtf/indieweb/elixir" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
<span class="note">(since http://ptd.spec.indieweb.org/#changes-from-28-october-2016-wd-to-1-march-2017-wd)</span>
<div class="specs">
<pre>determine_type(<a href="https://hexdocs.pm/elixir/typespecs.html#basic-types">map</a>(), <a href="https://hexdocs.pm/elixir/typespecs.html#built-in-types">list</a>()) :: <a href="https://hexdocs.pm/elixir/typespecs.html#basic-types">atom</a>()</pre>
</div>
</div>
<section class="docstring">
<p>Determines the type of a post from a set of types and its MF2 properties.</p>
<p>This aims to apply the <a href="http://ptd.spec.indieweb.org/">Post Type Discovery</a> algorithm for discovering
what kind of post these properties result in.</p>
<h2 id="determine_type/2-examples" class="section-heading">
<a href="#determine_type/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Examples
</h2>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex> </span><span class="nc">IndieWeb.Post</span><span class="o">.</span><span class="n">determine_type</span><span class="p" data-group-id="4411054662-1">(</span><span class="p" data-group-id="4411054662-2">%{</span><span class="s">"content"</span><span class="w"> </span><span class="o">=</span><span class="o">></span><span class="w"> </span><span class="p" data-group-id="4411054662-3">[</span><span class="s">"Foo."</span><span class="p" data-group-id="4411054662-3">]</span><span class="p">,</span><span class="w"> </span><span class="s">"name"</span><span class="w"> </span><span class="o">=</span><span class="o">></span><span class="w"> </span><span class="p" data-group-id="4411054662-4">[</span><span class="s">"Foo."</span><span class="p" data-group-id="4411054662-4">]</span><span class="p" data-group-id="4411054662-2">}</span><span class="p">,</span><span class="w"> </span><span class="sx">~w(note article)a</span><span class="p" data-group-id="4411054662-1">)</span><span class="w">
</span><span class="ss">:article</span><span class="w">
</span><span class="gp unselectable">iex> </span><span class="nc">IndieWeb.Post</span><span class="o">.</span><span class="n">determine_type</span><span class="p" data-group-id="4411054662-5">(</span><span class="p" data-group-id="4411054662-6">%{</span><span class="s">"content"</span><span class="w"> </span><span class="o">=</span><span class="o">></span><span class="w"> </span><span class="p" data-group-id="4411054662-7">%{</span><span class="s">"value"</span><span class="w"> </span><span class="o">=</span><span class="o">></span><span class="w"> </span><span class="p" data-group-id="4411054662-8">[</span><span class="s">"Foo."</span><span class="p" data-group-id="4411054662-8">]</span><span class="p" data-group-id="4411054662-7">}</span><span class="p">,</span><span class="w"> </span><span class="s">"name"</span><span class="w"> </span><span class="o">=</span><span class="o">></span><span class="w"> </span><span class="p" data-group-id="4411054662-9">[</span><span class="s">"On Bar"</span><span class="p" data-group-id="4411054662-9">]</span><span class="p" data-group-id="4411054662-6">}</span><span class="p">,</span><span class="w"> </span><span class="sx">~w(note article)a</span><span class="p" data-group-id="4411054662-5">)</span><span class="w">
</span><span class="ss">:article</span><span class="w">
</span><span class="gp unselectable">iex> </span><span class="nc">IndieWeb.Post</span><span class="o">.</span><span class="n">determine_type</span><span class="p" data-group-id="4411054662-10">(</span><span class="p" data-group-id="4411054662-11">%{</span><span class="s">"content"</span><span class="w"> </span><span class="o">=</span><span class="o">></span><span class="w"> </span><span class="p" data-group-id="4411054662-12">%{</span><span class="s">"value"</span><span class="w"> </span><span class="o">=</span><span class="o">></span><span class="w"> </span><span class="p" data-group-id="4411054662-13">[</span><span class="s">"Foo."</span><span class="p" data-group-id="4411054662-13">]</span><span class="p" data-group-id="4411054662-12">}</span><span class="p">,</span><span class="w"> </span><span class="s">"photo"</span><span class="w"> </span><span class="o">=</span><span class="o">></span><span class="w"> </span><span class="p" data-group-id="4411054662-14">[</span><span class="s">"https://magic/jpeg"</span><span class="p" data-group-id="4411054662-14">]</span><span class="p" data-group-id="4411054662-11">}</span><span class="p">,</span><span class="w"> </span><span class="sx">~w(note photo)a</span><span class="p" data-group-id="4411054662-10">)</span><span class="w">
</span><span class="ss">:photo</span></code></pre>
</section>
</section>
<section class="detail" id="extract_types/1">
<div class="detail-header">
<a href="#extract_types/1" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">extract_types(properties)</span>
<a href="https://git.jacky.wtf/indieweb/elixir" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
<div class="specs">
<pre>extract_types(<a href="https://hexdocs.pm/elixir/typespecs.html#basic-types">map</a>()) :: <a href="https://hexdocs.pm/elixir/typespecs.html#built-in-types">list</a>()</pre>
</div>
</div>
<section class="docstring">
<p>Determines the potential types exposed by the set of provided properties.</p>
<p>The provided properties are scanned and checked to determine if a particular
post type can be determined. The matching is a direct property to type mapping.
You should use <a href="#determine_type/2"><code class="inline">determine_type/2</code></a> to resolve the <em>actual</em> post type.</p>
<h2 id="extract_types/1-examples" class="section-heading">
<a href="#extract_types/1-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Examples
</h2>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex> </span><span class="nc">IndieWeb.Post</span><span class="o">.</span><span class="n">extract_types</span><span class="p" data-group-id="9493962463-1">(</span><span class="p" data-group-id="9493962463-2">%{</span><span class="s">"photo"</span><span class="w"> </span><span class="o">=</span><span class="o">></span><span class="w"> </span><span class="p" data-group-id="9493962463-3">[</span><span class="s">"https://magic/jpeg"</span><span class="p" data-group-id="9493962463-3">]</span><span class="p" data-group-id="9493962463-2">}</span><span class="p" data-group-id="9493962463-1">)</span><span class="w">
</span><span class="p" data-group-id="9493962463-4">[</span><span class="ss">:photo</span><span class="p" data-group-id="9493962463-4">]</span><span class="w">
</span><span class="gp unselectable">iex> </span><span class="nc">IndieWeb.Post</span><span class="o">.</span><span class="n">extract_types</span><span class="p" data-group-id="9493962463-5">(</span><span class="p" data-group-id="9493962463-6">%{</span><span class="s">"content"</span><span class="w"> </span><span class="o">=</span><span class="o">></span><span class="w"> </span><span class="p" data-group-id="9493962463-7">%{</span><span class="s">"value"</span><span class="w"> </span><span class="o">=</span><span class="o">></span><span class="w"> </span><span class="p" data-group-id="9493962463-8">[</span><span class="s">"Just a note."</span><span class="p" data-group-id="9493962463-8">]</span><span class="p" data-group-id="9493962463-7">}</span><span class="p" data-group-id="9493962463-6">}</span><span class="p" data-group-id="9493962463-5">)</span><span class="w">
</span><span class="p" data-group-id="9493962463-9">[</span><span class="ss">:note</span><span class="p" data-group-id="9493962463-9">]</span><span class="w">
</span><span class="gp unselectable">iex> </span><span class="nc">IndieWeb.Post</span><span class="o">.</span><span class="n">extract_types</span><span class="p" data-group-id="9493962463-10">(</span><span class="p" data-group-id="9493962463-11">%{</span><span class="s">"content"</span><span class="w"> </span><span class="o">=</span><span class="o">></span><span class="w"> </span><span class="p" data-group-id="9493962463-12">%{</span><span class="s">"value"</span><span class="w"> </span><span class="o">=</span><span class="o">></span><span class="w"> </span><span class="p" data-group-id="9493962463-13">[</span><span class="s">"A whole blog post."</span><span class="p" data-group-id="9493962463-13">]</span><span class="p" data-group-id="9493962463-12">}</span><span class="p">,</span><span class="w"> </span><span class="s">"name"</span><span class="w"> </span><span class="o">=</span><span class="o">></span><span class="w"> </span><span class="p" data-group-id="9493962463-14">[</span><span class="s">"Magic."</span><span class="p" data-group-id="9493962463-14">]</span><span class="p" data-group-id="9493962463-11">}</span><span class="p" data-group-id="9493962463-10">)</span><span class="w">
</span><span class="p" data-group-id="9493962463-15">[</span><span class="ss">:article</span><span class="p" data-group-id="9493962463-15">]</span></code></pre>
</section>
</section>
<section class="detail" id="is_response_type?/1">
<div class="detail-header">
<a href="#is_response_type?/1" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">is_response_type?(type)</span>
<a href="https://git.jacky.wtf/indieweb/elixir" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
<div class="specs">
<pre>is_response_type?(<a href="https://hexdocs.pm/elixir/typespecs.html#built-in-types">binary</a>()) :: <a href="https://hexdocs.pm/elixir/typespecs.html#built-in-types">boolean</a>()</pre>
</div>
</div>
<section class="docstring">
<p>Determines if the provided type is a response type.</p>
<h2 id="is_response_type?/1-examples" class="section-heading">
<a href="#is_response_type?/1-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Examples
</h2>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex> </span><span class="nc">IndieWeb.Post</span><span class="o">.</span><span class="n">is_response_type?</span><span class="p" data-group-id="6947325470-1">(</span><span class="ss">:note</span><span class="p" data-group-id="6947325470-1">)</span><span class="w">
</span><span class="no">false</span><span class="w">
</span><span class="gp unselectable">iex> </span><span class="nc">IndieWeb.Post</span><span class="o">.</span><span class="n">is_response_type?</span><span class="p" data-group-id="6947325470-2">(</span><span class="ss">:rsvp</span><span class="p" data-group-id="6947325470-2">)</span><span class="w">
</span><span class="no">true</span></code></pre>
</section>
</section>
<section class="detail" id="response_types/0">
<div class="detail-header">
<a href="#response_types/0" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">response_types()</span>
<a href="https://git.jacky.wtf/indieweb/elixir" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
<div class="specs">
<pre>response_types() :: [<a href="https://hexdocs.pm/elixir/typespecs.html#basic-types">atom</a>()]</pre>
</div>
</div>
<section class="docstring">
<p>Returns a list of atoms representing response post types.</p>
</section>
</section>
</div>
</section>
<footer class="footer">
<p>
<span class="line">
Built using
<a href="https://github.com/elixir-lang/ex_doc" title="ExDoc" target="_blank" rel="help noopener">ExDoc</a> (v0.19.3),
</span>
<span class="line">
designed by
<a href="https://twitter.com/dignifiedquire" target="_blank" rel="noopener" title="@dignifiedquire">Friedel Ziegelmayer</a>.
</span>
</p>
</footer>
</div>
</div>
</section>
</div>
</body>
</html>