49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
import * as plugins from './smartdocumentation.plugins.js';
|
|
|
|
export interface IDocumentationDirectoryConstructorOptions {
|
|
pathArg: string;
|
|
}
|
|
|
|
/**
|
|
* a documentation directory maps to a directory with markdown documents
|
|
*/
|
|
export class DocumentationDirectory {
|
|
public options: IDocumentationDirectoryConstructorOptions;
|
|
public smartmarkdownInstance = new plugins.smartmarkdown.SmartMarkdown();
|
|
public articles: plugins.tsclass.content.IArticle[];
|
|
|
|
constructor(optionsArg: IDocumentationDirectoryConstructorOptions) {
|
|
this.options = optionsArg;
|
|
}
|
|
|
|
/**
|
|
* reads a directory
|
|
*/
|
|
public async readDirectory() {
|
|
const fileTreeComplete = await plugins.smartfile.fs.fileTreeToObject(
|
|
this.options.pathArg,
|
|
'**/*'
|
|
);
|
|
const articles: plugins.tsclass.content.IArticle[] = [];
|
|
for (const markdownFile of fileTreeComplete.filter(
|
|
(fileArg) => fileArg.parsedPath.ext === '.md'
|
|
)) {
|
|
const parsedMarkdown = await this.smartmarkdownInstance.getMdParsedResultFromMarkdown(markdownFile.contents.toString())
|
|
articles.push({
|
|
title: parsedMarkdown.title,
|
|
author: parsedMarkdown.frontmatterData.author,
|
|
content: parsedMarkdown.originalString,
|
|
timestamp: Date.now(),
|
|
tags: [
|
|
`path:${markdownFile.path}`,
|
|
],
|
|
});
|
|
}
|
|
this.articles = articles;
|
|
}
|
|
|
|
sendAsDocumentationSet(nameArg: string, targetArg: string) {
|
|
|
|
}
|
|
}
|