pipeline: WIP flattening links (flat() not working?)
This commit is contained in:
parent
f1f6c74e98
commit
4f2a4d9ae1
|
|
@ -0,0 +1,19 @@
|
|||
import {fromHtml} from 'hast-util-from-html';
|
||||
import {visit} from 'unist-util-visit';
|
||||
|
||||
export default async function(value) {
|
||||
const tree = fromHtml(value);
|
||||
const links = [];
|
||||
|
||||
//take tree;
|
||||
//visit nodes matching one of the test patterns;
|
||||
//apply function to those nodes.
|
||||
visit(tree, [
|
||||
{tagName: 'link'},
|
||||
{tagName: 'img'}
|
||||
], function(node) {
|
||||
links.push(node);
|
||||
})
|
||||
|
||||
return links.map(link => link.properties.href || link.properties.src)
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
// Original source - https://stackoverflow.com/a/44681235
|
||||
// Posted by le_m
|
||||
// Retrieved 2026-03-11, License - CC BY-SA 3.0
|
||||
// Insert path into directory tree structure:
|
||||
//
|
||||
//modified to construct an object instead of an array.
|
||||
|
||||
function insert(tree = {}, [head, ...tail]) {
|
||||
|
||||
if (tail.length > 0) {
|
||||
tree[head] = insert(tree[head], tail)
|
||||
} else {
|
||||
tree[head] = true
|
||||
}
|
||||
|
||||
return tree;
|
||||
}
|
||||
|
||||
// Example:
|
||||
let examplepaths = [
|
||||
'css/style.css',
|
||||
'about/bird.svg',
|
||||
];
|
||||
|
||||
//naive! assumes relative path like in example.
|
||||
//A more robust implementation would need to resolve paths first, but to what.
|
||||
export default function process(paths) {
|
||||
return paths
|
||||
.map(path => path.split('/')
|
||||
//.slice(1) //if path starts with / or ./
|
||||
)
|
||||
.reduce((tree, path) => insert(tree, path), {});
|
||||
}
|
||||
|
||||
//test:
|
||||
// console.log(process(examplepaths));
|
||||
|
|
@ -61,6 +61,10 @@
|
|||
}
|
||||
})
|
||||
|
||||
links: Tree.flat(Tree.map(renderedPages, getLinkedFilesFromHtml.js), 3)
|
||||
//→ (links) => Tree.flat(links, 2) // → (a) => [...new Set(a)]
|
||||
//linksAstree: pathsToObjs.js(links)
|
||||
|
||||
|
||||
/*
|
||||
assets are relative to the pubfiles directory
|
||||
|
|
|
|||
Loading…
Reference in New Issue