Packages

A fork of the Readability library for extracting and curating articles.

Current section

Files

Jump to
readability2 doc Readability.html
Raw

doc/Readability.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.22.1">
<meta name="project" content="readability2 v0.2.0">
<title>Readability — readability2 v0.2.0</title>
<link rel="stylesheet" href="dist/elixir-e589b8fad3dab6230c65.css" />
<link rel="canonical" href="https://hexdocs.pm/readability2/Readability.html" />
<script src="dist/sidebar_items-dd6dff8ac1.js"></script>
<script src="docs_config.js"></script>
<script async src="dist/app-5c0c23dfec2d63ae33a2.js"></script>
</head>
<body data-type="modules">
<script>try { if(localStorage.getItem('night-mode') === 'true') document.body.className += ' night-mode'; } catch (e) { }</script>
<div class="main">
<button class="sidebar-button sidebar-toggle">
<span class="icon-menu" title="Collapse/expand sidebar"></span>
</button>
<section class="sidebar">
<form class="sidebar-search" action="search.html">
<button type="submit" class="search-button">
<span class="icon-search" aria-hidden="true"></span>
</button>
<button type="button" tabindex="-1" class="search-close-button">
<span class="icon-cross" title="Cancel search"></span>
</button>
<label class="search-label">
<input name="q" type="text" id="search-list" class="search-input" placeholder="Search..." aria-label="Search" autocomplete="off" />
</label>
</form>
<div class="autocomplete">
<div class="autocomplete-results">
</div>
</div>
<div class="sidebar-header">
<div class="sidebar-projectDetails">
<a href="api-reference.html" class="sidebar-projectName">
readability2 </a>
<h2 class="sidebar-projectVersion">
v0.2.0
</h2>
</div>
</div>
<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="app-vsn">readability2 v0.2.0</small>
Readability </h1>
<section id="moduledoc">
<p>Readability library for extracting &amp; curating articles.</p><h2 id="module-example" class="section-heading">
<a href="#module-example" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Example
</h2>
<pre><code class="nohighlight makeup elixir"><span class="na">@type</span><span class="w"> </span><span class="n">html</span><span class="w"> </span><span class="o">::</span><span class="w"> </span><span class="n">binary</span><span class="w">
</span><span class="c1"># Just pass url</span><span class="w">
</span><span class="p" data-group-id="9520047371-1">%</span><span class="nc" data-group-id="9520047371-1">Readability.Summary</span><span class="p" data-group-id="9520047371-1">{</span><span class="ss">title</span><span class="p">:</span><span class="w"> </span><span class="n">title</span><span class="p">,</span><span class="w"> </span><span class="ss">authors</span><span class="p">:</span><span class="w"> </span><span class="n">authors</span><span class="p">,</span><span class="w"> </span><span class="ss">article_html</span><span class="p">:</span><span class="w"> </span><span class="n">article</span><span class="p" data-group-id="9520047371-1">}</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">Readability</span><span class="o">.</span><span class="n">summarize</span><span class="p" data-group-id="9520047371-2">(</span><span class="n">url</span><span class="p" data-group-id="9520047371-2">)</span><span class="w">
</span><span class="c1"># Extract title</span><span class="w">
</span><span class="nc">Readability</span><span class="o">.</span><span class="n">title</span><span class="p" data-group-id="9520047371-3">(</span><span class="n">html</span><span class="p" data-group-id="9520047371-3">)</span><span class="w">
</span><span class="c1"># Extract authors.</span><span class="w">
</span><span class="nc">Readability</span><span class="o">.</span><span class="n">authors</span><span class="p" data-group-id="9520047371-4">(</span><span class="n">html</span><span class="p" data-group-id="9520047371-4">)</span><span class="w">
</span><span class="c1"># Extract only text from article</span><span class="w">
</span><span class="n">article</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">html</span><span class="w">
</span><span class="o">|&gt;</span><span class="w"> </span><span class="nc">Readability</span><span class="o">.</span><span class="n">article</span><span class="w">
</span><span class="o">|&gt;</span><span class="w"> </span><span class="nc">Readability</span><span class="o">.</span><span class="n">readable_text</span><span class="w">
</span><span class="c1"># Extract article with transformed html</span><span class="w">
</span><span class="n">article</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">html</span><span class="w">
</span><span class="o">|&gt;</span><span class="w"> </span><span class="nc">Readability</span><span class="o">.</span><span class="n">article</span><span class="w">
</span><span class="o">|&gt;</span><span class="w"> </span><span class="nc">Readability</span><span class="o">.</span><span class="n">raw_html</span></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-types summary">
<h2>
<a href="#types">Types</a>
</h2>
<div class="summary-row">
<div class="summary-signature">
<a href="#t:headers/0">headers()</a>
</div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#t:html_tree/0">html_tree()</a>
</div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#t:options/0">options()</a>
</div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#t:raw_html/0">raw_html()</a>
</div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#t:url/0">url()</a>
</div>
</div>
</div>
<div class="summary-functions summary">
<h2>
<a href="#functions">Functions</a>
</h2>
<div class="summary-row">
<div class="summary-signature">
<a href="#article/2">article(raw_html, opts \\ [])</a>
</div>
<div class="summary-synopsis"><p>Using a variety of metrics (content score, classname, element types), find the content that is
most likely to be the stuff a user wants to read</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#authors/1">authors(html)</a>
</div>
<div class="summary-synopsis"><p>Extract authors</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#default_options/0">default_options()</a>
</div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#is_response_markup/1">is_response_markup(headers)</a>
</div>
<div class="summary-synopsis"><p>Return true if Content-Type in provided headers list is a markup type,
else false</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#mime/1">mime(headers \\ [])</a>
</div>
<div class="summary-synopsis"><p>Extract MIME Type from headers</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#parse/1">parse(raw_html)</a>
</div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#raw_html/1">raw_html(html_tree)</a>
</div>
<div class="summary-synopsis"><p>return raw html binary from html_tree</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#readable_html/1">readable_html(html_tree)</a>
</div>
<div class="summary-synopsis"><p>return attributes, tags cleaned html</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#readable_text/1">readable_text(html_tree)</a>
</div>
<div class="summary-synopsis"><p>return only text binary from html_tree</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#regexes/1">regexes(key)</a>
</div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#summarize/2">summarize(url, opts \\ [])</a>
</div>
<div class="summary-synopsis"><p>summarize the primary readable content of a webpage.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#title/1">title(raw_html)</a>
</div>
<div class="summary-synopsis"><p>Extract title</p></div>
</div>
</div>
</section>
<section id="types" class="details-list">
<h1 class="section-heading">
<a class="hover-link" href="#types">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this section</span>
</a>
Types </h1>
<div class="types-list">
<section class="detail" id="t:headers/0">
<div class="detail-header">
<a href="#t:headers/0" class="detail-link" title="Link to this type">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this type</span>
</a>
<h1 class="signature">headers()</h1>
</div>
<section class="docstring">
<h2>Specs</h2>
<div class="specs">
<pre>headers() :: <a href="https://hexdocs.pm/elixir/typespecs.html#built-in-types">list</a>()[<a href="https://hexdocs.pm/elixir/typespecs.html#basic-types">tuple</a>()]</pre>
</div>
</section>
</section>
<section class="detail" id="t:html_tree/0">
<div class="detail-header">
<a href="#t:html_tree/0" class="detail-link" title="Link to this type">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this type</span>
</a>
<h1 class="signature">html_tree()</h1>
</div>
<section class="docstring">
<h2>Specs</h2>
<div class="specs">
<pre>html_tree() :: <a href="https://hexdocs.pm/elixir/typespecs.html#basic-types">tuple</a>() | <a href="https://hexdocs.pm/elixir/typespecs.html#built-in-types">list</a>()</pre>
</div>
</section>
</section>
<section class="detail" id="t:options/0">
<div class="detail-header">
<a href="#t:options/0" class="detail-link" title="Link to this type">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this type</span>
</a>
<h1 class="signature">options()</h1>
</div>
<section class="docstring">
<h2>Specs</h2>
<div class="specs">
<pre>options() :: <a href="https://hexdocs.pm/elixir/typespecs.html#built-in-types">list</a>()</pre>
</div>
</section>
</section>
<section class="detail" id="t:raw_html/0">
<div class="detail-header">
<a href="#t:raw_html/0" class="detail-link" title="Link to this type">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this type</span>
</a>
<h1 class="signature">raw_html()</h1>
</div>
<section class="docstring">
<h2>Specs</h2>
<div class="specs">
<pre>raw_html() :: <a href="https://hexdocs.pm/elixir/typespecs.html#built-in-types">binary</a>()</pre>
</div>
</section>
</section>
<section class="detail" id="t:url/0">
<div class="detail-header">
<a href="#t:url/0" class="detail-link" title="Link to this type">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this type</span>
</a>
<h1 class="signature">url()</h1>
</div>
<section class="docstring">
<h2>Specs</h2>
<div class="specs">
<pre>url() :: <a href="https://hexdocs.pm/elixir/typespecs.html#built-in-types">binary</a>()</pre>
</div>
</section>
</section>
</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="article/2">
<span id="article/1"></span>
<div class="detail-header">
<a href="#article/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">article(raw_html, opts \\ [])</h1>
</div>
<section class="docstring">
<h2>Specs</h2>
<div class="specs">
<pre>article(<a href="https://hexdocs.pm/elixir/typespecs.html#built-in-types">binary</a>(), <a href="#t:options/0">options</a>()) :: <a href="#t:html_tree/0">html_tree</a>()</pre>
</div>
<p>Using a variety of metrics (content score, classname, element types), find the content that is
most likely to be the stuff a user wants to read</p><h2 id="article/2-example" class="section-heading">
<a href="#article/2-example" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Example
</h2>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">article_tree</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">Redability</span><span class="p" data-group-id="1350212127-1">(</span><span class="n">html_str</span><span class="p" data-group-id="1350212127-1">)</span><span class="w">
</span><span class="c1"># returns article that is tuple</span></code></pre> </section>
</section>
<section class="detail" id="authors/1">
<div class="detail-header">
<a href="#authors/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">authors(html)</h1>
</div>
<section class="docstring">
<h2>Specs</h2>
<div class="specs">
<pre>authors(<a href="https://hexdocs.pm/elixir/typespecs.html#built-in-types">binary</a>() | <a href="#t:html_tree/0">html_tree</a>()) :: <a href="https://hexdocs.pm/elixir/typespecs.html#built-in-types">list</a>()[<a href="https://hexdocs.pm/elixir/typespecs.html#built-in-types">binary</a>()]</pre>
</div>
<p>Extract authors</p><h2 id="authors/1-example" class="section-heading">
<a href="#authors/1-example" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Example
</h2>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">authors</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">Readability</span><span class="o">.</span><span class="n">authors</span><span class="p" data-group-id="5498891604-1">(</span><span class="n">html_str</span><span class="p" data-group-id="5498891604-1">)</span><span class="w">
</span><span class="p" data-group-id="5498891604-2">[</span><span class="s">&quot;José Valim&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;chrismccord&quot;</span><span class="p" data-group-id="5498891604-2">]</span></code></pre> </section>
</section>
<section class="detail" id="default_options/0">
<div class="detail-header">
<a href="#default_options/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">default_options()</h1>
</div>
<section class="docstring">
</section>
</section>
<section class="detail" id="is_response_markup/1">
<div class="detail-header">
<a href="#is_response_markup/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_markup(headers)</h1>
</div>
<section class="docstring">
<h2>Specs</h2>
<div class="specs">
<pre>is_response_markup(<a href="#t:headers/0">headers</a>()) :: <a href="https://hexdocs.pm/elixir/typespecs.html#built-in-types">boolean</a>()</pre>
</div>
<p>Return true if Content-Type in provided headers list is a markup type,
else false</p><h2 id="is_response_markup/1-example" class="section-heading">
<a href="#is_response_markup/1-example" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Example
</h2>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">Readability</span><span class="o">.</span><span class="n">is_response_markup?</span><span class="p" data-group-id="8335967026-1">(</span><span class="p" data-group-id="8335967026-2">[</span><span class="p" data-group-id="8335967026-3">{</span><span class="s">&quot;Content-Type&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;text/html&quot;</span><span class="p" data-group-id="8335967026-3">}</span><span class="p" data-group-id="8335967026-2">]</span><span class="p" data-group-id="8335967026-1">)</span><span class="w">
</span><span class="no">true</span></code></pre> </section>
</section>
<section class="detail" id="mime/1">
<span id="mime/0"></span>
<div class="detail-header">
<a href="#mime/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">mime(headers \\ [])</h1>
</div>
<section class="docstring">
<h2>Specs</h2>
<div class="specs">
<pre>mime(<a href="#t:headers/0">headers</a>()) :: <a href="https://hexdocs.pm/elixir/String.html#t:t/0">String.t</a>()</pre>
</div>
<p>Extract MIME Type from headers</p><h2 id="mime/1-example" class="section-heading">
<a href="#mime/1-example" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Example
</h2>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">mime</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">Readability</span><span class="o">.</span><span class="n">mime</span><span class="p" data-group-id="7189479706-1">(</span><span class="n">headers_list</span><span class="p" data-group-id="7189479706-1">)</span><span class="w">
</span><span class="s">&quot;text/html&quot;</span></code></pre> </section>
</section>
<section class="detail" id="parse/1">
<div class="detail-header">
<a href="#parse/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">parse(raw_html)</h1>
</div>
<section class="docstring">
</section>
</section>
<section class="detail" id="raw_html/1">
<div class="detail-header">
<a href="#raw_html/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">raw_html(html_tree)</h1>
</div>
<section class="docstring">
<h2>Specs</h2>
<div class="specs">
<pre>raw_html(<a href="#t:html_tree/0">html_tree</a>()) :: <a href="https://hexdocs.pm/elixir/typespecs.html#built-in-types">binary</a>()</pre>
</div>
<p>return raw html binary from html_tree</p> </section>
</section>
<section class="detail" id="readable_html/1">
<div class="detail-header">
<a href="#readable_html/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">readable_html(html_tree)</h1>
</div>
<section class="docstring">
<h2>Specs</h2>
<div class="specs">
<pre>readable_html(<a href="#t:html_tree/0">html_tree</a>()) :: <a href="https://hexdocs.pm/elixir/typespecs.html#built-in-types">binary</a>()</pre>
</div>
<p>return attributes, tags cleaned html</p> </section>
</section>
<section class="detail" id="readable_text/1">
<div class="detail-header">
<a href="#readable_text/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">readable_text(html_tree)</h1>
</div>
<section class="docstring">
<h2>Specs</h2>
<div class="specs">
<pre>readable_text(<a href="#t:html_tree/0">html_tree</a>()) :: <a href="https://hexdocs.pm/elixir/typespecs.html#built-in-types">binary</a>()</pre>
</div>
<p>return only text binary from html_tree</p> </section>
</section>
<section class="detail" id="regexes/1">
<div class="detail-header">
<a href="#regexes/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">regexes(key)</h1>
</div>
<section class="docstring">
</section>
</section>
<section class="detail" id="summarize/2">
<span id="summarize/1"></span>
<div class="detail-header">
<a href="#summarize/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">summarize(url, opts \\ [])</h1>
</div>
<section class="docstring">
<h2>Specs</h2>
<div class="specs">
<pre>summarize(<a href="#t:url/0">url</a>(), <a href="#t:options/0">options</a>()) :: Readability.Summary.t()</pre>
</div>
<p>summarize the primary readable content of a webpage.</p> </section>
</section>
<section class="detail" id="title/1">
<div class="detail-header">
<a href="#title/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">title(raw_html)</h1>
</div>
<section class="docstring">
<h2>Specs</h2>
<div class="specs">
<pre>title(<a href="https://hexdocs.pm/elixir/typespecs.html#built-in-types">binary</a>() | <a href="#t:html_tree/0">html_tree</a>()) :: <a href="https://hexdocs.pm/elixir/typespecs.html#built-in-types">binary</a>()</pre>
</div>
<p>Extract title</p><h2 id="title/1-example" class="section-heading">
<a href="#title/1-example" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Example
</h2>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">title</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">Readability</span><span class="o">.</span><span class="n">title</span><span class="p" data-group-id="7907995567-1">(</span><span class="n">html_str</span><span class="p" data-group-id="7907995567-1">)</span><span class="w">
</span><span class="s">&quot;Some title in html&quot;</span></code></pre> </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.22.1),
</span>
<span class="line">
designed by
<a href="https://twitter.com/dignifiedquire" target="_blank" rel="noopener" title="@dignifiedquire">Friedel Ziegelmayer</a>.
</span>
</p>
<p>
<button class="line footer-button display-shortcuts-help">
Display keyboard shortcuts
</button>
<button class="line footer-button night-mode-toggle">
Toggle night mode
</button>
<button class="line footer-button display-quick-switch">
Go to a HexDocs package
</button>
<button class="line footer-button tooltips-toggle">
<span class="tooltips-option-disable">Disable tooltips</span>
<span class="tooltips-option-enable">Enable tooltips</span>
</button>
</p>
</footer>
</div>
</div>
</section>
</div>
</body>
</html>