build-docs.js 4.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /*
  2. <div id="root"><div class="App"><header class="row"><span href="#" class="logo col-md-2 hidden-sm">mini.css</span><a class="button col-sm-2" href="https://github.com/Chalarangelo/mini.css">Github</a><label for="doc-drawer-checkbox" class="button drawer-toggle col-sm-2"></label></header><div class="row" id="doc-wrapper"><input id="doc-drawer-checkbox" class="drawer" value="on" type="checkbox"><nav><div><input style="width: 100%; margin: 0px;" placeholder="Search..." type="search"></div></nav><main class="col-sm-12 col-md-8 col-lg-9" id="doc-content"><button>Home</button><a href="#" class="button">News</a></main></div></div></div>
  3. */
  4. var fs = require('fs');
  5. var docFragments = require('./doc-fragments/docFragments'); // Gets all document fragments as a list.
  6. var outputPath = './docs/v3/docs.html'; // This path is relative to package.json.
  7. var documentStart = `<!DOCTYPE html><html lang="en"><head>
  8. <!-- TODO: Add missing favicon and page_thumb images when about to release -->
  9. <!-- TODO: Update meta information when about to release -->
  10. <link href="https://fonts.googleapis.com/css?family=Inconsolata:400,700|Poppins:400,400i,500,700,700i&amp;subset=latin-ext" rel="stylesheet">
  11. <link rel="stylesheet" href="./style.min.css">
  12. <title>mini.css - Minimal, responsive, style-agnostic CSS framework</title>
  13. <meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
  14. <meta name="description" content="mini.css - Minimal, responsive, style-agnostic CSS framework">
  15. <meta name="keywords" content="mini, mini.css, CSS, framework, minimal, responsive, style-agnostic, front-end, frontend, Sass, toolkit">
  16. <meta name="author" content="Angelos Chalaris (chalarangelo)">
  17. <meta property="og:title" content="mini.css - Minimal, responsive, style-agnostic CSS framework">
  18. <meta property="og:description" content="mini.css is a tiny CSS framework designed to build quick, modern and responsive websites."/>
  19. <meta property="og:type" content="website"/><meta property="og:image" content="page_thumb.png">
  20. <meta property="og:url" content="https://chalarangelo.github.io/mini.css/"><link rel="icon" type="image/png" href="favicon.png">
  21. </head><body>`;
  22. var documentEnd = `</body></html>`;
  23. var appShellStart = `<div id="root"><header>
  24. <span href="#" class="logo">mini.css</span>
  25. <a class="button" href="https://github.com/Chalarangelo/mini.css">Github</a>
  26. <label for="doc-drawer-checkbox" class="button drawer-toggle"></label>
  27. </header>
  28. <div class="row" id="doc-wrapper">`;
  29. var appShellEnd = `</div></div>`;
  30. var appSidebarStart = `<input id="doc-drawer-checkbox" class="drawer" value="on" type="checkbox">
  31. <nav class="col-md-4 col-lg-3"><div><input style="width: 100%; margin: 0px;" placeholder="Search..." type="search"></div>`;
  32. var appSidebarEnd = `</nav>`;
  33. var mainStart = `<main class="col-sm-12 col-md-8 col-lg-9" id="doc-content">`;
  34. var mainEnd = `</main>`;
  35. var documentationFragments = docFragments.map(f => buildFragment(f)).join('<br/>');
  36. fs.writeFile(outputPath,
  37. `${documentStart}${appShellStart}
  38. ${appSidebarStart}${appSidebarEnd}
  39. ${mainStart}${documentationFragments}${mainEnd}
  40. ${appShellEnd}${documentEnd}`,
  41. function(err) { if(err) return console.log(err); console.log("The file was saved!"); }
  42. );
  43. function buildFragment(fragment){
  44. var fragmentHtml = `<div id="${fragment.id}" class="card fluid">
  45. <h2 class="section double-padded">${fragment.title}</h2>
  46. <div class="section">${fragment.description}</div>
  47. ${fragment.example?`<div class="section"><h3>Example</h3>${fragment.example}</div>`:''}
  48. ${fragment.samples.length?`<div class="section double-padded"><h3>Sample code</h3>${fragment.samples.join('')}</div>`:''}
  49. ${fragment.dos.length||fragment.donts.length?
  50. `<div class="section double-padded"><h3>Best practices</h3>${[fragment.dos.map(d => `<div class="row dodos"><div class="col-sm-12 col-md-6">${d.sample}</div><div class="col-sm-12 col-md-6"><p><mark class="do">Do:</mark>&nbsp;${d.description}</p></div></div>`).join('<br/>'),fragment.donts.map(d => `<div class="row dodos"><div class="col-sm-12 col-md-6">${d.sample}</div><div class="col-sm-12 col-md-6"><p><mark class="dont">Don't:</mark>&nbsp;${d.description}</p></div></div>`).join('<br/>')].join('')}</div>`
  51. :''}
  52. ${fragment.notes.length?`<div class="section double-padded"><h3>Notes</h3><ul>${fragment.notes.map(n => `<li>${n}</li>`).join('')}</ul></div>`:''}
  53. ${fragment.customization.length?`<div class="section double-padded"><h3>Customization</h3><ul>${fragment.customization.map(s => `<li>${s}</li>`).join('')}</ul></div>`:''}
  54. </div>`;
  55. return fragmentHtml;
  56. }