@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
|
@@ -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
|
|
|
@@ -60,31 +60,30 @@
|
|
|
60
60
|
<section>
|
|
61
61
|
<article>
|
|
62
62
|
<pre class="prettyprint source linenums"><code>/**
|
|
63
|
-
* @file
|
|
63
|
+
* @file Data model for link information.
|
|
64
64
|
* @author Bart Busschots <opensource@bartificer.ie>
|
|
65
65
|
* @license MIT
|
|
66
66
|
*/
|
|
67
67
|
|
|
68
68
|
/**
|
|
69
|
-
* This module provides
|
|
69
|
+
* This module provides the class for representing the information that can be used to render a link.
|
|
70
70
|
* @module link-data
|
|
71
71
|
* @requires module:urijs
|
|
72
72
|
*/
|
|
73
73
|
import {default as URI} from 'urijs';
|
|
74
74
|
|
|
75
75
|
/**
|
|
76
|
-
*
|
|
76
|
+
* The information that can be used to render a link.
|
|
77
|
+
*
|
|
78
|
+
* Instances of this class are created from the information extracted from web pages by data transformers.
|
|
79
|
+
* @see {@link dataTransformer} for details of how instances of this class are created.
|
|
77
80
|
*/
|
|
78
81
|
export class LinkData {
|
|
79
82
|
/**
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
* @param {URL} url - The link's URL.
|
|
83
|
+
* @param {string} url - The link's URL.
|
|
83
84
|
* @param {string} [text] - The link's text, defaults to the URL.
|
|
84
|
-
* @param {string} [description] - A description for the link, defaults to
|
|
85
|
-
*
|
|
86
|
-
* @throws {ValidationError} A validation error is thrown if an invalid URL
|
|
87
|
-
* is passed.
|
|
85
|
+
* @param {string} [description] - A description for the link, defaults to the link text.
|
|
86
|
+
* @throws {TypeError} A TypeError is thrown if an invalid URL is passed.
|
|
88
87
|
*/
|
|
89
88
|
constructor(url, text, description){
|
|
90
89
|
// TO DO - add validation
|
|
@@ -93,9 +92,9 @@ export class LinkData {
|
|
|
93
92
|
* The link's URL as a URI.js object.
|
|
94
93
|
*
|
|
95
94
|
* @private
|
|
96
|
-
* @type {
|
|
95
|
+
* @type {module:urijs}
|
|
97
96
|
*/
|
|
98
|
-
this._uri = URI();
|
|
97
|
+
this._uri = URI(); // throws a TypeError if the URL is invalid
|
|
99
98
|
|
|
100
99
|
/**
|
|
101
100
|
* The link text.
|
|
@@ -124,78 +123,50 @@ export class LinkData {
|
|
|
124
123
|
}
|
|
125
124
|
|
|
126
125
|
/**
|
|
127
|
-
*
|
|
126
|
+
* The URL the link points to as a string.
|
|
127
|
+
* @type {string}
|
|
128
128
|
*/
|
|
129
129
|
get url(){
|
|
130
130
|
return this._uri.toString();
|
|
131
131
|
}
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* Get or set the URL.
|
|
135
|
-
*
|
|
136
|
-
* @param {string} url - A new URL as a string.
|
|
137
|
-
*/
|
|
138
132
|
set url(url){
|
|
139
133
|
this._uri = URI(String(url)).normalize();
|
|
140
134
|
}
|
|
141
135
|
|
|
142
136
|
/**
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
* @
|
|
137
|
+
* The URL the link points to as a URI.js object representing the URL.
|
|
138
|
+
* @type {module:urijs}
|
|
139
|
+
* @readonly
|
|
146
140
|
*/
|
|
147
141
|
get uri(){
|
|
148
142
|
return this._uri.clone();
|
|
149
143
|
}
|
|
150
144
|
|
|
151
145
|
/**
|
|
152
|
-
*
|
|
146
|
+
* The link text.
|
|
147
|
+
* @type {string}
|
|
153
148
|
*/
|
|
154
149
|
get text(){
|
|
155
150
|
return this._text;
|
|
156
151
|
}
|
|
157
|
-
|
|
158
|
-
/**
|
|
159
|
-
* @param {string} [text] - New link text. The value will be coerced to a string and trimmed.
|
|
160
|
-
*/
|
|
161
152
|
set text(text){
|
|
162
153
|
this._text = String(text).trim();
|
|
163
154
|
}
|
|
164
155
|
|
|
165
156
|
/**
|
|
166
|
-
*
|
|
157
|
+
* The link description.
|
|
158
|
+
* @type {string}
|
|
167
159
|
*/
|
|
168
160
|
get description(){
|
|
169
161
|
return this._description;
|
|
170
162
|
}
|
|
171
|
-
|
|
172
|
-
/**
|
|
173
|
-
* @param {string} description
|
|
174
|
-
*/
|
|
175
163
|
set description(description){
|
|
176
164
|
this._description = String(description);
|
|
177
165
|
}
|
|
178
166
|
|
|
179
167
|
/**
|
|
180
|
-
*
|
|
181
|
-
*
|
|
182
|
-
* {
|
|
183
|
-
* url: 'http://www.bartificer.net/',
|
|
184
|
-
* text: 'the link text',
|
|
185
|
-
* description: 'the link description',
|
|
186
|
-
* uri: {
|
|
187
|
-
* hostname: 'www.bartificer.net',
|
|
188
|
-
* path: '/',
|
|
189
|
-
* hasPath: false
|
|
190
|
-
* }
|
|
191
|
-
* }
|
|
192
|
-
* ```
|
|
193
|
-
*
|
|
194
|
-
* Note that the `uri` could contain more fields - it's initialised with
|
|
195
|
-
* output from the `URI.parse()` function from the `URI` module.
|
|
196
|
-
*
|
|
197
|
-
* @returns {plainObject}
|
|
198
|
-
* @see {@link https://medialize.github.io/URI.js/docs.html#static-parse}
|
|
168
|
+
* The link data as a plain object for use in Mustache templates and the like.
|
|
169
|
+
* @returns {plainLinkInformationObject} A plain object containing the link data.
|
|
199
170
|
*/
|
|
200
171
|
asPlainObject(){
|
|
201
172
|
let ans = {
|
|
@@ -221,7 +192,7 @@ export class LinkData {
|
|
|
221
192
|
<br class="clear">
|
|
222
193
|
|
|
223
194
|
<footer>
|
|
224
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
195
|
+
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.
|
|
225
196
|
</footer>
|
|
226
197
|
|
|
227
198
|
<script>prettyPrint();</script>
|
|
@@ -234,5 +205,9 @@ export class LinkData {
|
|
|
234
205
|
|
|
235
206
|
<link type="text/css" rel="stylesheet" href="./docdash-overrides.css">
|
|
236
207
|
|
|
208
|
+
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
|
|
209
|
+
|
|
210
|
+
<script src="./mermaid-init.js"></script>
|
|
211
|
+
|
|
237
212
|
</body>
|
|
238
213
|
</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
|
|
|
@@ -60,30 +60,33 @@
|
|
|
60
60
|
<section>
|
|
61
61
|
<article>
|
|
62
62
|
<pre class="prettyprint source linenums"><code>/**
|
|
63
|
-
* @file
|
|
63
|
+
* @file Link generation templates.
|
|
64
64
|
* @author Bart Busschots <opensource@bartificer.ie>
|
|
65
65
|
* @license MIT
|
|
66
66
|
*/
|
|
67
67
|
|
|
68
68
|
/**
|
|
69
|
-
* This module provides as class for representing
|
|
69
|
+
* This module provides as class for representing the templates used to generate links from link data objects.
|
|
70
70
|
* @module link-template
|
|
71
71
|
* @requires module:urijs
|
|
72
72
|
*/
|
|
73
73
|
|
|
74
74
|
/**
|
|
75
|
-
* A class representing the
|
|
75
|
+
* A class representing the templates used to render link data objects as actual links.
|
|
76
|
+
* @see {@link module:link-data.LinkData} for the data objects that are rendered with these templates.
|
|
76
77
|
*/
|
|
77
78
|
export class LinkTemplate{
|
|
78
79
|
/**
|
|
79
80
|
* @param {string} templateString - A Moustache template string.
|
|
80
|
-
* @param {
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
81
|
+
* @param {templateFieldFilterTuple[]} [filters=[]] - an optional set of filter functions to apply to some or all template fields.
|
|
82
|
+
* @example <caption>Example of defining a template with filters</caption>
|
|
83
|
+
* let template = new LinkTemplate(
|
|
84
|
+
* '<a href="{{{url}}}">{{{text}}}</a>',
|
|
85
|
+
* [
|
|
86
|
+
* ['url', linkify.util.stripUTMParameters],
|
|
87
|
+
* ['text', linkify.util.regulariseWhitespace]
|
|
88
|
+
* ]
|
|
89
|
+
* );
|
|
87
90
|
*/
|
|
88
91
|
constructor(templateString, filters){
|
|
89
92
|
// TO DO - add validation
|
|
@@ -106,7 +109,7 @@ export class LinkTemplate{
|
|
|
106
109
|
* * `description` - filters to be applied just the link description.
|
|
107
110
|
*
|
|
108
111
|
* @private
|
|
109
|
-
* @type {Object.<
|
|
112
|
+
* @type {Object.<"all"|"url"|"text"|"description", templateFieldFilterFunction>}
|
|
110
113
|
*/
|
|
111
114
|
this._filters = {
|
|
112
115
|
all: [],
|
|
@@ -124,20 +127,12 @@ export class LinkTemplate{
|
|
|
124
127
|
}
|
|
125
128
|
|
|
126
129
|
/**
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
* @returns {string}
|
|
130
|
+
* The Mustache template string. Will be coerced to a string with `String(templateString)`.
|
|
131
|
+
* @type {string}
|
|
130
132
|
*/
|
|
131
133
|
get templateString(){
|
|
132
134
|
return this._templateString;
|
|
133
135
|
}
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Set the template string. Should be in Mustache format. All values passed
|
|
137
|
-
* will be coerced to strings.
|
|
138
|
-
*
|
|
139
|
-
* @param {string} templateString
|
|
140
|
-
*/
|
|
141
136
|
set templateString(templateString){
|
|
142
137
|
this._templateString = String(templateString);
|
|
143
138
|
}
|
|
@@ -148,10 +143,9 @@ export class LinkTemplate{
|
|
|
148
143
|
* If an invalid args are passed, the function does not save the filter or
|
|
149
144
|
* throw an error, but it does log a warning.
|
|
150
145
|
*
|
|
151
|
-
* @param {
|
|
152
|
-
*
|
|
153
|
-
* @
|
|
154
|
-
* @returns {LinkTemplate} Returns a reference to self to facilitate function chaining.
|
|
146
|
+
* @param {"all"|"url"|"text"|"description"} fieldName
|
|
147
|
+
* @param {templateFieldFilterFunction} filterFn - the filter function.
|
|
148
|
+
* @returns {module:link-template.LinkTemplate} Returns a reference to self to facilitate function chaining.
|
|
155
149
|
*/
|
|
156
150
|
addFilter(fieldName, filterFn){
|
|
157
151
|
// make sure that args are at least plausibly valid
|
|
@@ -174,13 +168,11 @@ export class LinkTemplate{
|
|
|
174
168
|
}
|
|
175
169
|
|
|
176
170
|
/**
|
|
177
|
-
*
|
|
178
|
-
* field.
|
|
171
|
+
* Get the filter functions that should be applied to any given field.
|
|
179
172
|
*
|
|
180
|
-
* @param {
|
|
181
|
-
*
|
|
182
|
-
*
|
|
183
|
-
* empty. An empty array is returned if an invalid field name is passed.
|
|
173
|
+
* @param {"all"|"url"|"text"|"description"} fieldName
|
|
174
|
+
* @returns {templateFieldFilterFunction[]} returns an array of callbacks, which may be
|
|
175
|
+
* empty. An empty array is also returned if an invalid field name is passed.
|
|
184
176
|
*/
|
|
185
177
|
filtersFor(fieldName){
|
|
186
178
|
fieldName = String(fieldName);
|
|
@@ -212,7 +204,7 @@ export class LinkTemplate{
|
|
|
212
204
|
<br class="clear">
|
|
213
205
|
|
|
214
206
|
<footer>
|
|
215
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
207
|
+
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.
|
|
216
208
|
</footer>
|
|
217
209
|
|
|
218
210
|
<script>prettyPrint();</script>
|
|
@@ -225,5 +217,9 @@ export class LinkTemplate{
|
|
|
225
217
|
|
|
226
218
|
<link type="text/css" rel="stylesheet" href="./docdash-overrides.css">
|
|
227
219
|
|
|
220
|
+
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
|
|
221
|
+
|
|
222
|
+
<script src="./mermaid-init.js"></script>
|
|
223
|
+
|
|
228
224
|
</body>
|
|
229
225
|
</html>
|