Kubernetes 1.6 api reference docs
This commit is contained in:
@@ -0,0 +1,211 @@
|
||||
const docFolder = './documents/';
|
||||
const fs = require('fs');
|
||||
const marked = require('marked');
|
||||
const highlight = require('highlight.js');
|
||||
const renderer = new marked.Renderer();
|
||||
const brodocDec = require('./markedDecorations.js');
|
||||
|
||||
|
||||
marked.setOptions({
|
||||
renderer: renderer,
|
||||
gfm: true,
|
||||
tables: true,
|
||||
breaks: false,
|
||||
pedantic: false,
|
||||
sanitize: false,
|
||||
smartLists: true,
|
||||
smartypants: false,
|
||||
highlight: function (code, lang) {
|
||||
return highlight.highlightAuto(code).value;
|
||||
}
|
||||
});
|
||||
brodocDec.decorateMarked(renderer);
|
||||
|
||||
var config = require('./manifest');
|
||||
var docs = config.docs;
|
||||
|
||||
var files = [];
|
||||
var fileArray = [];
|
||||
docs.forEach(file => {
|
||||
files.push(file.filename);
|
||||
fileArray.push(file);
|
||||
});
|
||||
|
||||
var bodyContent = '';
|
||||
var navIds = brodocDec.navIds;
|
||||
var codeTabs = brodocDec.codeTabs;
|
||||
|
||||
|
||||
// const lexer = new marked.Lexer();
|
||||
// lexer.rules.bdoc = /^(\/{4} )(\w+).*$/;
|
||||
|
||||
var path = docFolder;
|
||||
var fIndex = 0;
|
||||
var rIndex = 0;
|
||||
var fileObj = {toc: [], content: [], tabs: []};
|
||||
fileArray.forEach((file, index) => {
|
||||
fs.readFile(path + file.filename, 'utf8', (err, data) => {
|
||||
rIndex++;
|
||||
file.content = data;
|
||||
|
||||
if (rIndex >= files.length) {
|
||||
// do the things
|
||||
parseFileContent(fileArray);
|
||||
var navData = generateNavItems(navIds);
|
||||
var navContent = navData.content;
|
||||
var navDataArray = navData.navDataArray;
|
||||
var codeTabContent = generateCodeTabItems(codeTabs);
|
||||
var bodyContent = flattenContent(parsedContentArray);
|
||||
generateDoc(navContent, bodyContent, codeTabContent);
|
||||
generateNavJson(navDataArray);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function flattenContent(content) {
|
||||
var flattenedContent = content.reduce(function(accum, val) {
|
||||
return accum + val;
|
||||
});
|
||||
return flattenedContent;
|
||||
}
|
||||
|
||||
var parsedContentArray = [];
|
||||
function parseFileContent(files) {
|
||||
files.forEach((file, index) => {
|
||||
parsedContentArray[index] = parseDoc(file.content);
|
||||
});
|
||||
}
|
||||
function parseDoc(doc) {
|
||||
return marked(doc, { renderer: renderer });
|
||||
}
|
||||
|
||||
function generateNavItems(navObjs) {
|
||||
var reversedNavs = navObjs.reverse();
|
||||
var currentNestArray = [];
|
||||
var currentStrongArray = [];
|
||||
var flattenedNest = '';
|
||||
var nestedNavArray = []; // Array containing generated html menu items - is flattened into a string.
|
||||
var navArrayInvert = []; // Deals with data layer of navigation;
|
||||
var navSectionArray = [];
|
||||
var navStrongSectionArray = [];
|
||||
var navSectionArrayClone;
|
||||
var flatNavArrayInvert = [];
|
||||
reversedNavs.forEach(obj => {
|
||||
flatNavArrayInvert.push(obj.id);
|
||||
var strong = (obj.id.indexOf('-strong-') !== -1);
|
||||
if (obj.level !== 1) {
|
||||
if (strong && currentNestArray.length !== 0) {
|
||||
flattenedNest = flattenContent(currentNestArray.reverse());
|
||||
currentStrongArray.push(generateNestedNav(obj, flattenedNest));
|
||||
currentNestArray.length = 0;
|
||||
|
||||
navSectionArrayClone = Object.assign([], navSectionArray);
|
||||
navStrongSectionArray.push({section: obj.id, subsections: navSectionArrayClone});
|
||||
navSectionArray.length = 0;
|
||||
} else {
|
||||
currentNestArray.push(generateNav(obj));
|
||||
navSectionArray.push({section: obj.id});
|
||||
}
|
||||
} else if (obj.level === 1) {
|
||||
if (currentStrongArray.length !== 0) {
|
||||
currentNestArray.forEach(obj => {
|
||||
currentStrongArray.push(obj);
|
||||
});
|
||||
flattenedNest = flattenContent(currentStrongArray.reverse());
|
||||
} else if (currentNestArray.length !== 0) {
|
||||
flattenedNest = flattenContent(currentNestArray.reverse());
|
||||
}
|
||||
nestedNavArray.push(generateNestedNav(obj, flattenedNest));
|
||||
currentNestArray.length = 0;
|
||||
currentStrongArray.length = 0;
|
||||
flattenedNest = '';
|
||||
|
||||
navSectionArray.forEach(obj => {
|
||||
navStrongSectionArray.push(obj);
|
||||
});
|
||||
navSectionArrayClone = Object.assign([], navStrongSectionArray);
|
||||
navStrongSectionArray.length = 0;
|
||||
navArrayInvert.push({section: obj.id, subsections: navSectionArrayClone});
|
||||
navSectionArray.length = 0;
|
||||
}
|
||||
});
|
||||
|
||||
var navContent = flattenContent(nestedNavArray.reverse());
|
||||
return {content: navContent, navDataArray: {toc: navArrayInvert, flatToc: flatNavArrayInvert}};
|
||||
}
|
||||
|
||||
function generateNav(obj) {
|
||||
var classString = 'nav-level-' + obj.level;
|
||||
var isStrong = obj.id.indexOf('-strong-') !== -1;
|
||||
if (isStrong) {
|
||||
classString += ' strong-nav';
|
||||
}
|
||||
return '<li class="' + classString + '">' + '<a href="#' + obj.id + '" class="nav-item">' + obj.text + '</a></li>';
|
||||
}
|
||||
|
||||
function generateNestedNav(parent, nest) {
|
||||
var nestContent = '';
|
||||
if (nest.length > 0) {
|
||||
nestContent = nest ? '<ul id="' + parent.id + '-nav" style="display: none;">' + nest + '</ul>' : '';
|
||||
}
|
||||
return '<ul>' + generateNav(parent) + nestContent + '</ul>';
|
||||
}
|
||||
|
||||
function generateNavJson(data) {
|
||||
var navJson = JSON.stringify(data);
|
||||
navScript = `(function(){navData = ${navJson}})();`;
|
||||
fs.writeFile('./navData.js', navScript, function(err) {
|
||||
if (err) {
|
||||
return console.log(err);
|
||||
}
|
||||
console.log("navData.js saved!");
|
||||
});
|
||||
}
|
||||
|
||||
function generateCodeTabItems(tabs) {
|
||||
var codeTabList = '';
|
||||
tabs.forEach(tab => {
|
||||
codeTabList += generateCodeTab(tab);
|
||||
});
|
||||
return codeTabList;
|
||||
}
|
||||
|
||||
function generateCodeTab(tab) {
|
||||
return '<li class="code-tab" id="' + tab + '">' + tab + '</li>';
|
||||
}
|
||||
|
||||
function generateDoc(navContent, bodyContent, codeTabContent) {
|
||||
var doc =
|
||||
`<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>${config.title}</title>
|
||||
<link rel="shortcut icon" href="favicon.ico" type="image/vnd.microsoft.icon">
|
||||
<!-- Latest compiled and minified CSS -->
|
||||
<link rel="stylesheet" href="node_modules/bootstrap/dist/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="node_modules/font-awesome/css/font-awesome.min.css" type="text/css">
|
||||
<link rel="stylesheet" href="node_modules/highlight.js/styles/default.css" type="text/css">
|
||||
<link rel="stylesheet" href="stylesheet.css" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="sidebar-wrapper" class="side-nav side-bar-nav">${navContent}<br/><div class="copyright">${config.copyright}</div></div>
|
||||
<div id="wrapper">
|
||||
<div id="code-tabs-wrapper" class="code-tabs"><ul class="code-tab-list">${codeTabContent}</ul></div>
|
||||
<div id="page-content-wrapper" class="body-content container-fluid">${bodyContent}</div>
|
||||
</div>
|
||||
<script src="node_modules/jquery/dist/jquery.min.js"></script>
|
||||
<script src="node_modules/jquery.scrollto/jquery.scrollTo.min.js"></script>
|
||||
<script src="navData.js"></script>
|
||||
<script src="scroll.js"></script>
|
||||
<!--<script src="actions.js"></script>-->
|
||||
<script src="tabvisibility.js"></script>
|
||||
</body>
|
||||
</html>`;
|
||||
fs.writeFile('./index.html', doc, function (err) {
|
||||
if (err) {
|
||||
return console.log(err);
|
||||
}
|
||||
console.log("index.html saved!");
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user