Skip to content

Commit e8733d1

Browse files
author
Duncan Rance
committed
modifyLinks factored out to rewriteImageLink in separate file
1 parent 00d2d16 commit e8733d1

File tree

2 files changed

+24
-18
lines changed

2 files changed

+24
-18
lines changed

cli/extract/lib/nugget_catalog.js

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
'use strict'
22
const assert = require('assert')
3-
const { extname } = require('node:path')
43
const { format } = require('node:util')
54

65
const { aql, join } = require('arangojs/aql')
@@ -10,26 +9,11 @@ const remarkStringify = require('fix-esm').require('remark-stringify').default
109
const slugify = require('slugify')
1110
const TreeModel = require('tree-model')
1211
const { unified } = require('fix-esm').require('unified')
13-
const { visitParents } = require('unist-util-visit-parents')
1412

1513
const { Nugget } = require('../../lib/nugget')
1614

1715
const { directiveToReactAdmon } = require('./admonition')
18-
19-
function modifyLinks ({ allNuggets, key }) {
20-
return (tree) => {
21-
visitParents(tree, 'image', (node, ancestors) => {
22-
if (!Nugget.UUID_RE.test(node.url) || !(node.url in allNuggets)) return
23-
24-
const mediaObj = allNuggets[node.url].__media
25-
if (mediaObj) {
26-
// rewrite the required UUID URL to include the media file extension
27-
node.url = node.url + extname(mediaObj.path)
28-
allNuggets[key].refs[node.url] = mediaObj
29-
}
30-
})
31-
}
32-
}
16+
const { rewriteImageLink } = require('./rewrite_image_link')
3317

3418
exports.NuggetCatalog = class NuggetCatalog {
3519
static HEADING_RE = /^(#+)\s+(.+)$/gm
@@ -397,7 +381,7 @@ exports.NuggetCatalog = class NuggetCatalog {
397381
const processor = unified()
398382
.use(remarkParse)
399383
.use(remarkDirective)
400-
.use(modifyLinks, { allNuggets: this.allNuggets, key })
384+
.use(rewriteImageLink, { allNuggets: this.allNuggets, key })
401385
.use(directiveToReactAdmon)
402386
.use(remarkStringify, { resourceLink: true })
403387

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
const { extname } = require('node:path')
2+
3+
const { visitParents } = require('unist-util-visit-parents')
4+
5+
const { Nugget } = require('../../lib/nugget')
6+
7+
// rewrite image links that are like ![text](./<uuid>) to include the image extension
8+
// and save reference information about them for later rendering
9+
exports.rewriteImageLink = function ({ allNuggets, key }) {
10+
return (tree) => {
11+
visitParents(tree, 'image', (node, ancestors) => {
12+
if (!Nugget.UUID_RE.test(node.url) || !(node.url in allNuggets)) return
13+
14+
const mediaObj = allNuggets[node.url].__media
15+
if (mediaObj) {
16+
// rewrite the required UUID URL to include the media file extension
17+
node.url = node.url + extname(mediaObj.path)
18+
allNuggets[key].refs[node.url] = mediaObj
19+
}
20+
})
21+
}
22+
}

0 commit comments

Comments
 (0)