| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 | 
							- const path = require('path');
 
- const fs = require('fs');
 
- const folder = process.argv[2];
 
- const jsonFile = process.argv[3];
 
- if (!folder || !jsonFile) {
 
-   console.log('node ./json-to-files.js {path to folder} {path to json file}');
 
-   process.exit(1);
 
- }
 
- const specs = require(jsonFile);
 
- const files = specs.reduce((obj, spec) => {
 
-   if (!obj[spec.section]) {
 
-     obj[spec.section] = {
 
-       md: [],
 
-       html: [],
 
-       options: {}
 
-     };
 
-   }
 
-   obj[spec.section].md.push(spec.markdown);
 
-   obj[spec.section].html.push(spec.html);
 
-   Object.assign(obj[spec.section].options, spec.options);
 
-   return obj;
 
- }, {});
 
- try {
 
-   fs.mkdirSync(folder, {recursive: true});
 
- } catch (ex) {
 
-   // already exists
 
- }
 
- for (const section in files) {
 
-   const file = files[section];
 
-   const name = section.toLowerCase().replace(' ', '_');
 
-   const frontMatter = Object.keys(file.options).map(opt => {
 
-     let value = file.options[opt];
 
-     if (typeof value !== 'string') {
 
-       value = JSON.stringify(value);
 
-     }
 
-     return `${opt}: ${value}`;
 
-   }).join('\n');
 
-   let markdown = file.md.join('\n\n');
 
-   if (frontMatter) {
 
-     markdown = `---\n${frontMatter}\n---\n\n${markdown}`;
 
-   }
 
-   const html = file.html.join('\n\n');
 
-   const mdFile = path.resolve(folder, `${name}.md`);
 
-   const htmlFile = path.resolve(folder, `${name}.html`);
 
-   if (fs.existsSync(mdFile) || fs.existsSync(htmlFile)) {
 
-     throw new Error(`${name} already exists.`);
 
-   }
 
-   fs.writeFileSync(mdFile, markdown);
 
-   fs.writeFileSync(htmlFile, html);
 
- }
 
 
  |