@bartificer/linkify 2.4.0 → 2.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +135 -35
- package/dist/index.js +1 -1
- package/docs/LinkData.class.mjs.html +28 -53
- package/docs/LinkTemplate.class.mjs.html +29 -33
- package/docs/Linkifier.class.mjs.html +46 -59
- package/docs/PageData.class.mjs.html +54 -69
- package/docs/defaults.mjs.html +22 -2
- package/docs/docdash-overrides.css +9 -3
- package/docs/externals.jsdoc.html +6 -2
- package/docs/global.html +1276 -0
- package/docs/index.html +114 -45
- package/docs/index.js.html +7 -3
- package/docs/mermaid-init.js +21 -0
- package/docs/module-cheerio.html +6 -2
- package/docs/module-defaults.html +100 -5
- package/docs/module-link-data.LinkData.html +81 -212
- package/docs/module-link-data.html +8 -4
- package/docs/module-link-template.LinkTemplate.html +71 -96
- package/docs/module-link-template.html +8 -4
- package/docs/module-linkifier.Linkifier.html +103 -376
- package/docs/module-linkifier.html +6 -2
- package/docs/module-linkify.html +7 -3
- package/docs/module-mustache.html +6 -2
- package/docs/module-node-fetch.html +6 -2
- package/docs/module-page-data.PageData.html +224 -202
- package/docs/module-page-data.html +8 -4
- package/docs/module-title-case.html +6 -2
- package/docs/module-urijs.html +6 -2
- package/docs/module-url-slug.html +6 -2
- package/docs/module-utilities.html +74 -24
- package/docs/typedefs.jsdoc.html +145 -0
- package/docs/utilities.mjs.html +36 -23
- package/package.json +3 -2
- package/src/LinkData.class.mjs +22 -51
- package/src/LinkTemplate.class.mjs +23 -31
- package/src/Linkifier.class.mjs +40 -57
- package/src/PageData.class.mjs +48 -67
- package/src/defaults.mjs +16 -0
- package/src/index.js +1 -1
- package/src/typedefs.jsdoc +52 -0
- package/src/utilities.mjs +30 -21
package/docs/index.html
CHANGED
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
<input type="text" id="nav-search" placeholder="Search" />
|
|
44
44
|
|
|
45
45
|
|
|
46
|
-
<h2><a href="index.html">Home</a></h2><h2><a href="https://github.com/bartificer/linkify" target="_blank" >On GitHub</a></h2><h2><a href="https://bartificer.net/" target="_blank" >Bartificer Creations</a></h2><h3>Modules</h3><ul><li><a href="module-defaults.html">defaults</a><ul class='members'><li data-type='member'><a href="module-defaults.html#.linkTemplates">linkTemplates</a></li><li data-type='member'><a href="module-defaults.html#.smallWords">smallWords</a></li><li data-type='member'><a href="module-defaults.html#.speciallyCapitalisedWords">speciallyCapitalisedWords</a></li></ul></li><li><a href="module-link-data.html">link-data</a></li><li><a href="module-link-template.html">link-template</a></li><li><a href="module-linkifier.html">linkifier</a></li><li><a href="module-linkify.html">linkify</a><ul class='members'><li data-type='member'><a href="module-linkify.html#.LinkData">LinkData</a></li><li data-type='member'><a href="module-linkify.html#.LinkTemplate">LinkTemplate</a></li><li data-type='member'><a href="module-linkify.html#.Linkifier">Linkifier</a></li><li data-type='member'><a href="module-linkify.html#.PageData">PageData</a></li><li data-type='member'><a href="module-linkify.html#.VERSION">VERSION</a></li><li data-type='member'><a href="module-linkify.html#.default">default</a></li><li data-type='member'><a href="module-linkify.html#.linkify">linkify</a></li></ul></li><li><a href="module-page-data.html">page-data</a></li><li><a href="module-utilities.html">utilities</a><ul class='methods'><li data-type='method'><a href="module-utilities.html#.batchFixCustomWordCases">batchFixCustomWordCases</a></li><li data-type='method'><a href="module-utilities.html#.escapeRegex">escapeRegex</a></li><li data-type='method'><a href="module-utilities.html#.extractSlug">extractSlug</a></li><li data-type='method'><a href="module-utilities.html#.regulariseWhitespace">regulariseWhitespace</a></li><li data-type='method'><a href="module-utilities.html#.stripQueryString">stripQueryString</a></li><li data-type='method'><a href="module-utilities.html#.stripUTMParameters">stripUTMParameters</a></li><li data-type='method'><a href="module-utilities.html#.toTitleCase">toTitleCase</a></li></ul></li></ul><h3>Classes</h3><ul><li><a href="module-link-data.LinkData.html">LinkData</a><ul class='methods'><li data-type='method'><a href="module-link-data.LinkData.html#asPlainObject">asPlainObject</a></li></ul></li><li><a href="module-link-template.LinkTemplate.html">LinkTemplate</a><ul class='methods'><li data-type='method'><a href="module-link-template.LinkTemplate.html#addFilter">addFilter</a></li><li data-type='method'><a href="module-link-template.LinkTemplate.html#filtersFor">filtersFor</a></li></ul></li><li><a href="module-linkifier.Linkifier.html">Linkifier</a><ul class='methods'><li data-type='method'><a href="module-linkifier.Linkifier.html#fetchPageData">fetchPageData</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#generateLink">generateLink</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplate">getTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplateNameForDomain">getTemplateNameForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTransformerForDomain">getTransformerForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerDefaultTemplateMapping">registerDefaultTemplateMapping</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTemplate">registerTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTransformer">registerTransformer</a></li></ul></li><li><a href="module-page-data.PageData.html">PageData</a><ul class='methods'><li data-type='method'><a href="module-page-data.PageData.html#addSecondaryHeading">addSecondaryHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#addTopLevelHeading">addTopLevelHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#asPlainObject">asPlainObject</a></li><li data-type='method'><a href="module-page-data.PageData.html#h1">h1</a></li><li data-type='method'><a href="module-page-data.PageData.html#h2">h2</a></li></ul></li></ul><h3>Externals</h3><ul><li><a href="module-cheerio.html">cheerio</a></li><li><a href="module-mustache.html">mustache</a></li><li><a href="module-node-fetch.html">node-fetch</a></li><li><a href="module-title-case.html">title-case</a></li><li><a href="module-urijs.html">urijs</a></li><li><a href="module-url-slug.html">url-slug</a></li></ul>
|
|
46
|
+
<h2><a href="index.html">Home</a></h2><h2><a href="https://github.com/bartificer/linkify" target="_blank" >On GitHub</a></h2><h2><a href="https://bartificer.net/" target="_blank" >Bartificer Creations</a></h2><h3>Modules</h3><ul><li><a href="module-defaults.html">defaults</a><ul class='members'><li data-type='member'><a href="module-defaults.html#.linkTemplates">linkTemplates</a></li><li data-type='member'><a href="module-defaults.html#.smallWords">smallWords</a></li><li data-type='member'><a href="module-defaults.html#.speciallyCapitalisedWords">speciallyCapitalisedWords</a></li></ul><ul class='methods'><li data-type='method'><a href="module-defaults.html#.dataTransformer">dataTransformer</a></li></ul></li><li><a href="module-link-data.html">link-data</a></li><li><a href="module-link-template.html">link-template</a></li><li><a href="module-linkifier.html">linkifier</a></li><li><a href="module-linkify.html">linkify</a><ul class='members'><li data-type='member'><a href="module-linkify.html#.LinkData">LinkData</a></li><li data-type='member'><a href="module-linkify.html#.LinkTemplate">LinkTemplate</a></li><li data-type='member'><a href="module-linkify.html#.Linkifier">Linkifier</a></li><li data-type='member'><a href="module-linkify.html#.PageData">PageData</a></li><li data-type='member'><a href="module-linkify.html#.VERSION">VERSION</a></li><li data-type='member'><a href="module-linkify.html#.default">default</a></li><li data-type='member'><a href="module-linkify.html#.linkify">linkify</a></li></ul></li><li><a href="module-page-data.html">page-data</a></li><li><a href="module-utilities.html">utilities</a><ul class='methods'><li data-type='method'><a href="module-utilities.html#.batchFixCustomWordCases">batchFixCustomWordCases</a></li><li data-type='method'><a href="module-utilities.html#.escapeRegex">escapeRegex</a></li><li data-type='method'><a href="module-utilities.html#.extractSlug">extractSlug</a></li><li data-type='method'><a href="module-utilities.html#.regulariseWhitespace">regulariseWhitespace</a></li><li data-type='method'><a href="module-utilities.html#.stripQueryString">stripQueryString</a></li><li data-type='method'><a href="module-utilities.html#.stripUTMParameters">stripUTMParameters</a></li><li data-type='method'><a href="module-utilities.html#.toTitleCase">toTitleCase</a></li></ul></li></ul><h3>Classes</h3><ul><li><a href="module-link-data.LinkData.html">LinkData</a><ul class='methods'><li data-type='method'><a href="module-link-data.LinkData.html#asPlainObject">asPlainObject</a></li></ul></li><li><a href="module-link-template.LinkTemplate.html">LinkTemplate</a><ul class='methods'><li data-type='method'><a href="module-link-template.LinkTemplate.html#addFilter">addFilter</a></li><li data-type='method'><a href="module-link-template.LinkTemplate.html#filtersFor">filtersFor</a></li></ul></li><li><a href="module-linkifier.Linkifier.html">Linkifier</a><ul class='methods'><li data-type='method'><a href="module-linkifier.Linkifier.html#fetchPageData">fetchPageData</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#generateLink">generateLink</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplate">getTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplateNameForDomain">getTemplateNameForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTransformerForDomain">getTransformerForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerDefaultTemplateMapping">registerDefaultTemplateMapping</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTemplate">registerTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTransformer">registerTransformer</a></li></ul></li><li><a href="module-page-data.PageData.html">PageData</a><ul class='methods'><li data-type='method'><a href="module-page-data.PageData.html#addSecondaryHeading">addSecondaryHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#addTopLevelHeading">addTopLevelHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#asPlainObject">asPlainObject</a></li><li data-type='method'><a href="module-page-data.PageData.html#h1">h1</a></li><li data-type='method'><a href="module-page-data.PageData.html#h2">h2</a></li></ul></li></ul><h3>Global</h3><ul><li><a href="global.html#dataTransformer">dataTransformer</a></li><li><a href="global.html#plainLinkInformationObject">plainLinkInformationObject</a></li><li><a href="global.html#plainPageInformationObject">plainPageInformationObject</a></li><li><a href="global.html#templateFieldFilterFunction">templateFieldFilterFunction</a></li><li><a href="global.html#templateFieldFilterTuple">templateFieldFilterTuple</a></li></ul><h3>Externals</h3><ul><li><a href="module-cheerio.html">cheerio</a></li><li><a href="module-mustache.html">mustache</a></li><li><a href="module-node-fetch.html">node-fetch</a></li><li><a href="module-title-case.html">title-case</a></li><li><a href="module-urijs.html">urijs</a></li><li><a href="module-url-slug.html">url-slug</a></li></ul>
|
|
47
47
|
|
|
48
48
|
</nav>
|
|
49
49
|
|
|
@@ -79,44 +79,109 @@
|
|
|
79
79
|
<p>This code was written by <a href="https://www.lets-talk.ie/contributor/bart">Bart Busschots</a> to speed up the creation of shownotes for the <a href="https://www.lets-talk.ie/lta">Let's Talk Apple</a> and the <a href="https://www.podfeet.com/blog/category/security-bits/">Security Bits</a> segments on the <a href="https://www.podfeet.com/blog/category/nosillacast/">NosillaCast</a>. It is released open-source as a courtesy to other podcasters and bloggers who regularly need to covert URLs into nicely formatted links.</p>
|
|
80
80
|
<p>Pull requests and issues are welcomed, but on the understanding that this is a volunteer-maintained package, and all responses will be at the maintainer's discression as and when they have time. Realistically, you won't hear back from days or weeks, and if life is very hectic, perhaps even months.</p>
|
|
81
81
|
<p>Given this reality, <strong>do not use this repository for anything mission-critical!</strong>.</p>
|
|
82
|
-
<
|
|
83
|
-
<
|
|
84
|
-
|
|
85
|
-
<
|
|
86
|
-
<
|
|
87
|
-
<
|
|
88
|
-
<
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
<
|
|
99
|
-
<
|
|
100
|
-
|
|
101
|
-
<
|
|
102
|
-
<p>
|
|
103
|
-
<pre class="prettyprint source lang-javascript"><code
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
// get a list of all registered template names
|
|
107
|
-
const templateNames = linkify.templateNames;
|
|
108
|
-
console.log('registered templates:', templateNames);
|
|
109
|
-
|
|
110
|
-
// iterate over each tempalte with an example URL
|
|
82
|
+
<h1 id="intended-purpose--key-features">Intended Purpose & Key Features</h1>
|
|
83
|
+
<p>This module's reason for existing is to take a URL, fetch and parse the web page's HTML to extract the page and section titles, pass the extracted data through a transformer function appropriate for the domain to extract the page's title, then render that to a link in any language using a desired template.</p>
|
|
84
|
+
<p>This is not a module for simply converting a URL to a generic link. What makes it different is:</p>
|
|
85
|
+
<ol>
|
|
86
|
+
<li>Link titles are automatically exctracted from the actual web page using customiusable <em>data transformers</em></li>
|
|
87
|
+
<li>Links can be rendered in any language using customisible templates.</li>
|
|
88
|
+
<li>Web page processing functions and output templates are associated with domain names in a DNS-aware way</li>
|
|
89
|
+
</ol>
|
|
90
|
+
<p>Data transformers and templates are resolved using the DNS hierarchy. For example, if you register a data transformer for the domain <code>bartificer.ie</code>, and then you process a link on the <code>www.bartificer.ie</code> domain, the module will first check if there is a transformer registered for <code>www.bartificer.ie</code>, if not it will find the one registered for <code>bartificer.ie</code> and use that. This means that the data transformer and template registered against the DNS root domain <code>.</code> acts as defaults for all domains that don't have their own custom settings.</p>
|
|
91
|
+
<p>To use this module you will need to write your own NodeJS script that:</p>
|
|
92
|
+
<ol>
|
|
93
|
+
<li>Imports this module</li>
|
|
94
|
+
<li>Registers your required templates and data transformers</li>
|
|
95
|
+
<li>Invokes the module's link generation function</li>
|
|
96
|
+
</ol>
|
|
97
|
+
<p>If this is more than you need, this module is not for you!</p>
|
|
98
|
+
<h1 id="instalation--minimal-nodejs-example">Instalation & Minimal NodeJS Example</h1>
|
|
99
|
+
<p>Before you begin, make sure you have <a href="https://nodejs.org/en/download">the latest LTS version of NodeJS</a> installed!</p>
|
|
100
|
+
<p>Create an empty folder and open a shell in that folder.</p>
|
|
101
|
+
<p>First, install the module into your folder with the command:</p>
|
|
102
|
+
<pre class="prettyprint source lang-sh"><code>npm install '@bartificer/linkifier';</code></pre><p>Test the module is working with a basic script that uses all the defaults and makes no customisations. Create a file named <code>test.mjs</code> with the following content:</p>
|
|
103
|
+
<pre class="prettyprint source lang-javascript"><code>import { linkify } from '@bartificer/linkify';
|
|
104
|
+
|
|
111
105
|
(async () => {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
</code
|
|
119
|
-
<
|
|
106
|
+
console.log(await linkify.generateLink('https://github.com/bartificer'));
|
|
107
|
+
})();</code></pre><p>Execute this script with the command:</p>
|
|
108
|
+
<pre class="prettyprint source lang-sh"><code>node ./examples/clipboardURLToMarkdown.mjs</code></pre><p>This should print an HTML link to this module's Git repository.</p>
|
|
109
|
+
<h1 id="customising-link-generation">Customising Link Generation</h1>
|
|
110
|
+
<p>The module is very much intended to be customised, and while the module has been designed to make your customisation code concise and as self-documenting as possible, it's vital to understand the module's process for generating links.</p>
|
|
111
|
+
<h2 id="the-link-generation-process">The Link Generation Process</h2>
|
|
112
|
+
<p>The module's <code>generateLink(url)</code> function is the primary entry point, and the only required argument is a URL.</p>
|
|
113
|
+
<p>This URL will be converted to a <code>PageData</code> object which capture's the various titles and headings found on the page.</p>
|
|
114
|
+
<p>Based on the URL's domain, a <em>data transformer</em> will be resolved, and that function will convert the <code>PageData</code> object to a <code>LinkData</code> object containing just the fields needed to render a link.</p>
|
|
115
|
+
<p>Based on the URL's domain, a <code>LinkTemplate</code> will be resolved, and that template will be combined with the <code>LinkData</code> object to render the link.</p>
|
|
116
|
+
<pre class="prettyprint source lang-mermaid"><code>flowchart TD
|
|
117
|
+
classDef inputNode fill:#090,color:#fff;
|
|
118
|
+
URL([fa:fa-circle-down URL]):::inputNode
|
|
119
|
+
TPLNAME([fa:fa-circle-down Template Name — Optional]):::inputNode
|
|
120
|
+
|
|
121
|
+
TPLMAP[(Domain → Default Template Mappings)]
|
|
122
|
+
TPLS[(Registered Tempaltes)]
|
|
123
|
+
TRANSMAP[(Domain → Transformer Mappings)]
|
|
124
|
+
|
|
125
|
+
FETCH{Try Fetch Page}
|
|
126
|
+
HAVETPLNAME{Template Name Specified?}
|
|
127
|
+
|
|
128
|
+
PARSE[fa:fa-gears Parse]
|
|
129
|
+
REVSLUG[fa:fa-gears Reverse Slug]
|
|
130
|
+
RSLVTPLNAME[fa:fa-gears Resolve Template Name]
|
|
131
|
+
RSLVTPL[fa:fa-gears Resolve Template]
|
|
132
|
+
RSLVTRANS[fa:fa-gears Resolve Transformer]
|
|
133
|
+
TRANS[fa:fa-gears Transform]
|
|
134
|
+
RENDER[fa:fa-gears Render]
|
|
135
|
+
|
|
136
|
+
PDATA{{fa:fa-table-cells PageData Object}}
|
|
137
|
+
LDATA{{fa:fa-table-cells LinkData Object}}
|
|
138
|
+
TPLNAMESTR{{fa:fa-quote-left Template Name}}
|
|
139
|
+
TPLOBJ{{fa:fa-table-cells Template Object}}
|
|
140
|
+
TRANSFN{{fa:fa-code Transformer Function}}
|
|
141
|
+
|
|
142
|
+
classDef outputNode fill:#090,color:#fff;
|
|
143
|
+
LINK([fa:fa-quote-left Link]):::outputNode
|
|
144
|
+
|
|
145
|
+
URL --> FETCH
|
|
146
|
+
TPLNAME --> HAVETPLNAME
|
|
147
|
+
FETCH -->|Success| PARSE
|
|
148
|
+
FETCH -->|Fail| REVSLUG
|
|
149
|
+
PARSE --> PDATA
|
|
150
|
+
REVSLUG --> PDATA
|
|
151
|
+
HAVETPLNAME -->|Yes| TPLNAMESTR
|
|
152
|
+
HAVETPLNAME -->|No| RSLVTPLNAME
|
|
153
|
+
TPLMAP --> RSLVTPLNAME
|
|
154
|
+
RSLVTPLNAME --> TPLNAMESTR
|
|
155
|
+
TPLNAMESTR --> RSLVTPL
|
|
156
|
+
RSLVTPL --> TPLOBJ
|
|
157
|
+
TPLS --> RSLVTPL
|
|
158
|
+
TRANSMAP --> RSLVTRANS
|
|
159
|
+
RSLVTRANS --> TRANSFN
|
|
160
|
+
PDATA --> TRANS
|
|
161
|
+
TRANSFN --> TRANS
|
|
162
|
+
TRANS --> LDATA
|
|
163
|
+
LDATA --> RENDER
|
|
164
|
+
TPLOBJ --> RENDER
|
|
165
|
+
RENDER --> LINK</code></pre><h2 id="customisation-points">Customisation Points</h2>
|
|
166
|
+
<p>To customise the module effectively you'll need the API documentation — <a href="https://bartificer.github.io/linkify/">bartificer.github.io/linkify</a>.</p>
|
|
167
|
+
<p>Before rendering links, you should do the following:</p>
|
|
168
|
+
<ol>
|
|
169
|
+
<li>Use an expanded import with at least the following:<pre class="prettyprint source lang-javascript"><code>import {linkify, LinkData, LinkTemplate} from '@bartificer/linkify';</code></pre></li>
|
|
170
|
+
<li>If none of the out-of-the-box templates are appropriate (<code>linkify.templateNames</code> is the array of registered template names), register a custom template of you own and make it the defaukt. For example:<pre class="prettyprint source lang-javascript"><code>// register a template for Markdown links with an emoji pre-fixed
|
|
171
|
+
linkify.registerTemplate('md-emoji', '🔗 [{{{title}}}]({{{url}}})');
|
|
172
|
+
|
|
173
|
+
// make the new template the default for all domains
|
|
174
|
+
linkfiy.registerDefaultTemplateMapping('.', 'md-emoji');</code></pre></li>
|
|
175
|
+
<li>If the default data transformer's logic does not fit with your needs, register a new default. For example:<pre class="prettyprint source lang-javascript"><code>linkify.registerTransformer('.', (pData) => { new LinkData(pData.url, pData.title.replace(/ · GitHub$/, ' on GitHub')) });</code></pre></li>
|
|
176
|
+
<li>Register all needed domain-specific custom transformers. For Example:<pre class="prettyprint source lang-javascript"><code>linkify.RegisterTransformer('some.domain', (pData) => { new LinkData(pData.url, pData.h1s[1]) });</code></pre></li>
|
|
177
|
+
<li>Very rarely, a different tempalte is required for a given domain, in that case, assign the desirec tempalte at the domain level. For example:<pre class="prettyprint source lang-javascript"><code>// create a special template for your home domain
|
|
178
|
+
linkify.registerTemplate('md-home', '🏠 [{{{title}}}]({{{url}}})');
|
|
179
|
+
|
|
180
|
+
// set that template as the default for just your domain (and its subdomains)
|
|
181
|
+
linkfiy.registerDefaultTemplateMapping('your.home.domain', 'md-home');</code></pre></li>
|
|
182
|
+
</ol>
|
|
183
|
+
<h1 id="real-world-examples">Real-World Examples</h1>
|
|
184
|
+
<p><em><strong>Note:</strong> these examples are written to work on a development clone of the module, to use them outside of that, change the import statements to import from <code>'@bartificer/linkify'</code> rather than <code>'../dist.index.js'</code>. Alternatively, fork, download and build the module (<code>npm ci && npm run build</code>).</em></p>
|
|
120
185
|
<p>Two real-world scripts Bart users to build shownotes are included in <a href="https://github.com/bartificer/linkify/tree/master/example">the <code>/example</code> folder in the GitHub repostitory</a>:</p>
|
|
121
186
|
<ol>
|
|
122
187
|
<li><code>clipboardURLToMarkdown.mjs</code> — the script Bart uses to convert links to Markdown for use in show notes. This script contains a real-world example of a custom template, and, of a large collection of custom transformers registered against specific domain names for dealing with their various quirks.</li>
|
|
@@ -154,7 +219,7 @@ console.log('registered templates:', templateNames);
|
|
|
154
219
|
<dl class="details">
|
|
155
220
|
|
|
156
221
|
<dt class="tag-description">Description:</dt>
|
|
157
|
-
<dd class="tag-description"><ul class="dummy"><li><p>
|
|
222
|
+
<dd class="tag-description"><ul class="dummy"><li><p>Data model for link information.</p></li></ul></dd>
|
|
158
223
|
|
|
159
224
|
|
|
160
225
|
|
|
@@ -209,7 +274,7 @@ console.log('registered templates:', templateNames);
|
|
|
209
274
|
|
|
210
275
|
|
|
211
276
|
|
|
212
|
-
<div class="description usertext"><p>
|
|
277
|
+
<div class="description usertext"><p>Data model for link information.</p></div>
|
|
213
278
|
|
|
214
279
|
|
|
215
280
|
|
|
@@ -268,7 +333,7 @@ console.log('registered templates:', templateNames);
|
|
|
268
333
|
<dl class="details">
|
|
269
334
|
|
|
270
335
|
<dt class="tag-description">Description:</dt>
|
|
271
|
-
<dd class="tag-description"><ul class="dummy"><li><p>
|
|
336
|
+
<dd class="tag-description"><ul class="dummy"><li><p>Link generation templates.</p></li></ul></dd>
|
|
272
337
|
|
|
273
338
|
|
|
274
339
|
|
|
@@ -323,7 +388,7 @@ console.log('registered templates:', templateNames);
|
|
|
323
388
|
|
|
324
389
|
|
|
325
390
|
|
|
326
|
-
<div class="description usertext"><p>
|
|
391
|
+
<div class="description usertext"><p>Link generation templates.</p></div>
|
|
327
392
|
|
|
328
393
|
|
|
329
394
|
|
|
@@ -496,7 +561,7 @@ console.log('registered templates:', templateNames);
|
|
|
496
561
|
<dl class="details">
|
|
497
562
|
|
|
498
563
|
<dt class="tag-description">Description:</dt>
|
|
499
|
-
<dd class="tag-description"><ul class="dummy"><li><p>
|
|
564
|
+
<dd class="tag-description"><ul class="dummy"><li><p>Data model for web page information.</p></li></ul></dd>
|
|
500
565
|
|
|
501
566
|
|
|
502
567
|
|
|
@@ -551,7 +616,7 @@ console.log('registered templates:', templateNames);
|
|
|
551
616
|
|
|
552
617
|
|
|
553
618
|
|
|
554
|
-
<div class="description usertext"><p>
|
|
619
|
+
<div class="description usertext"><p>Data model for web page information.</p></div>
|
|
555
620
|
|
|
556
621
|
|
|
557
622
|
|
|
@@ -934,7 +999,7 @@ console.log('registered templates:', templateNames);
|
|
|
934
999
|
<br class="clear">
|
|
935
1000
|
|
|
936
1001
|
<footer>
|
|
937
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
1002
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Wed Apr 15 2026 17:49:51 GMT+0100 (Irish Standard Time) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
938
1003
|
</footer>
|
|
939
1004
|
|
|
940
1005
|
<script>prettyPrint();</script>
|
|
@@ -947,5 +1012,9 @@ console.log('registered templates:', templateNames);
|
|
|
947
1012
|
|
|
948
1013
|
<link type="text/css" rel="stylesheet" href="./docdash-overrides.css">
|
|
949
1014
|
|
|
1015
|
+
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
|
|
1016
|
+
|
|
1017
|
+
<script src="./mermaid-init.js"></script>
|
|
1018
|
+
|
|
950
1019
|
</body>
|
|
951
1020
|
</html>
|
package/docs/index.js.html
CHANGED
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
<input type="text" id="nav-search" placeholder="Search" />
|
|
44
44
|
|
|
45
45
|
|
|
46
|
-
<h2><a href="index.html">Home</a></h2><h2><a href="https://github.com/bartificer/linkify" target="_blank" >On GitHub</a></h2><h2><a href="https://bartificer.net/" target="_blank" >Bartificer Creations</a></h2><h3>Modules</h3><ul><li><a href="module-defaults.html">defaults</a><ul class='members'><li data-type='member'><a href="module-defaults.html#.linkTemplates">linkTemplates</a></li><li data-type='member'><a href="module-defaults.html#.smallWords">smallWords</a></li><li data-type='member'><a href="module-defaults.html#.speciallyCapitalisedWords">speciallyCapitalisedWords</a></li></ul></li><li><a href="module-link-data.html">link-data</a></li><li><a href="module-link-template.html">link-template</a></li><li><a href="module-linkifier.html">linkifier</a></li><li><a href="module-linkify.html">linkify</a><ul class='members'><li data-type='member'><a href="module-linkify.html#.LinkData">LinkData</a></li><li data-type='member'><a href="module-linkify.html#.LinkTemplate">LinkTemplate</a></li><li data-type='member'><a href="module-linkify.html#.Linkifier">Linkifier</a></li><li data-type='member'><a href="module-linkify.html#.PageData">PageData</a></li><li data-type='member'><a href="module-linkify.html#.VERSION">VERSION</a></li><li data-type='member'><a href="module-linkify.html#.default">default</a></li><li data-type='member'><a href="module-linkify.html#.linkify">linkify</a></li></ul></li><li><a href="module-page-data.html">page-data</a></li><li><a href="module-utilities.html">utilities</a><ul class='methods'><li data-type='method'><a href="module-utilities.html#.batchFixCustomWordCases">batchFixCustomWordCases</a></li><li data-type='method'><a href="module-utilities.html#.escapeRegex">escapeRegex</a></li><li data-type='method'><a href="module-utilities.html#.extractSlug">extractSlug</a></li><li data-type='method'><a href="module-utilities.html#.regulariseWhitespace">regulariseWhitespace</a></li><li data-type='method'><a href="module-utilities.html#.stripQueryString">stripQueryString</a></li><li data-type='method'><a href="module-utilities.html#.stripUTMParameters">stripUTMParameters</a></li><li data-type='method'><a href="module-utilities.html#.toTitleCase">toTitleCase</a></li></ul></li></ul><h3>Classes</h3><ul><li><a href="module-link-data.LinkData.html">LinkData</a><ul class='methods'><li data-type='method'><a href="module-link-data.LinkData.html#asPlainObject">asPlainObject</a></li></ul></li><li><a href="module-link-template.LinkTemplate.html">LinkTemplate</a><ul class='methods'><li data-type='method'><a href="module-link-template.LinkTemplate.html#addFilter">addFilter</a></li><li data-type='method'><a href="module-link-template.LinkTemplate.html#filtersFor">filtersFor</a></li></ul></li><li><a href="module-linkifier.Linkifier.html">Linkifier</a><ul class='methods'><li data-type='method'><a href="module-linkifier.Linkifier.html#fetchPageData">fetchPageData</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#generateLink">generateLink</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplate">getTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplateNameForDomain">getTemplateNameForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTransformerForDomain">getTransformerForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerDefaultTemplateMapping">registerDefaultTemplateMapping</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTemplate">registerTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTransformer">registerTransformer</a></li></ul></li><li><a href="module-page-data.PageData.html">PageData</a><ul class='methods'><li data-type='method'><a href="module-page-data.PageData.html#addSecondaryHeading">addSecondaryHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#addTopLevelHeading">addTopLevelHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#asPlainObject">asPlainObject</a></li><li data-type='method'><a href="module-page-data.PageData.html#h1">h1</a></li><li data-type='method'><a href="module-page-data.PageData.html#h2">h2</a></li></ul></li></ul><h3>Externals</h3><ul><li><a href="module-cheerio.html">cheerio</a></li><li><a href="module-mustache.html">mustache</a></li><li><a href="module-node-fetch.html">node-fetch</a></li><li><a href="module-title-case.html">title-case</a></li><li><a href="module-urijs.html">urijs</a></li><li><a href="module-url-slug.html">url-slug</a></li></ul>
|
|
46
|
+
<h2><a href="index.html">Home</a></h2><h2><a href="https://github.com/bartificer/linkify" target="_blank" >On GitHub</a></h2><h2><a href="https://bartificer.net/" target="_blank" >Bartificer Creations</a></h2><h3>Modules</h3><ul><li><a href="module-defaults.html">defaults</a><ul class='members'><li data-type='member'><a href="module-defaults.html#.linkTemplates">linkTemplates</a></li><li data-type='member'><a href="module-defaults.html#.smallWords">smallWords</a></li><li data-type='member'><a href="module-defaults.html#.speciallyCapitalisedWords">speciallyCapitalisedWords</a></li></ul><ul class='methods'><li data-type='method'><a href="module-defaults.html#.dataTransformer">dataTransformer</a></li></ul></li><li><a href="module-link-data.html">link-data</a></li><li><a href="module-link-template.html">link-template</a></li><li><a href="module-linkifier.html">linkifier</a></li><li><a href="module-linkify.html">linkify</a><ul class='members'><li data-type='member'><a href="module-linkify.html#.LinkData">LinkData</a></li><li data-type='member'><a href="module-linkify.html#.LinkTemplate">LinkTemplate</a></li><li data-type='member'><a href="module-linkify.html#.Linkifier">Linkifier</a></li><li data-type='member'><a href="module-linkify.html#.PageData">PageData</a></li><li data-type='member'><a href="module-linkify.html#.VERSION">VERSION</a></li><li data-type='member'><a href="module-linkify.html#.default">default</a></li><li data-type='member'><a href="module-linkify.html#.linkify">linkify</a></li></ul></li><li><a href="module-page-data.html">page-data</a></li><li><a href="module-utilities.html">utilities</a><ul class='methods'><li data-type='method'><a href="module-utilities.html#.batchFixCustomWordCases">batchFixCustomWordCases</a></li><li data-type='method'><a href="module-utilities.html#.escapeRegex">escapeRegex</a></li><li data-type='method'><a href="module-utilities.html#.extractSlug">extractSlug</a></li><li data-type='method'><a href="module-utilities.html#.regulariseWhitespace">regulariseWhitespace</a></li><li data-type='method'><a href="module-utilities.html#.stripQueryString">stripQueryString</a></li><li data-type='method'><a href="module-utilities.html#.stripUTMParameters">stripUTMParameters</a></li><li data-type='method'><a href="module-utilities.html#.toTitleCase">toTitleCase</a></li></ul></li></ul><h3>Classes</h3><ul><li><a href="module-link-data.LinkData.html">LinkData</a><ul class='methods'><li data-type='method'><a href="module-link-data.LinkData.html#asPlainObject">asPlainObject</a></li></ul></li><li><a href="module-link-template.LinkTemplate.html">LinkTemplate</a><ul class='methods'><li data-type='method'><a href="module-link-template.LinkTemplate.html#addFilter">addFilter</a></li><li data-type='method'><a href="module-link-template.LinkTemplate.html#filtersFor">filtersFor</a></li></ul></li><li><a href="module-linkifier.Linkifier.html">Linkifier</a><ul class='methods'><li data-type='method'><a href="module-linkifier.Linkifier.html#fetchPageData">fetchPageData</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#generateLink">generateLink</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplate">getTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplateNameForDomain">getTemplateNameForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTransformerForDomain">getTransformerForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerDefaultTemplateMapping">registerDefaultTemplateMapping</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTemplate">registerTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTransformer">registerTransformer</a></li></ul></li><li><a href="module-page-data.PageData.html">PageData</a><ul class='methods'><li data-type='method'><a href="module-page-data.PageData.html#addSecondaryHeading">addSecondaryHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#addTopLevelHeading">addTopLevelHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#asPlainObject">asPlainObject</a></li><li data-type='method'><a href="module-page-data.PageData.html#h1">h1</a></li><li data-type='method'><a href="module-page-data.PageData.html#h2">h2</a></li></ul></li></ul><h3>Global</h3><ul><li><a href="global.html#dataTransformer">dataTransformer</a></li><li><a href="global.html#plainLinkInformationObject">plainLinkInformationObject</a></li><li><a href="global.html#plainPageInformationObject">plainPageInformationObject</a></li><li><a href="global.html#templateFieldFilterFunction">templateFieldFilterFunction</a></li><li><a href="global.html#templateFieldFilterTuple">templateFieldFilterTuple</a></li></ul><h3>Externals</h3><ul><li><a href="module-cheerio.html">cheerio</a></li><li><a href="module-mustache.html">mustache</a></li><li><a href="module-node-fetch.html">node-fetch</a></li><li><a href="module-title-case.html">title-case</a></li><li><a href="module-urijs.html">urijs</a></li><li><a href="module-url-slug.html">url-slug</a></li></ul>
|
|
47
47
|
|
|
48
48
|
</nav>
|
|
49
49
|
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
* @requires link-data
|
|
76
76
|
* @requires link-template
|
|
77
77
|
* @requires page-data
|
|
78
|
-
* @see {@link module:linkifier.Linkifier}
|
|
78
|
+
* @see {@link module:linkifier.Linkifier} for the entry point into the link generation functionality.
|
|
79
79
|
* @example <caption>Basic Usage</caption>
|
|
80
80
|
* import { linkify } from '@bartificer/linkify';
|
|
81
81
|
*
|
|
@@ -154,7 +154,7 @@ export { linkify as default };</code></pre>
|
|
|
154
154
|
<br class="clear">
|
|
155
155
|
|
|
156
156
|
<footer>
|
|
157
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
157
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Wed Apr 15 2026 17:49:51 GMT+0100 (Irish Standard Time) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
158
158
|
</footer>
|
|
159
159
|
|
|
160
160
|
<script>prettyPrint();</script>
|
|
@@ -167,5 +167,9 @@ export { linkify as default };</code></pre>
|
|
|
167
167
|
|
|
168
168
|
<link type="text/css" rel="stylesheet" href="./docdash-overrides.css">
|
|
169
169
|
|
|
170
|
+
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
|
|
171
|
+
|
|
172
|
+
<script src="./mermaid-init.js"></script>
|
|
173
|
+
|
|
170
174
|
</body>
|
|
171
175
|
</html>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
document.addEventListener('DOMContentLoaded', function() {
|
|
2
|
+
// Get a list of all <pre> tags with the class 'lang-mermaid'
|
|
3
|
+
const mermaidPreTags = document.querySelectorAll('pre.lang-mermaid');
|
|
4
|
+
|
|
5
|
+
// Loop over all prettified Mermaid Code blocks and convert them to divs with the class 'mermaid'
|
|
6
|
+
mermaidPreTags.forEach(pre => {
|
|
7
|
+
const code = pre.textContent; // Get the raw code from the <pre> tag
|
|
8
|
+
console.log('INFO: converting pretified Mermaid code block to div for client-side rendering:', code);
|
|
9
|
+
const mermaidDiv = document.createElement('div'); // Create a new <div> element
|
|
10
|
+
mermaidDiv.classList.add('mermaid'); // Add the 'mermaid' class to the <div>
|
|
11
|
+
mermaidDiv.textContent = code; // Set the text content of the <div> to the raw code
|
|
12
|
+
pre.parentNode.replaceChild(mermaidDiv, pre); // Replace the <pre> tag with the new <div>
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
// Initialize Mermaid
|
|
16
|
+
if (typeof mermaid !== 'undefined') {
|
|
17
|
+
mermaid.initialize({ startOnLoad: true });
|
|
18
|
+
} else {
|
|
19
|
+
console.error('Mermaid library is not loaded.');
|
|
20
|
+
}
|
|
21
|
+
});
|
package/docs/module-cheerio.html
CHANGED
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
<input type="text" id="nav-search" placeholder="Search" />
|
|
44
44
|
|
|
45
45
|
|
|
46
|
-
<h2><a href="index.html">Home</a></h2><h2><a href="https://github.com/bartificer/linkify" target="_blank" >On GitHub</a></h2><h2><a href="https://bartificer.net/" target="_blank" >Bartificer Creations</a></h2><h3>Modules</h3><ul><li><a href="module-defaults.html">defaults</a><ul class='members'><li data-type='member'><a href="module-defaults.html#.linkTemplates">linkTemplates</a></li><li data-type='member'><a href="module-defaults.html#.smallWords">smallWords</a></li><li data-type='member'><a href="module-defaults.html#.speciallyCapitalisedWords">speciallyCapitalisedWords</a></li></ul></li><li><a href="module-link-data.html">link-data</a></li><li><a href="module-link-template.html">link-template</a></li><li><a href="module-linkifier.html">linkifier</a></li><li><a href="module-linkify.html">linkify</a><ul class='members'><li data-type='member'><a href="module-linkify.html#.LinkData">LinkData</a></li><li data-type='member'><a href="module-linkify.html#.LinkTemplate">LinkTemplate</a></li><li data-type='member'><a href="module-linkify.html#.Linkifier">Linkifier</a></li><li data-type='member'><a href="module-linkify.html#.PageData">PageData</a></li><li data-type='member'><a href="module-linkify.html#.VERSION">VERSION</a></li><li data-type='member'><a href="module-linkify.html#.default">default</a></li><li data-type='member'><a href="module-linkify.html#.linkify">linkify</a></li></ul></li><li><a href="module-page-data.html">page-data</a></li><li><a href="module-utilities.html">utilities</a><ul class='methods'><li data-type='method'><a href="module-utilities.html#.batchFixCustomWordCases">batchFixCustomWordCases</a></li><li data-type='method'><a href="module-utilities.html#.escapeRegex">escapeRegex</a></li><li data-type='method'><a href="module-utilities.html#.extractSlug">extractSlug</a></li><li data-type='method'><a href="module-utilities.html#.regulariseWhitespace">regulariseWhitespace</a></li><li data-type='method'><a href="module-utilities.html#.stripQueryString">stripQueryString</a></li><li data-type='method'><a href="module-utilities.html#.stripUTMParameters">stripUTMParameters</a></li><li data-type='method'><a href="module-utilities.html#.toTitleCase">toTitleCase</a></li></ul></li></ul><h3>Classes</h3><ul><li><a href="module-link-data.LinkData.html">LinkData</a><ul class='methods'><li data-type='method'><a href="module-link-data.LinkData.html#asPlainObject">asPlainObject</a></li></ul></li><li><a href="module-link-template.LinkTemplate.html">LinkTemplate</a><ul class='methods'><li data-type='method'><a href="module-link-template.LinkTemplate.html#addFilter">addFilter</a></li><li data-type='method'><a href="module-link-template.LinkTemplate.html#filtersFor">filtersFor</a></li></ul></li><li><a href="module-linkifier.Linkifier.html">Linkifier</a><ul class='methods'><li data-type='method'><a href="module-linkifier.Linkifier.html#fetchPageData">fetchPageData</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#generateLink">generateLink</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplate">getTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplateNameForDomain">getTemplateNameForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTransformerForDomain">getTransformerForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerDefaultTemplateMapping">registerDefaultTemplateMapping</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTemplate">registerTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTransformer">registerTransformer</a></li></ul></li><li><a href="module-page-data.PageData.html">PageData</a><ul class='methods'><li data-type='method'><a href="module-page-data.PageData.html#addSecondaryHeading">addSecondaryHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#addTopLevelHeading">addTopLevelHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#asPlainObject">asPlainObject</a></li><li data-type='method'><a href="module-page-data.PageData.html#h1">h1</a></li><li data-type='method'><a href="module-page-data.PageData.html#h2">h2</a></li></ul></li></ul><h3>Externals</h3><ul><li><a href="module-cheerio.html">cheerio</a></li><li><a href="module-mustache.html">mustache</a></li><li><a href="module-node-fetch.html">node-fetch</a></li><li><a href="module-title-case.html">title-case</a></li><li><a href="module-urijs.html">urijs</a></li><li><a href="module-url-slug.html">url-slug</a></li></ul>
|
|
46
|
+
<h2><a href="index.html">Home</a></h2><h2><a href="https://github.com/bartificer/linkify" target="_blank" >On GitHub</a></h2><h2><a href="https://bartificer.net/" target="_blank" >Bartificer Creations</a></h2><h3>Modules</h3><ul><li><a href="module-defaults.html">defaults</a><ul class='members'><li data-type='member'><a href="module-defaults.html#.linkTemplates">linkTemplates</a></li><li data-type='member'><a href="module-defaults.html#.smallWords">smallWords</a></li><li data-type='member'><a href="module-defaults.html#.speciallyCapitalisedWords">speciallyCapitalisedWords</a></li></ul><ul class='methods'><li data-type='method'><a href="module-defaults.html#.dataTransformer">dataTransformer</a></li></ul></li><li><a href="module-link-data.html">link-data</a></li><li><a href="module-link-template.html">link-template</a></li><li><a href="module-linkifier.html">linkifier</a></li><li><a href="module-linkify.html">linkify</a><ul class='members'><li data-type='member'><a href="module-linkify.html#.LinkData">LinkData</a></li><li data-type='member'><a href="module-linkify.html#.LinkTemplate">LinkTemplate</a></li><li data-type='member'><a href="module-linkify.html#.Linkifier">Linkifier</a></li><li data-type='member'><a href="module-linkify.html#.PageData">PageData</a></li><li data-type='member'><a href="module-linkify.html#.VERSION">VERSION</a></li><li data-type='member'><a href="module-linkify.html#.default">default</a></li><li data-type='member'><a href="module-linkify.html#.linkify">linkify</a></li></ul></li><li><a href="module-page-data.html">page-data</a></li><li><a href="module-utilities.html">utilities</a><ul class='methods'><li data-type='method'><a href="module-utilities.html#.batchFixCustomWordCases">batchFixCustomWordCases</a></li><li data-type='method'><a href="module-utilities.html#.escapeRegex">escapeRegex</a></li><li data-type='method'><a href="module-utilities.html#.extractSlug">extractSlug</a></li><li data-type='method'><a href="module-utilities.html#.regulariseWhitespace">regulariseWhitespace</a></li><li data-type='method'><a href="module-utilities.html#.stripQueryString">stripQueryString</a></li><li data-type='method'><a href="module-utilities.html#.stripUTMParameters">stripUTMParameters</a></li><li data-type='method'><a href="module-utilities.html#.toTitleCase">toTitleCase</a></li></ul></li></ul><h3>Classes</h3><ul><li><a href="module-link-data.LinkData.html">LinkData</a><ul class='methods'><li data-type='method'><a href="module-link-data.LinkData.html#asPlainObject">asPlainObject</a></li></ul></li><li><a href="module-link-template.LinkTemplate.html">LinkTemplate</a><ul class='methods'><li data-type='method'><a href="module-link-template.LinkTemplate.html#addFilter">addFilter</a></li><li data-type='method'><a href="module-link-template.LinkTemplate.html#filtersFor">filtersFor</a></li></ul></li><li><a href="module-linkifier.Linkifier.html">Linkifier</a><ul class='methods'><li data-type='method'><a href="module-linkifier.Linkifier.html#fetchPageData">fetchPageData</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#generateLink">generateLink</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplate">getTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplateNameForDomain">getTemplateNameForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTransformerForDomain">getTransformerForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerDefaultTemplateMapping">registerDefaultTemplateMapping</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTemplate">registerTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTransformer">registerTransformer</a></li></ul></li><li><a href="module-page-data.PageData.html">PageData</a><ul class='methods'><li data-type='method'><a href="module-page-data.PageData.html#addSecondaryHeading">addSecondaryHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#addTopLevelHeading">addTopLevelHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#asPlainObject">asPlainObject</a></li><li data-type='method'><a href="module-page-data.PageData.html#h1">h1</a></li><li data-type='method'><a href="module-page-data.PageData.html#h2">h2</a></li></ul></li></ul><h3>Global</h3><ul><li><a href="global.html#dataTransformer">dataTransformer</a></li><li><a href="global.html#plainLinkInformationObject">plainLinkInformationObject</a></li><li><a href="global.html#plainPageInformationObject">plainPageInformationObject</a></li><li><a href="global.html#templateFieldFilterFunction">templateFieldFilterFunction</a></li><li><a href="global.html#templateFieldFilterTuple">templateFieldFilterTuple</a></li></ul><h3>Externals</h3><ul><li><a href="module-cheerio.html">cheerio</a></li><li><a href="module-mustache.html">mustache</a></li><li><a href="module-node-fetch.html">node-fetch</a></li><li><a href="module-title-case.html">title-case</a></li><li><a href="module-urijs.html">urijs</a></li><li><a href="module-url-slug.html">url-slug</a></li></ul>
|
|
47
47
|
|
|
48
48
|
</nav>
|
|
49
49
|
|
|
@@ -172,7 +172,7 @@
|
|
|
172
172
|
<br class="clear">
|
|
173
173
|
|
|
174
174
|
<footer>
|
|
175
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
175
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Wed Apr 15 2026 17:49:51 GMT+0100 (Irish Standard Time) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
176
176
|
</footer>
|
|
177
177
|
|
|
178
178
|
<script>prettyPrint();</script>
|
|
@@ -185,5 +185,9 @@
|
|
|
185
185
|
|
|
186
186
|
<link type="text/css" rel="stylesheet" href="./docdash-overrides.css">
|
|
187
187
|
|
|
188
|
+
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
|
|
189
|
+
|
|
190
|
+
<script src="./mermaid-init.js"></script>
|
|
191
|
+
|
|
188
192
|
</body>
|
|
189
193
|
</html>
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
<input type="text" id="nav-search" placeholder="Search" />
|
|
44
44
|
|
|
45
45
|
|
|
46
|
-
<h2><a href="index.html">Home</a></h2><h2><a href="https://github.com/bartificer/linkify" target="_blank" >On GitHub</a></h2><h2><a href="https://bartificer.net/" target="_blank" >Bartificer Creations</a></h2><h3>Modules</h3><ul><li><a href="module-defaults.html">defaults</a><ul class='members'><li data-type='member'><a href="module-defaults.html#.linkTemplates">linkTemplates</a></li><li data-type='member'><a href="module-defaults.html#.smallWords">smallWords</a></li><li data-type='member'><a href="module-defaults.html#.speciallyCapitalisedWords">speciallyCapitalisedWords</a></li></ul></li><li><a href="module-link-data.html">link-data</a></li><li><a href="module-link-template.html">link-template</a></li><li><a href="module-linkifier.html">linkifier</a></li><li><a href="module-linkify.html">linkify</a><ul class='members'><li data-type='member'><a href="module-linkify.html#.LinkData">LinkData</a></li><li data-type='member'><a href="module-linkify.html#.LinkTemplate">LinkTemplate</a></li><li data-type='member'><a href="module-linkify.html#.Linkifier">Linkifier</a></li><li data-type='member'><a href="module-linkify.html#.PageData">PageData</a></li><li data-type='member'><a href="module-linkify.html#.VERSION">VERSION</a></li><li data-type='member'><a href="module-linkify.html#.default">default</a></li><li data-type='member'><a href="module-linkify.html#.linkify">linkify</a></li></ul></li><li><a href="module-page-data.html">page-data</a></li><li><a href="module-utilities.html">utilities</a><ul class='methods'><li data-type='method'><a href="module-utilities.html#.batchFixCustomWordCases">batchFixCustomWordCases</a></li><li data-type='method'><a href="module-utilities.html#.escapeRegex">escapeRegex</a></li><li data-type='method'><a href="module-utilities.html#.extractSlug">extractSlug</a></li><li data-type='method'><a href="module-utilities.html#.regulariseWhitespace">regulariseWhitespace</a></li><li data-type='method'><a href="module-utilities.html#.stripQueryString">stripQueryString</a></li><li data-type='method'><a href="module-utilities.html#.stripUTMParameters">stripUTMParameters</a></li><li data-type='method'><a href="module-utilities.html#.toTitleCase">toTitleCase</a></li></ul></li></ul><h3>Classes</h3><ul><li><a href="module-link-data.LinkData.html">LinkData</a><ul class='methods'><li data-type='method'><a href="module-link-data.LinkData.html#asPlainObject">asPlainObject</a></li></ul></li><li><a href="module-link-template.LinkTemplate.html">LinkTemplate</a><ul class='methods'><li data-type='method'><a href="module-link-template.LinkTemplate.html#addFilter">addFilter</a></li><li data-type='method'><a href="module-link-template.LinkTemplate.html#filtersFor">filtersFor</a></li></ul></li><li><a href="module-linkifier.Linkifier.html">Linkifier</a><ul class='methods'><li data-type='method'><a href="module-linkifier.Linkifier.html#fetchPageData">fetchPageData</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#generateLink">generateLink</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplate">getTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplateNameForDomain">getTemplateNameForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTransformerForDomain">getTransformerForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerDefaultTemplateMapping">registerDefaultTemplateMapping</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTemplate">registerTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTransformer">registerTransformer</a></li></ul></li><li><a href="module-page-data.PageData.html">PageData</a><ul class='methods'><li data-type='method'><a href="module-page-data.PageData.html#addSecondaryHeading">addSecondaryHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#addTopLevelHeading">addTopLevelHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#asPlainObject">asPlainObject</a></li><li data-type='method'><a href="module-page-data.PageData.html#h1">h1</a></li><li data-type='method'><a href="module-page-data.PageData.html#h2">h2</a></li></ul></li></ul><h3>Externals</h3><ul><li><a href="module-cheerio.html">cheerio</a></li><li><a href="module-mustache.html">mustache</a></li><li><a href="module-node-fetch.html">node-fetch</a></li><li><a href="module-title-case.html">title-case</a></li><li><a href="module-urijs.html">urijs</a></li><li><a href="module-url-slug.html">url-slug</a></li></ul>
|
|
46
|
+
<h2><a href="index.html">Home</a></h2><h2><a href="https://github.com/bartificer/linkify" target="_blank" >On GitHub</a></h2><h2><a href="https://bartificer.net/" target="_blank" >Bartificer Creations</a></h2><h3>Modules</h3><ul><li><a href="module-defaults.html">defaults</a><ul class='members'><li data-type='member'><a href="module-defaults.html#.linkTemplates">linkTemplates</a></li><li data-type='member'><a href="module-defaults.html#.smallWords">smallWords</a></li><li data-type='member'><a href="module-defaults.html#.speciallyCapitalisedWords">speciallyCapitalisedWords</a></li></ul><ul class='methods'><li data-type='method'><a href="module-defaults.html#.dataTransformer">dataTransformer</a></li></ul></li><li><a href="module-link-data.html">link-data</a></li><li><a href="module-link-template.html">link-template</a></li><li><a href="module-linkifier.html">linkifier</a></li><li><a href="module-linkify.html">linkify</a><ul class='members'><li data-type='member'><a href="module-linkify.html#.LinkData">LinkData</a></li><li data-type='member'><a href="module-linkify.html#.LinkTemplate">LinkTemplate</a></li><li data-type='member'><a href="module-linkify.html#.Linkifier">Linkifier</a></li><li data-type='member'><a href="module-linkify.html#.PageData">PageData</a></li><li data-type='member'><a href="module-linkify.html#.VERSION">VERSION</a></li><li data-type='member'><a href="module-linkify.html#.default">default</a></li><li data-type='member'><a href="module-linkify.html#.linkify">linkify</a></li></ul></li><li><a href="module-page-data.html">page-data</a></li><li><a href="module-utilities.html">utilities</a><ul class='methods'><li data-type='method'><a href="module-utilities.html#.batchFixCustomWordCases">batchFixCustomWordCases</a></li><li data-type='method'><a href="module-utilities.html#.escapeRegex">escapeRegex</a></li><li data-type='method'><a href="module-utilities.html#.extractSlug">extractSlug</a></li><li data-type='method'><a href="module-utilities.html#.regulariseWhitespace">regulariseWhitespace</a></li><li data-type='method'><a href="module-utilities.html#.stripQueryString">stripQueryString</a></li><li data-type='method'><a href="module-utilities.html#.stripUTMParameters">stripUTMParameters</a></li><li data-type='method'><a href="module-utilities.html#.toTitleCase">toTitleCase</a></li></ul></li></ul><h3>Classes</h3><ul><li><a href="module-link-data.LinkData.html">LinkData</a><ul class='methods'><li data-type='method'><a href="module-link-data.LinkData.html#asPlainObject">asPlainObject</a></li></ul></li><li><a href="module-link-template.LinkTemplate.html">LinkTemplate</a><ul class='methods'><li data-type='method'><a href="module-link-template.LinkTemplate.html#addFilter">addFilter</a></li><li data-type='method'><a href="module-link-template.LinkTemplate.html#filtersFor">filtersFor</a></li></ul></li><li><a href="module-linkifier.Linkifier.html">Linkifier</a><ul class='methods'><li data-type='method'><a href="module-linkifier.Linkifier.html#fetchPageData">fetchPageData</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#generateLink">generateLink</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplate">getTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplateNameForDomain">getTemplateNameForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTransformerForDomain">getTransformerForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerDefaultTemplateMapping">registerDefaultTemplateMapping</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTemplate">registerTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTransformer">registerTransformer</a></li></ul></li><li><a href="module-page-data.PageData.html">PageData</a><ul class='methods'><li data-type='method'><a href="module-page-data.PageData.html#addSecondaryHeading">addSecondaryHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#addTopLevelHeading">addTopLevelHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#asPlainObject">asPlainObject</a></li><li data-type='method'><a href="module-page-data.PageData.html#h1">h1</a></li><li data-type='method'><a href="module-page-data.PageData.html#h2">h2</a></li></ul></li></ul><h3>Global</h3><ul><li><a href="global.html#dataTransformer">dataTransformer</a></li><li><a href="global.html#plainLinkInformationObject">plainLinkInformationObject</a></li><li><a href="global.html#plainPageInformationObject">plainPageInformationObject</a></li><li><a href="global.html#templateFieldFilterFunction">templateFieldFilterFunction</a></li><li><a href="global.html#templateFieldFilterTuple">templateFieldFilterTuple</a></li></ul><h3>Externals</h3><ul><li><a href="module-cheerio.html">cheerio</a></li><li><a href="module-mustache.html">mustache</a></li><li><a href="module-node-fetch.html">node-fetch</a></li><li><a href="module-title-case.html">title-case</a></li><li><a href="module-urijs.html">urijs</a></li><li><a href="module-url-slug.html">url-slug</a></li></ul>
|
|
47
47
|
|
|
48
48
|
</nav>
|
|
49
49
|
|
|
@@ -201,7 +201,7 @@
|
|
|
201
201
|
|
|
202
202
|
<dt class="tag-source">Source:</dt>
|
|
203
203
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
204
|
-
<a href="defaults.mjs.html">defaults.mjs</a>, <a href="defaults.mjs.html#
|
|
204
|
+
<a href="defaults.mjs.html">defaults.mjs</a>, <a href="defaults.mjs.html#line43">line 43</a>
|
|
205
205
|
</li></ul></dd>
|
|
206
206
|
|
|
207
207
|
|
|
@@ -390,7 +390,7 @@ These are the additional words that also treated as so-called <em>small words</e
|
|
|
390
390
|
|
|
391
391
|
<dt class="tag-source">Source:</dt>
|
|
392
392
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
393
|
-
<a href="defaults.mjs.html">defaults.mjs</a>, <a href="defaults.mjs.html#
|
|
393
|
+
<a href="defaults.mjs.html">defaults.mjs</a>, <a href="defaults.mjs.html#line76">line 76</a>
|
|
394
394
|
</li></ul></dd>
|
|
395
395
|
|
|
396
396
|
|
|
@@ -478,7 +478,7 @@ These are the additional words that also treated as so-called <em>small words</e
|
|
|
478
478
|
|
|
479
479
|
<dt class="tag-source">Source:</dt>
|
|
480
480
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
481
|
-
<a href="defaults.mjs.html">defaults.mjs</a>, <a href="defaults.mjs.html#
|
|
481
|
+
<a href="defaults.mjs.html">defaults.mjs</a>, <a href="defaults.mjs.html#line83">line 83</a>
|
|
482
482
|
</li></ul></dd>
|
|
483
483
|
|
|
484
484
|
|
|
@@ -547,8 +547,99 @@ These are the additional words that also treated as so-called <em>small words</e
|
|
|
547
547
|
|
|
548
548
|
|
|
549
549
|
|
|
550
|
+
|
|
551
|
+
|
|
552
|
+
|
|
553
|
+
<h3 class="subsection-title">Methods</h3>
|
|
554
|
+
|
|
555
|
+
|
|
556
|
+
|
|
557
|
+
|
|
558
|
+
|
|
559
|
+
|
|
560
|
+
<h4 class="name" id=".dataTransformer"><span class="type-signature type-signature-static">(static) </span>dataTransformer<span class="signature">()</span><span class="type-signature"></span></h4>
|
|
561
|
+
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
|
|
567
|
+
<dl class="details">
|
|
568
|
+
|
|
569
|
+
<dt class="tag-description">Description:</dt>
|
|
570
|
+
<dd class="tag-description"><ul class="dummy"><li><p>The default link transformer. The Linkifier constructor assigns this data transformer to the root DNS name <code>.</code>, ensuring it acts as the fallback when no other domains are matched.</p>
|
|
571
|
+
<p>If the page has exactly one top-level heading, this heading is used as a the link text, otherwise the page title is used.</p>
|
|
572
|
+
<p>The description field is not explicitly set, so will default to the link text.</p></li></ul></dd>
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
|
|
576
|
+
<dt class="tag-source">Source:</dt>
|
|
577
|
+
<dd class="tag-source"><ul class="dummy"><li>
|
|
578
|
+
<a href="defaults.mjs.html">defaults.mjs</a>, <a href="defaults.mjs.html#line26">line 26</a>
|
|
579
|
+
</li></ul></dd>
|
|
580
|
+
|
|
581
|
+
|
|
582
|
+
|
|
583
|
+
|
|
584
|
+
|
|
585
|
+
|
|
586
|
+
|
|
587
|
+
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
|
|
591
|
+
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
|
|
595
|
+
|
|
596
|
+
|
|
597
|
+
|
|
598
|
+
|
|
599
|
+
|
|
550
600
|
|
|
551
601
|
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
|
|
605
|
+
|
|
606
|
+
|
|
607
|
+
|
|
608
|
+
|
|
609
|
+
|
|
610
|
+
|
|
611
|
+
</dl>
|
|
612
|
+
|
|
613
|
+
|
|
614
|
+
|
|
615
|
+
|
|
616
|
+
|
|
617
|
+
|
|
618
|
+
|
|
619
|
+
|
|
620
|
+
|
|
621
|
+
|
|
622
|
+
|
|
623
|
+
|
|
624
|
+
|
|
625
|
+
|
|
626
|
+
|
|
627
|
+
|
|
628
|
+
|
|
629
|
+
|
|
630
|
+
|
|
631
|
+
|
|
632
|
+
|
|
633
|
+
|
|
634
|
+
|
|
635
|
+
|
|
636
|
+
|
|
637
|
+
|
|
638
|
+
|
|
639
|
+
|
|
640
|
+
|
|
641
|
+
|
|
642
|
+
|
|
552
643
|
|
|
553
644
|
|
|
554
645
|
|
|
@@ -568,7 +659,7 @@ These are the additional words that also treated as so-called <em>small words</e
|
|
|
568
659
|
<br class="clear">
|
|
569
660
|
|
|
570
661
|
<footer>
|
|
571
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
662
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Wed Apr 15 2026 17:49:51 GMT+0100 (Irish Standard Time) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
572
663
|
</footer>
|
|
573
664
|
|
|
574
665
|
<script>prettyPrint();</script>
|
|
@@ -581,5 +672,9 @@ These are the additional words that also treated as so-called <em>small words</e
|
|
|
581
672
|
|
|
582
673
|
<link type="text/css" rel="stylesheet" href="./docdash-overrides.css">
|
|
583
674
|
|
|
675
|
+
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
|
|
676
|
+
|
|
677
|
+
<script src="./mermaid-init.js"></script>
|
|
678
|
+
|
|
584
679
|
</body>
|
|
585
680
|
</html>
|