diff --git a/components/header.emd b/components/header.emd index 7b163ac..6d995eb 100644 --- a/components/header.emd +++ b/components/header.emd @@ -1 +1,7 @@ -# Header \ No newline at end of file +# Header + +Hallo + +*1 +*2 +*3 \ No newline at end of file diff --git a/index.js b/index.js index 2af76fd..d89911f 100644 --- a/index.js +++ b/index.js @@ -1,28 +1,69 @@ -const { readdirSync, statSync, readFileSync } = require("fs"); -const { join } = require("path"); +const { + readdirSync, + statSync, + readFileSync, + existsSync, + mkdirSync, + writeFileSync, +} = require("fs"); +const { join, sep } = require("path"); -function getFilesFromFolder(staticpath) { - let results = readdirSync(staticpath); - let folders = []; +function getFilesFromDirectoryRecursive(staticpath, relativepath) { + const fileNames = readdirSync(staticpath); let files = []; - results.forEach((result) => { - result = join(staticpath, result); - if (statSync(result).isDirectory()) { - folders.push(result); - const folderfiles = getFilesFromFolder(result); - folderfiles.forEach((folderfile) => files.push(folderfile)); - } else if (statSync(result).isFile()) { - files.push(result); + fileNames.forEach((file) => { + if (statSync(join(staticpath, file)).isDirectory()) { + files = [ + ...files, + ...getFilesFromDirectoryRecursive( + join(staticpath, file), + join(relativepath, file) + ), + ]; + } else if (statSync(join(staticpath, file)).isFile()) { + files.push({ + relative: join(relativepath, file), + static: join(staticpath, file), + data: readFileSync(join(staticpath, file), "utf-8"), + }); } }); return files; } -let templatePaths = getFilesFromFolder(join(__dirname, "./templates")); -let componentPaths = getFilesFromFolder(join(__dirname, "./components")); -let templates = templatePaths.map((path) => { - return { path: path, data: readFileSync(path, "utf-8") }; +let files = getFilesFromDirectoryRecursive(join(__dirname, "./templates"), ""); + +files.forEach((file) => { + const folders = file.relative.split(sep).slice(0, -1); + if (folders.length === 0) return; + let path = join(__dirname + "/output"); + folders.forEach((filePath) => { + path = join(path, filePath); + if (!existsSync(path)) { + console.log(path); + mkdirSync(path); + } + return path; + }); }); -console.log("Templates:", templates); -// console.log("Templates:", components); +let outputFiles = [] + +files.forEach((file) => { + const includes = [ + ...file.data.matchAll(/[a-zA-Z0-9]+.emd<\/include>/g), + ]; + includes.forEach((include) => { + const path = include[0].replace(//, "").replace(/<\/include>/, "") + const includedata = readFileSync(join(__dirname ,"/components", path), "utf-8"); + file.data = file.data.replace("" + path + "", includedata) + }); + outputFiles.push(file) +}); + +files.forEach((file) => { + writeFileSync( + join(__dirname, "/output", file.relative.replace(".emd", ".md")), + file.data + ); +}); diff --git a/templates/Hallo/Hallo.emd b/templates/Hallo/Hallo.emd new file mode 100644 index 0000000..61552f4 --- /dev/null +++ b/templates/Hallo/Hallo.emd @@ -0,0 +1,6 @@ +header.emd +header.emd +header.emd +header.emd +header.emd +header.emd diff --git a/templates/Index.emd b/templates/Index.emd new file mode 100644 index 0000000..4baf96a --- /dev/null +++ b/templates/Index.emd @@ -0,0 +1,3 @@ +header.emd + +# Index \ No newline at end of file diff --git a/templates/Login.emd b/templates/Login.emd index d00a041..3dd0a78 100644 --- a/templates/Login.emd +++ b/templates/Login.emd @@ -1,3 +1,5 @@ -header +header.emd -# Login \ No newline at end of file +# Login + +header.emd \ No newline at end of file diff --git a/templates/Register.emd b/templates/Register.emd index abb9408..f2c6a3a 100644 --- a/templates/Register.emd +++ b/templates/Register.emd @@ -1,3 +1,3 @@ -header +header.emd # Register \ No newline at end of file diff --git a/templates/Users/Home.emd b/templates/Users/Home.emd new file mode 100644 index 0000000..555ed9a --- /dev/null +++ b/templates/Users/Home.emd @@ -0,0 +1 @@ +header.emd diff --git a/templates/sub/Index.emd b/templates/sub/Index.emd deleted file mode 100644 index f813757..0000000 --- a/templates/sub/Index.emd +++ /dev/null @@ -1,3 +0,0 @@ -header - -# Index \ No newline at end of file