-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
31 lines (25 loc) · 999 Bytes
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
'use strict';
const Promise = require('bluebird');
const he = require('he');
const debug = require('debug')('index');
const filterValidUrlsAndLookupTitles = require('./lib/filter-valid-urls-and-lookup-titles.js');
const parseUrlsFromMarkdownAndFilter = require('./lib/parse-urls-from-markdown-and-filter.js');
const replaceParsedPlainLinksWithTitles = require('./lib/replace-parsed-plain-links-with-titles.js');
function replacePlainLinks(markdown, callback, hoganTemplate) {
if (!markdown) {
callback(markdown);
return;
}
const decodedMarkdown = he.decode(markdown);
parseUrlsFromMarkdownAndFilter(decodedMarkdown, urls => {
const lookupPromises = filterValidUrlsAndLookupTitles(urls, decodedMarkdown, hoganTemplate)
;
function handleLookupResult(res) {
debug(res);
replaceParsedPlainLinksWithTitles(res, decodedMarkdown, callback);
}
Promise.all(lookupPromises)
.then(handleLookupResult);
});
}
module.exports = {replacePlainLinks};