htmlCreator.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. const fs = require("fs");
  2. module.exports = (app)=>{
  3. let createHTML = (dir)=>{
  4. let article = fs.readFileSync(`${dir}/article.txt`).toString().split("\n");
  5. let meta = fs.readFileSync(`${dir}/meta.txt`).toString().split("\n");
  6. let route = dir.substring(dir.indexOf("/content/writing/") + 17).replace(/\//g, "-");
  7. let html = `
  8. <!DOCTYPE html>
  9. <html lang="en">
  10. <head>
  11. <meta charset="utf-8">
  12. <title>${meta[0]}</title>
  13. <link rel="stylesheet" href="/writing/style">
  14. </head>
  15. <body>
  16. <div class="article">
  17. <h1>${meta[0]}</h1>
  18. <h3>${meta[1]}</h3>
  19. `;
  20. for(let i = 0; i < article.length; i++){
  21. if(article[i] === "") continue;
  22. html += `<p class="paragraph">${article[i]}</p>`;
  23. }
  24. html += `
  25. </div>
  26. <form id="createComment">
  27. <h2>Add Comment</h2>
  28. <label>Display Name:
  29. <input id="nameInput" type="text">
  30. </label>
  31. <label>Comment:
  32. <textarea id="commentInput" rows="10" columns="80" required></textarea>
  33. </label>
  34. <input type="Submit" value="SUBMIT">
  35. <input id="articleInput" type="hidden" article="${route}">
  36. </form>
  37. <div id="comments">
  38. <h2>Comments</h2>
  39. <template id="comment">
  40. <div class="comment">
  41. <div>
  42. <h3></h3>
  43. <p></p>
  44. </div>
  45. <p></p>
  46. </div>
  47. </template>
  48. </div>
  49. <script src="/writing/code"></script>
  50. </body>
  51. </html>
  52. `
  53. fs.writeFileSync(`${dir}/article.html`, html);
  54. }
  55. let createRoute = (dir)=>{
  56. let route = dir.substring(dir.indexOf("/content/writing/") + 8);
  57. app.get(route, (req, res)=>{res.sendFile(`${__dirname}/content/${route}/article.html`)});
  58. }
  59. let traverseDirectory = (dir)=>{
  60. let contents = fs.readdirSync(dir);
  61. let hasHtml = false;
  62. for(let i = 0; i < contents.length; i++){
  63. if(contents[i].includes(".") === false) return traverseDirectory(`${dir}/${contents[i]}`);
  64. if(contents[i].includes(".html") === true) hasHtml = true;
  65. }
  66. if(hasHtml === false) createHTML(dir);
  67. createRoute(dir);
  68. }
  69. traverseDirectory(`${__dirname}/content/writing`);
  70. }