htmlCreator.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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 class="metaData">By ${meta[1]}</h3>
  19. <h3 class="metaData">On ${meta[2]}</h3>
  20. `;
  21. for(let i = 0; i < article.length; i++){
  22. if(article[i] === "") continue;
  23. html += `<p class="paragraph">${article[i]}</p>`;
  24. }
  25. html += `
  26. </div>
  27. <form id="createComment">
  28. <h2>Add Comment</h2>
  29. <label>Display Name:
  30. <input id="nameInput" type="text">
  31. </label>
  32. <label>Comment:
  33. <textarea id="commentInput" rows="10" columns="80" required></textarea>
  34. </label>
  35. <input type="Submit" value="SUBMIT">
  36. <input id="articleInput" type="hidden" article="${route}">
  37. </form>
  38. <div id="comments">
  39. <h2>Comments</h2>
  40. <template id="comment">
  41. <div class="comment">
  42. <div>
  43. <h3></h3>
  44. <p></p>
  45. </div>
  46. <p></p>
  47. </div>
  48. </template>
  49. </div>
  50. <script src="/writing/code"></script>
  51. </body>
  52. </html>
  53. `;
  54. fs.writeFileSync(`${dir}/article.html`, html);
  55. }
  56. let createRoute = (dir)=>{
  57. let route = dir.substring(dir.indexOf("/content/writing/") + 8);
  58. let contents = fs.readdirSync(dir);
  59. for(let i = 0; i < contents.length; i++){
  60. if(contents[i].includes(".jpg") === true){
  61. app.get(`${route}/${contents[i]}`, (req, res)=>{res.sendFile(`${__dirname}/content/${route}/${contents[i]}`)});
  62. }
  63. }
  64. app.get(route, (req, res)=>{res.sendFile(`${__dirname}/content/${route}/article.html`)});
  65. }
  66. let traverseDirectory = (dir)=>{
  67. let contents = fs.readdirSync(dir);
  68. let hasHtml = false;
  69. for(let i = 0; i < contents.length; i++){
  70. if(contents[i].includes(".") === false) traverseDirectory(`${dir}/${contents[i]}`);
  71. if(contents[i].includes(".html") === true) hasHtml = true;
  72. }
  73. if(contents.includes("article.txt") === true){
  74. if(hasHtml === false) createHTML(dir);
  75. createRoute(dir);
  76. }
  77. }
  78. traverseDirectory(`${__dirname}/content/writing`);
  79. }