feat: rewrite filenames
This commit is contained in:
parent
8d834f7a2e
commit
a210f636bc
|
@ -21,10 +21,10 @@ export default (program, flecks) => {
|
||||||
const state = await parseFlecks(flecks);
|
const state = await parseFlecks(flecks);
|
||||||
debug('parsed');
|
debug('parsed');
|
||||||
debug('Generating hooks page...');
|
debug('Generating hooks page...');
|
||||||
const hookPage = generateHookPage(state.hooks);
|
const hookPage = generateHookPage(state.hooks, flecks);
|
||||||
debug('generated');
|
debug('generated');
|
||||||
debug('Generating TODO page...');
|
debug('Generating TODO page...');
|
||||||
const todoPage = generateTodoPage(state.todos);
|
const todoPage = generateTodoPage(state.todos, flecks);
|
||||||
debug('generated');
|
debug('generated');
|
||||||
const output = join(FLECKS_CORE_ROOT, 'dox');
|
const output = join(FLECKS_CORE_ROOT, 'dox');
|
||||||
await mkdir(output, {recursive: true});
|
await mkdir(output, {recursive: true});
|
||||||
|
|
|
@ -1,4 +1,14 @@
|
||||||
export const generateHookPage = (hooks) => {
|
const makeFilenameRewriter = (filenameRewriters) => (filename, line, column) => (
|
||||||
|
Object.entries(filenameRewriters)
|
||||||
|
.reduce(
|
||||||
|
(filename, [from, to]) => filename.replace(new RegExp(from), to),
|
||||||
|
`${filename}:${line}:${column}`,
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
export const generateHookPage = (hooks, flecks) => {
|
||||||
|
const {filenameRewriters} = flecks.get('@flecks/dox');
|
||||||
|
const rewriteFilename = makeFilenameRewriter(filenameRewriters);
|
||||||
const source = [];
|
const source = [];
|
||||||
source.push('# Hooks');
|
source.push('# Hooks');
|
||||||
source.push('');
|
source.push('');
|
||||||
|
@ -35,7 +45,7 @@ export const generateHookPage = (hooks) => {
|
||||||
source.push('<summary>Implementations</summary>');
|
source.push('<summary>Implementations</summary>');
|
||||||
source.push('<ul>');
|
source.push('<ul>');
|
||||||
implementations.forEach(({filename, loc: {start: {column, line}}}) => {
|
implementations.forEach(({filename, loc: {start: {column, line}}}) => {
|
||||||
source.push(`<li>${filename}:${line}:${column}</li>`);
|
source.push(`<li>${rewriteFilename(filename, line, column)}</li>`);
|
||||||
});
|
});
|
||||||
source.push('</ul>');
|
source.push('</ul>');
|
||||||
source.push('</details>');
|
source.push('</details>');
|
||||||
|
@ -46,7 +56,7 @@ export const generateHookPage = (hooks) => {
|
||||||
source.push('<summary>Invocations</summary>');
|
source.push('<summary>Invocations</summary>');
|
||||||
source.push('<ul>');
|
source.push('<ul>');
|
||||||
invocations.forEach(({filename, loc: {start: {column, line}}}) => {
|
invocations.forEach(({filename, loc: {start: {column, line}}}) => {
|
||||||
source.push(`<li>${filename}:${line}:${column}</li>`);
|
source.push(`<li>${rewriteFilename(filename, line, column)}</li>`);
|
||||||
});
|
});
|
||||||
source.push('</ul>');
|
source.push('</ul>');
|
||||||
source.push('</details>');
|
source.push('</details>');
|
||||||
|
@ -68,7 +78,9 @@ export const generateHookPage = (hooks) => {
|
||||||
return source.join('\n');
|
return source.join('\n');
|
||||||
};
|
};
|
||||||
|
|
||||||
export const generateTodoPage = (todos) => {
|
export const generateTodoPage = (todos, flecks) => {
|
||||||
|
const {filenameRewriters} = flecks.get('@flecks/dox');
|
||||||
|
const rewriteFilename = makeFilenameRewriter(filenameRewriters);
|
||||||
const source = [];
|
const source = [];
|
||||||
source.push('# TODO');
|
source.push('# TODO');
|
||||||
source.push('');
|
source.push('');
|
||||||
|
@ -76,7 +88,7 @@ export const generateTodoPage = (todos) => {
|
||||||
source.push('');
|
source.push('');
|
||||||
if (todos.length > 0) {
|
if (todos.length > 0) {
|
||||||
todos.forEach(({filename, loc: {start: {column, line}}, text}) => {
|
todos.forEach(({filename, loc: {start: {column, line}}, text}) => {
|
||||||
source.push(`- ${filename}:${line}:${column}`);
|
source.push(`- ${rewriteFilename(filename, line, column)}`);
|
||||||
text.split('\n').forEach((line) => {
|
text.split('\n').forEach((line) => {
|
||||||
source.push(` > ${line}`);
|
source.push(` > ${line}`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -225,6 +225,7 @@ export const parseFleckRoot = async (root, state) => {
|
||||||
const sources = await fleckSources(resolved);
|
const sources = await fleckSources(resolved);
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
sources.map(async (source) => {
|
sources.map(async (source) => {
|
||||||
|
// @todo Aliased fleck paths are gonna be bad.
|
||||||
await parseFile(source, join(root, source.slice(resolved.length)), state);
|
await parseFile(source, join(root, source.slice(resolved.length)), state);
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
|
@ -5,5 +5,8 @@ import commands from './commands';
|
||||||
export default {
|
export default {
|
||||||
[Hooks]: {
|
[Hooks]: {
|
||||||
'@flecks/core/commands': commands,
|
'@flecks/core/commands': commands,
|
||||||
|
'@flecks/core/config': () => ({
|
||||||
|
filenameRewriters: [],
|
||||||
|
}),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user