mirror of
https://github.com/lubosz/overte.git
synced 2025-08-07 18:41:10 +02:00
Links fixed
This commit is contained in:
parent
b32039f895
commit
22065ad611
7 changed files with 2144 additions and 447 deletions
|
@ -1,5 +1,71 @@
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var path = require('path');
|
var path = require('path');
|
||||||
|
var request = require('request');
|
||||||
|
|
||||||
|
var badLinks = [];
|
||||||
|
var baseLink = `http://localhost:8000/api-reference/`;
|
||||||
|
var linkList = fs.readFileSync(__dirname + '/Links-Untouched','utf8').split('\n');
|
||||||
|
console.log("link list", linkList);
|
||||||
|
// console.log("filtered List", JSON.stringify(filteredList));
|
||||||
|
var linkHash = {};
|
||||||
|
|
||||||
|
var currentGroup;
|
||||||
|
linkList.forEach( link => {
|
||||||
|
link = link.trim()
|
||||||
|
console.log("link", link)
|
||||||
|
if (link.slice(-1) === ':'){
|
||||||
|
currentGroup = link.slice(0, link.length-1);
|
||||||
|
// console.log("current Group: ", currentGroup);
|
||||||
|
linkHash[currentGroup] = {};
|
||||||
|
} else {
|
||||||
|
if (!linkHash[currentGroup][link]){
|
||||||
|
linkHash[currentGroup][link] = link;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// console.log("linkHash:", JSON.stringify(linkHash))
|
||||||
|
var badLinks = [];
|
||||||
|
|
||||||
|
|
||||||
|
var stream = fs.createWriteStream("badLinks", {flags: 'a'});
|
||||||
|
var linkReg = /="([\s\S]*?)"/g
|
||||||
|
var keys = Object.keys(linkHash);
|
||||||
|
|
||||||
|
keys.forEach( key => {
|
||||||
|
for (var linkKey in linkHash[key]){
|
||||||
|
var link = linkHash[key][linkKey];
|
||||||
|
console.log("link", link);
|
||||||
|
var extractLink = link.split(`"`)[1];
|
||||||
|
console.log("extractLink", extractLink)
|
||||||
|
if (!extractLink.indexOf('http') > -1){
|
||||||
|
extractLink = baseLink + extractLink;
|
||||||
|
}
|
||||||
|
console.log("about to make a request for", extractLink)
|
||||||
|
setTimeout(function(){
|
||||||
|
request.get(extractLink)
|
||||||
|
.on('response', response => {
|
||||||
|
if (response.statusCode(404)){
|
||||||
|
console.log("found bad link")
|
||||||
|
console.log(JSON.stringify({file: key, link: extractLink}))
|
||||||
|
|
||||||
|
// badLinks.push({file: key, link: link})
|
||||||
|
stream.write(JSON.stringify({file: key, link: extractLink}));
|
||||||
|
}
|
||||||
|
}, 4000)
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
stream.end();
|
||||||
|
// */
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function endsWith(path, exts) {
|
function endsWith(path, exts) {
|
||||||
var result = false;
|
var result = false;
|
||||||
|
@ -74,14 +140,19 @@ function parse() {
|
||||||
// load entire file into a string
|
// load entire file into a string
|
||||||
var data = fs.readFileSync(pathDir, "utf8");
|
var data = fs.readFileSync(pathDir, "utf8");
|
||||||
var fileName = path.basename(file);
|
var fileName = path.basename(file);
|
||||||
var badJSDocWarnings = checkForBadJSDoc(data, fileName);
|
// var badJSDocWarnings = checkForBadJSDoc(data, fileName);
|
||||||
if (badJSDocWarnings.length > 0){
|
// if (badJSDocWarnings.length > 0){
|
||||||
warnings.push(badJSDocWarnings);
|
// warnings.push(badJSDocWarnings);
|
||||||
}
|
// }
|
||||||
var badWordsList = checkForBadwordlist(data, fileName);
|
// var badWordsList = checkForBadwordlist(data, fileName);
|
||||||
if (badWordsList){
|
// if (badWordsList){
|
||||||
warnings.push(badWordsList);
|
// warnings.push(badWordsList);
|
||||||
}
|
// }
|
||||||
|
// var dotDescriptionList = checkForDotDescription(data, fileName);
|
||||||
|
// if (dotDescriptionList.length > 0){
|
||||||
|
// warnings.push(dotDescriptionList);
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -104,6 +175,16 @@ function checkForBadJSDoc(dataToSearch, file){
|
||||||
return warningList;
|
return warningList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function checkForDotDescription(dataToSearch, file){
|
||||||
|
var warningList = [];
|
||||||
|
var reg = /@property {.+?\..+?}/g
|
||||||
|
var matches = dataToSearch.match(reg);
|
||||||
|
if (matches) {
|
||||||
|
warningList.push(new WarningObject(file, "dotDescription", matches));
|
||||||
|
}
|
||||||
|
return warningList;
|
||||||
|
}
|
||||||
|
|
||||||
var badWordList = ["@params", "@return", "@bool"];
|
var badWordList = ["@params", "@return", "@bool"];
|
||||||
|
|
||||||
function checkForBadwordlist(dataToSearch, file){
|
function checkForBadwordlist(dataToSearch, file){
|
||||||
|
|
1484
tools/jsdoc/Links-Untouched
Normal file
1484
tools/jsdoc/Links-Untouched
Normal file
File diff suppressed because it is too large
Load diff
0
tools/jsdoc/badLinks
Normal file
0
tools/jsdoc/badLinks
Normal file
|
@ -1,446 +1,474 @@
|
||||||
// Dependencies
|
// Dependencies
|
||||||
const htmlclean = require('htmlclean');
|
const htmlclean = require('htmlclean');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const pretty = require('pretty');
|
const pretty = require('pretty');
|
||||||
const cheerio = require('cheerio');
|
const cheerio = require('cheerio');
|
||||||
const rimraf = require('rimraf');
|
const rimraf = require('rimraf');
|
||||||
const dedent = require('dedent-js');
|
const dedent = require('dedent-js');
|
||||||
|
|
||||||
// Arg Vars
|
// Arg Vars
|
||||||
const copyLocal = process.argv[2];
|
const copyLocal = process.argv[2];
|
||||||
console.log("copyLocal:", copyLocal);
|
console.log("copyLocal:", copyLocal);
|
||||||
let targetTemplateDirectory = ''
|
let targetTemplateDirectory = ''
|
||||||
let targetMDDirectory = ''
|
let targetMDDirectory = ''
|
||||||
if (copyLocal){
|
if (copyLocal){
|
||||||
targetTemplateDirectory = process.argv[3];
|
targetTemplateDirectory = process.argv[3];
|
||||||
targetMDDirectory = process.argv[4];;
|
targetMDDirectory = process.argv[4];;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Required directories
|
// Required directories
|
||||||
let dir_out = path.join(__dirname, 'out');
|
let dir_out = path.join(__dirname, 'out');
|
||||||
|
|
||||||
let dir_grav = path.join(dir_out, 'grav');
|
let dir_grav = path.join(dir_out, 'grav');
|
||||||
let dir_css = path.join(dir_grav, 'css');
|
let dir_css = path.join(dir_grav, 'css');
|
||||||
let dir_js = path.join(dir_grav, 'js');
|
let dir_js = path.join(dir_grav, 'js');
|
||||||
let dir_template = path.join(dir_grav, 'templates');
|
let dir_template = path.join(dir_grav, 'templates');
|
||||||
|
|
||||||
|
let dir_md = path.join(dir_grav, '06.api-reference');
|
||||||
|
let dir_md_objects = path.join(dir_md, '02.Objects');
|
||||||
|
let dir_md_namespaces = path.join(dir_md, '01.Namespaces');
|
||||||
|
let dir_md_globals = path.join(dir_md, '03.Globals');
|
||||||
|
|
||||||
let dir_md = path.join(dir_grav, '06.api-reference');
|
|
||||||
let dir_md_objects = path.join(dir_md, '02.Objects');
|
|
||||||
let dir_md_namespaces = path.join(dir_md, '01.Namespaces');
|
|
||||||
let dir_md_globals = path.join(dir_md, '03.Globals');
|
|
||||||
|
|
||||||
// Array to itterate over and create if doesn't exist
|
// Array to itterate over and create if doesn't exist
|
||||||
let dirArray = [dir_grav, dir_css, dir_js, dir_template, dir_md, dir_md_objects, dir_md_namespaces, dir_md_globals];
|
let dirArray = [dir_grav, dir_css, dir_js, dir_template, dir_md, dir_md_objects, dir_md_namespaces, dir_md_globals];
|
||||||
|
|
||||||
// Maps for directory names
|
// Maps for directory names
|
||||||
let map_dir_md = {
|
let map_dir_md = {
|
||||||
"API-Reference": dir_md,
|
"API-Reference": dir_md,
|
||||||
"Globals": dir_md_globals,
|
"Globals": dir_md_globals,
|
||||||
"Objects": dir_md_objects,
|
"Objects": dir_md_objects,
|
||||||
"Namespaces": dir_md_namespaces,
|
"Namespaces": dir_md_namespaces,
|
||||||
"Class": dir_md_objects,
|
"Class": dir_md_objects,
|
||||||
"Namespace": dir_md_namespaces,
|
"Namespace": dir_md_namespaces,
|
||||||
"Global": dir_md_globals
|
"Global": dir_md_globals
|
||||||
}
|
}
|
||||||
|
|
||||||
// Base Grouping Directories for MD files
|
// Base Grouping Directories for MD files
|
||||||
let baseMDDirectories = ["API-Reference", "Globals", "Namespaces", "Objects"]
|
let baseMDDirectories = ["API-Reference", "Globals", "Namespaces", "Objects"]
|
||||||
|
|
||||||
// Html variables to be handle regex replacements
|
// Html variables to be handle regex replacements
|
||||||
const html_reg_static = /<span class="type-signature">\(static\)<\/span>/g
|
const html_reg_static = /<span class="type-signature">\(static\)<\/span>/g
|
||||||
const html_reg_title = /\<h1.+?\>.+?\<\/h1\>/g;
|
const html_reg_title = /\<h1.+?\>.+?\<\/h1\>/g;
|
||||||
const html_reg_htmlExt = /\.html/g;
|
const html_reg_htmlExt = /\.html/g;
|
||||||
const html_reg_objectHeader = /<header>[\s\S]+?<\/header>/;
|
const html_reg_objectHeader = /<header>[\s\S]+?<\/header>/;
|
||||||
const html_reg_objectSpanNew = /<h4 class="name"[\s\S]+?<\/span><\/h4>/;
|
const html_reg_objectSpanNew = /<h4 class="name"[\s\S]+?<\/span><\/h4>/;
|
||||||
const html_reg_brRemove = /<br>[\s\S]+?<br>/;
|
const html_reg_brRemove = /<br>[\s\S]+?<br>/;
|
||||||
const html_reg_subsectionEdit = /(<h. class="subsection-title">)([\s\S]*?)(<\/h.>)/g;
|
const html_reg_subsectionEdit = /(<h. class="subsection-title">)([\s\S]*?)(<\/h.>)/g;
|
||||||
const html_reg_subsectionEdit_replace = '<h4 class="subsection-title">$2</h4>';
|
const html_reg_subsectionEdit_replace = '<h4 class="subsection-title">$2</h4>';
|
||||||
const html_reg_propertiesHeaderEdit = '<h4 class="subsection-title">Properties:</h4>';
|
const html_reg_propertiesHeaderEdit = '<h4 class="subsection-title">Properties:</h4>';
|
||||||
const html_reg_propertiesHeaderEdit_Replace = '<h4 class="subsection-title">Properties</h4>';
|
const html_reg_propertiesHeaderEdit_Replace = '<h4 class="subsection-title">Properties</h4>';
|
||||||
const html_reg_typeEdit = /(<h5>Returns[\s\S]*?Type)(<\/dt[\s\S]*?type">)(.*?)(<\/span><\/dd>[\s\S]*?<\/dl>)/g;
|
const html_reg_typeEdit = /(<h5>Returns[\s\S]*?Type)(<\/dt[\s\S]*?type">)(.*?)(<\/span><\/dd>[\s\S]*?<\/dl>)/g;
|
||||||
const html_reg_typeEdit_replace = '$1: $3</dt></dl>'
|
const html_reg_typeEdit_replace = '$1: $3</dt></dl>'
|
||||||
const html_reg_methodSize = /(<h4)( class="name"[\s\S].*?<\/span>)(<\/h4>)/g;
|
const html_reg_methodSize = /(<h4)( class="name"[\s\S].*?<\/span>)(<\/h4>)/g;
|
||||||
const html_reg_methodSize_replace = '<h5$2</h5>';
|
const html_reg_methodSize_replace = '<h5$2</h5>';
|
||||||
const html_reg_typeDefSize = /(<h4)( class="name"[\s\S].*?)(<\/h4>)/g;
|
const html_reg_typeDefSize = /(<h4)( class="name"[\s\S].*?)(<\/h4>)/g;
|
||||||
const html_reg_typeDefSize_replace = '<h5$2</h5>';
|
const html_reg_typeDefSize_replace = '<h5$2</h5>';
|
||||||
const html_reg_returnSize = /<h5>Returns:<\/h5>/g;
|
const html_reg_returnSize = /<h5>Returns:<\/h5>/g;
|
||||||
const html_reg_returnSize_replace = '<h6>Returns:<\/h6>';
|
const html_reg_returnSize_replace = '<h6>Returns:<\/h6>';
|
||||||
const html_reg_findByName = '<h5 class="name"';
|
const html_reg_findByName = '<h5 class="name"';
|
||||||
const html_reg_findByTitle = '<h1>';
|
const html_reg_findByTitle = '<h1>';
|
||||||
const html_reg_findByMethod = `<h4 class="subsection-title">Methods</h4>`;
|
const html_reg_findByMethod = `<h4 class="subsection-title">Methods</h4>`;
|
||||||
const html_reg_findByArticleClose = `</article>`
|
const html_reg_findByArticleClose = `</article>`
|
||||||
const html_reg_signalTitle = `<h4 class="subsection-title">Signals</h4>`;
|
const html_reg_signalTitle = `<h4 class="subsection-title">Signals</h4>`;
|
||||||
const html_reg_typeDefinitonsTitle = `<h4 class="subsection-title">Type Definitions</h4>`;
|
const html_reg_typeDefinitonsTitle = `<h4 class="subsection-title">Type Definitions</h4>`;
|
||||||
|
const html_reg_firstTableClose = `</table>`;
|
||||||
|
|
||||||
|
|
||||||
// Mapping for GroupNames and Members
|
// Mapping for GroupNames and Members
|
||||||
let groupNameMemberMap = {
|
let groupNameMemberMap = {
|
||||||
"Objects": [],
|
"Objects": [],
|
||||||
"Namespaces": [],
|
"Namespaces": [],
|
||||||
"Globals": []
|
"Globals": []
|
||||||
}
|
}
|
||||||
|
|
||||||
// Procedural functions
|
// Procedural functions
|
||||||
// Create the actual MD file
|
// Create the actual MD file
|
||||||
function createMD(title, directory, needsDir, isGlobal){
|
function createMD(title, directory, needsDir, isGlobal){
|
||||||
let mdSource = makeMdSource(title);
|
let mdSource = makeMdSource(title);
|
||||||
|
|
||||||
if (needsDir){
|
if (needsDir){
|
||||||
if (!fs.existsSync(directory)) {
|
if (!fs.existsSync(directory)) {
|
||||||
fs.mkdirSync(directory);
|
fs.mkdirSync(directory);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let destinationMDFile = path.join(directory, `API_${title}.md`);
|
|
||||||
fs.writeFileSync(destinationMDFile, mdSource);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create the actual Template file
|
|
||||||
function createTemplate(title,content){
|
|
||||||
let twigBasePartial = makeTwigFile(content);
|
|
||||||
let destinationFile = path.join(dir_template, `API_${title}.html.twig`);
|
|
||||||
fs.writeFileSync(destinationFile, twigBasePartial);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Copy file from source to target - used for recurssive call
|
|
||||||
function copyFileSync( source, target ) {
|
|
||||||
let targetFile = target;
|
|
||||||
|
|
||||||
// If target is a directory a new file with the same name will be created
|
|
||||||
if ( fs.existsSync( target ) ) {
|
|
||||||
// console.log("target exists");
|
|
||||||
if ( fs.lstatSync( target ).isDirectory() ) {
|
|
||||||
// console.log("target is a directory");
|
|
||||||
|
|
||||||
targetFile = path.join( target, path.basename( source ) );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fs.writeFileSync(targetFile, fs.readFileSync(source));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Copy file from source to target
|
|
||||||
function copyFolderRecursiveSync( source, target ) {
|
|
||||||
var files = [];
|
|
||||||
|
|
||||||
// Check if folder needs to be created or integrated
|
|
||||||
var targetFolder = path.join( target, path.basename( source ) );
|
|
||||||
if ( !fs.existsSync( targetFolder ) ) {
|
|
||||||
fs.mkdirSync( targetFolder );
|
|
||||||
}
|
|
||||||
|
|
||||||
// Copy
|
|
||||||
if ( fs.lstatSync( source ).isDirectory() ) {
|
|
||||||
files = fs.readdirSync( source );
|
|
||||||
files.forEach( function ( file ) {
|
|
||||||
var curSource = path.join( source, file );
|
|
||||||
if ( fs.lstatSync( curSource ).isDirectory() ) {
|
|
||||||
copyFolderRecursiveSync( curSource, targetFolder );
|
|
||||||
} else {
|
|
||||||
copyFileSync( curSource, targetFolder );
|
|
||||||
}
|
|
||||||
} );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clean up the Html
|
let destinationMDFile = path.join(directory, `API_${title}.md`);
|
||||||
function prepareHtml(source){
|
fs.writeFileSync(destinationMDFile, mdSource);
|
||||||
let htmlBefore = fs.readFileSync(source, {encoding: 'utf8'});
|
}
|
||||||
let htmlAfter = htmlclean(htmlBefore);
|
|
||||||
let htmlAfterPretty = pretty(htmlAfter);
|
|
||||||
return cheerio.load(htmlAfterPretty);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Base file for MD's
|
// Create the actual Template file
|
||||||
function makeMdSource(title){
|
function createTemplate(title,content){
|
||||||
return dedent(
|
let twigBasePartial = makeTwigFile(content);
|
||||||
`
|
let destinationFile = path.join(dir_template, `API_${title}.html.twig`);
|
||||||
---
|
fs.writeFileSync(destinationFile, twigBasePartial);
|
||||||
title: ${title}
|
}
|
||||||
taxonomy:
|
|
||||||
category:
|
|
||||||
- docs
|
|
||||||
visible: true
|
|
||||||
---
|
|
||||||
`
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Base file for Templates
|
// Copy file from source to target - used for recurssive call
|
||||||
function makeTwigFile(contentHtml){
|
function copyFileSync( source, target ) {
|
||||||
return dedent(
|
let targetFile = target;
|
||||||
`
|
|
||||||
{% extends 'partials/base_noGit.html.twig' %}
|
// If target is a directory a new file with the same name will be created
|
||||||
{% set tags = page.taxonomy.tag %}
|
if ( fs.existsSync( target ) ) {
|
||||||
{% if tags %}
|
// console.log("target exists");
|
||||||
{% set progress = page.collection({'items':{'@taxonomy':{'category': 'docs', 'tag': tags}},'order': {'by': 'default', 'dir': 'asc'}}) %}
|
if ( fs.lstatSync( target ).isDirectory() ) {
|
||||||
{% else %}
|
// console.log("target is a directory");
|
||||||
{% set progress = page.collection({'items':{'@taxonomy':{'category': 'docs'}},'order': {'by': 'default', 'dir': 'asc'}}) %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% block navigation %}
|
targetFile = path.join( target, path.basename( source ) );
|
||||||
<div id="navigation">
|
|
||||||
{% if not progress.isFirst(page.path) %}
|
|
||||||
<a class="nav nav-prev" href="{{ progress.nextSibling(page.path).url }}"> <img src="{{ url('theme://images/left-arrow.png') }}"></a>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if not progress.isLast(page.path) %}
|
|
||||||
<a class="nav nav-next" href="{{ progress.prevSibling(page.path).url }}"><img src="{{ url('theme://images/right-arrow.png') }}"></a>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
<div id="body-inner">
|
|
||||||
<h1>{{ page.title }}</h1>
|
|
||||||
${contentHtml}
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
||||||
`
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle NameSpace Group
|
|
||||||
function handleNamespace(title, content){
|
|
||||||
groupNameMemberMap["Namespaces"].push(title);
|
|
||||||
let destinationDirectory = path.join(map_dir_md["Namespace"], title);
|
|
||||||
createMD(title, destinationDirectory, true);
|
|
||||||
createTemplate(title, content);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle Class Group
|
|
||||||
function handleClass(title, content){
|
|
||||||
groupNameMemberMap["Objects"].push(title);
|
|
||||||
let destinationDirectory = path.join(map_dir_md["Class"], title);
|
|
||||||
createMD(title, destinationDirectory, true)
|
|
||||||
|
|
||||||
let formatedHtml = content
|
|
||||||
.replace(html_reg_objectSpanNew,"")
|
|
||||||
createTemplate(title, formatedHtml);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle Global Group
|
|
||||||
function handleGlobal(title, content){
|
|
||||||
groupNameMemberMap["Globals"].push("Globals");
|
|
||||||
createMD("Globals", map_dir_md["Global"], false, true);
|
|
||||||
createTemplate("Globals", content);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle Group TOCs
|
|
||||||
function makeGroupTOC(group){
|
|
||||||
let mappedGroup;
|
|
||||||
if (!Array.isArray(group)){
|
|
||||||
mappedGroup = groupNameMemberMap[group];
|
|
||||||
} else {
|
|
||||||
mappedGroup = group;
|
|
||||||
}
|
}
|
||||||
let htmlGroup = mappedGroup.map( item => {
|
|
||||||
return dedent(
|
|
||||||
`
|
|
||||||
<div>
|
|
||||||
<a href="/api-reference/${
|
|
||||||
!Array.isArray(group)
|
|
||||||
? `${group.toLowerCase()}/` + item.toLowerCase()
|
|
||||||
: item.toLowerCase()
|
|
||||||
}/">${item}</a>
|
|
||||||
</div>
|
|
||||||
`
|
|
||||||
)
|
|
||||||
})
|
|
||||||
return htmlGroup.join("\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle Class TOCS
|
fs.writeFileSync(targetFile, fs.readFileSync(source));
|
||||||
function makeClassTOC(group){
|
}
|
||||||
let linkArray = []
|
|
||||||
group.forEach( item => {
|
// Copy file from source to target
|
||||||
linkArray.push(`<div><h5>${item.type}</h5></div>`)
|
function copyFolderRecursiveSync( source, target ) {
|
||||||
item.array.forEach( link => {
|
var files = [];
|
||||||
linkArray.push(`<div><a href="#.${link.slice(1)}">${link.slice(1)}</a></div>`)
|
|
||||||
})
|
// Check if folder needs to be created or integrated
|
||||||
})
|
var targetFolder = path.join( target, path.basename( source ) );
|
||||||
return linkArray.join("\n");
|
if ( !fs.existsSync( targetFolder ) ) {
|
||||||
|
fs.mkdirSync( targetFolder );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extract IDS for TOC
|
// Copy
|
||||||
function extractIDs(groupToExtract){
|
if ( fs.lstatSync( source ).isDirectory() ) {
|
||||||
let firstLine = "";
|
files = fs.readdirSync( source );
|
||||||
let id = "";
|
files.forEach( function ( file ) {
|
||||||
let extractedIDs = [];
|
var curSource = path.join( source, file );
|
||||||
groupToExtract.forEach((item)=>{
|
if ( fs.lstatSync( curSource ).isDirectory() ) {
|
||||||
firstLine = item.split("\n")[0];
|
copyFolderRecursiveSync( curSource, targetFolder );
|
||||||
try {
|
|
||||||
id = firstLine.split('id="')[1].split(`"`)[0];
|
|
||||||
} catch (e){
|
|
||||||
|
|
||||||
}
|
|
||||||
extractedIDs.push(id)
|
|
||||||
})
|
|
||||||
return extractedIDs;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Helper for splitting up html
|
|
||||||
// Takes: Content to split, SearchTerm to Split by, term to End Splitting By, and negate Term object array
|
|
||||||
// negateTermObject { term: "<code>", distance: "3"}
|
|
||||||
// Returns: [newContent after Split, Array of extracted ]
|
|
||||||
function splitBy(content, searchTerm, endSplitTerm){
|
|
||||||
let foundArray = [];
|
|
||||||
let curIndex = -1;
|
|
||||||
let afterCurSearchIndex = -1
|
|
||||||
let negateTermIndex = -1;
|
|
||||||
let nextIndex = 0;
|
|
||||||
let findbyNameLength = searchTerm.length;
|
|
||||||
let curfoundArrayIndex = 0;
|
|
||||||
let curEndSplitTermIndex = -1;
|
|
||||||
do {
|
|
||||||
curEndSplitTermIndex = content.indexOf(endSplitTerm);
|
|
||||||
curIndex = content.indexOf(searchTerm);
|
|
||||||
afterCurSearchIndex = curIndex+findbyNameLength;
|
|
||||||
nextIndex = content.indexOf(searchTerm,afterCurSearchIndex);
|
|
||||||
if (nextIndex === -1){
|
|
||||||
nextIndex = curEndSplitTermIndex;
|
|
||||||
}
|
|
||||||
foundArray.push(content.slice(curIndex, nextIndex))
|
|
||||||
// remove that content
|
|
||||||
content = content.replace(foundArray[curfoundArrayIndex], "");
|
|
||||||
curfoundArrayIndex++;
|
|
||||||
} while (curIndex > -1)
|
|
||||||
return [content, foundArray];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Split the signals, methods, and typeDefs [Might make this more generic]
|
|
||||||
function splitMethodsSignalsAndTypeDefs(allItemToSplit){
|
|
||||||
let methodArray = [];
|
|
||||||
let signalArray = [];
|
|
||||||
let typeDefArray = [];
|
|
||||||
console.log(allItemToSplit.length);
|
|
||||||
allItemToSplit.forEach( method => {
|
|
||||||
firstLine = method.split("\n")[0];
|
|
||||||
if (firstLine.indexOf("Signal") > -1){
|
|
||||||
console.log("Found signal")
|
|
||||||
signalArray.push(method);
|
|
||||||
} else if (firstLine.indexOf("span") > -1) {
|
|
||||||
// console.log("Found method")
|
|
||||||
methodArray.push(method);
|
|
||||||
} else {
|
} else {
|
||||||
// console.log("Found typeDef")
|
copyFileSync( curSource, targetFolder );
|
||||||
|
|
||||||
typeDefArray.push(method);
|
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
return [methodArray, signalArray, typeDefArray];
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Helper to append
|
// Clean up the Html
|
||||||
// Takes content, the search term to appendTo, the content to append,
|
function prepareHtml(source){
|
||||||
// and bool if the append is before the found area
|
let htmlBefore = fs.readFileSync(source, {encoding: 'utf8'});
|
||||||
function append(content, searchTermToAppendto, contentToAppend, appendBefore){
|
let htmlAfter = htmlclean(htmlBefore);
|
||||||
let contentArray = content.split("\n");
|
let htmlAfterPretty = pretty(htmlAfter);
|
||||||
let foundIndex = findArrayTrim(contentArray, searchTermToAppendto)
|
return cheerio.load(htmlAfterPretty);
|
||||||
foundIndex = appendBefore ? foundIndex : foundIndex +1
|
}
|
||||||
|
|
||||||
|
// Base file for MD's
|
||||||
|
function makeMdSource(title){
|
||||||
|
return dedent(
|
||||||
|
`
|
||||||
|
---
|
||||||
|
title: ${title}
|
||||||
|
taxonomy:
|
||||||
|
category:
|
||||||
|
- docs
|
||||||
|
visible: true
|
||||||
|
---
|
||||||
|
`
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Base file for Templates
|
||||||
|
function makeTwigFile(contentHtml){
|
||||||
|
return dedent(
|
||||||
|
`
|
||||||
|
{% extends 'partials/base_noGit.html.twig' %}
|
||||||
|
{% set tags = page.taxonomy.tag %}
|
||||||
|
{% if tags %}
|
||||||
|
{% set progress = page.collection({'items':{'@taxonomy':{'category': 'docs', 'tag': tags}},'order': {'by': 'default', 'dir': 'asc'}}) %}
|
||||||
|
{% else %}
|
||||||
|
{% set progress = page.collection({'items':{'@taxonomy':{'category': 'docs'}},'order': {'by': 'default', 'dir': 'asc'}}) %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
contentArray.splice(foundIndex,0,contentToAppend)
|
{% block navigation %}
|
||||||
return contentArray.join("\n")
|
<div id="navigation">
|
||||||
}
|
{% if not progress.isFirst(page.path) %}
|
||||||
|
<a class="nav nav-prev" href="{{ progress.nextSibling(page.path).url }}"> <img src="{{ url('theme://images/left-arrow.png') }}"></a>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if not progress.isLast(page.path) %}
|
||||||
|
<a class="nav nav-next" href="{{ progress.prevSibling(page.path).url }}"><img src="{{ url('theme://images/right-arrow.png') }}"></a>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div id="body-inner">
|
||||||
|
<h1>{{ page.title }}</h1>
|
||||||
|
${contentHtml}
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
|
`
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
// Helper function for append
|
// Handle NameSpace Group
|
||||||
function findArrayTrim(array, searchTerm){
|
function handleNamespace(title, content){
|
||||||
var index = -1;
|
groupNameMemberMap["Namespaces"].push(title);
|
||||||
for (var i = 0; i < array.length; i++){
|
let destinationDirectory = path.join(map_dir_md["Namespace"], title);
|
||||||
index = array[i].trim().indexOf(searchTerm.trim());
|
createMD(title, destinationDirectory, true);
|
||||||
if (index > -1){
|
createTemplate(title, content);
|
||||||
return i
|
}
|
||||||
|
|
||||||
|
// Handle Class Group
|
||||||
|
function handleClass(title, content){
|
||||||
|
groupNameMemberMap["Objects"].push(title);
|
||||||
|
let destinationDirectory = path.join(map_dir_md["Class"], title);
|
||||||
|
createMD(title, destinationDirectory, true)
|
||||||
|
|
||||||
|
let formatedHtml = content
|
||||||
|
.replace(html_reg_objectSpanNew,"")
|
||||||
|
createTemplate(title, formatedHtml);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle Global Group
|
||||||
|
function handleGlobal(title, content){
|
||||||
|
groupNameMemberMap["Globals"].push("Globals");
|
||||||
|
createMD("Globals", map_dir_md["Global"], false, true);
|
||||||
|
createTemplate("Globals", content);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle Group TOCs
|
||||||
|
function makeGroupTOC(group){
|
||||||
|
let mappedGroup;
|
||||||
|
if (!Array.isArray(group)){
|
||||||
|
mappedGroup = groupNameMemberMap[group];
|
||||||
|
} else {
|
||||||
|
mappedGroup = group;
|
||||||
|
}
|
||||||
|
let htmlGroup = mappedGroup.map( item => {
|
||||||
|
return dedent(
|
||||||
|
`
|
||||||
|
<div>
|
||||||
|
<a href="/api-reference/${
|
||||||
|
!Array.isArray(group)
|
||||||
|
? `${group.toLowerCase()}/` + item.toLowerCase()
|
||||||
|
: item.toLowerCase()
|
||||||
|
}/">${item}</a>
|
||||||
|
</div>
|
||||||
|
`
|
||||||
|
)
|
||||||
|
})
|
||||||
|
return htmlGroup.join("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle Class TOCS
|
||||||
|
function makeClassTOC(group){
|
||||||
|
console.log("group", group)
|
||||||
|
let linkArray = []
|
||||||
|
group.forEach( item => {
|
||||||
|
linkArray.push(`<div><h5>${item.type}</h5></div>`)
|
||||||
|
item.array.forEach( link => {
|
||||||
|
if ( link.indexOf('.') > -1 ){
|
||||||
|
linkArray.push(`<div><a href="#.${link}">${link.slice(1)}</a></div>`);
|
||||||
|
} else {
|
||||||
|
linkArray.push(`<div><a href="#${link}">${link}</a></div>`);
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
linkArray.push("<br>");
|
||||||
|
})
|
||||||
|
return linkArray.join("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Extract IDS for TOC
|
||||||
|
function extractIDs(groupToExtract){
|
||||||
|
let firstLine = "";
|
||||||
|
let id = "";
|
||||||
|
let extractedIDs = [];
|
||||||
|
groupToExtract.forEach((item)=>{
|
||||||
|
firstLine = item.split("\n")[0];
|
||||||
|
try {
|
||||||
|
id = firstLine.split('id="')[1].split(`"`)[0];
|
||||||
|
} catch (e){
|
||||||
|
|
||||||
|
}
|
||||||
|
extractedIDs.push(id)
|
||||||
|
})
|
||||||
|
return extractedIDs;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Helper for splitting up html
|
||||||
|
// Takes: Content to split, SearchTerm to Split by, and term to End Splitting By
|
||||||
|
// Returns: [newContent after Split, Array of extracted ]
|
||||||
|
function splitBy(content, searchTerm, endSplitTerm){
|
||||||
|
let foundArray = [];
|
||||||
|
let curIndex = -1;
|
||||||
|
let afterCurSearchIndex = -1
|
||||||
|
let negateTermIndex = -1;
|
||||||
|
let nextIndex = 0;
|
||||||
|
let findbyNameLength = searchTerm.length;
|
||||||
|
let curfoundArrayIndex = 0;
|
||||||
|
let curEndSplitTermIndex = -1;
|
||||||
|
do {
|
||||||
|
curEndSplitTermIndex = content.indexOf(endSplitTerm);
|
||||||
|
curIndex = content.indexOf(searchTerm);
|
||||||
|
afterCurSearchIndex = curIndex+findbyNameLength;
|
||||||
|
nextIndex = content.indexOf(searchTerm,afterCurSearchIndex);
|
||||||
|
if (nextIndex === -1){
|
||||||
|
nextIndex = curEndSplitTermIndex;
|
||||||
|
}
|
||||||
|
foundArray.push(content.slice(curIndex, nextIndex))
|
||||||
|
// remove that content
|
||||||
|
content = content.replace(foundArray[curfoundArrayIndex], "");
|
||||||
|
curfoundArrayIndex++;
|
||||||
|
} while (curIndex > -1)
|
||||||
|
return [content, foundArray];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Split the signals and methods [Might make this more generic]
|
||||||
|
function splitMethodsSignalsAndTypeDefs(allItemToSplit){
|
||||||
|
let methodArray = [];
|
||||||
|
let signalArray = [];
|
||||||
|
let typeDefArray = [];
|
||||||
|
let description;
|
||||||
|
// console.log(allItemToSplit.length);
|
||||||
|
allItemToSplit.forEach( content => {
|
||||||
|
firstLine = content.split("\n")[0];
|
||||||
|
if (firstLine.indexOf("Signal") > -1){
|
||||||
|
// console.log("Found signal")
|
||||||
|
signalArray.push(content);
|
||||||
|
} else if (firstLine.indexOf("span") > -1) {
|
||||||
|
// console.log("Found method")
|
||||||
|
if (content.indexOf("Available") > -1){
|
||||||
|
console.log("found Available");
|
||||||
|
description = content;
|
||||||
|
} else {
|
||||||
|
methodArray.push(content);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// console.log("Found typeDef")
|
||||||
|
if(firstLine.trim() !== ""){
|
||||||
|
typeDefArray.push(content);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return index;
|
})
|
||||||
|
return [methodArray, signalArray, typeDefArray, description];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Helper to append
|
||||||
|
// Takes content, the search term to appendTo, the content to append,
|
||||||
|
// and bool if the append is before the found area
|
||||||
|
function append(content, searchTermToAppendto, contentToAppend, appendBefore){
|
||||||
|
let contentArray = content.split("\n");
|
||||||
|
let foundIndex = findArrayTrim(contentArray, searchTermToAppendto)
|
||||||
|
foundIndex = appendBefore ? foundIndex : foundIndex +1
|
||||||
|
|
||||||
|
contentArray.splice(foundIndex,0,contentToAppend)
|
||||||
|
return contentArray.join("\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Helper function for append
|
||||||
|
function findArrayTrim(array, searchTerm){
|
||||||
|
var index = -1;
|
||||||
|
for (var i = 0; i < array.length; i++){
|
||||||
|
index = array[i].trim().indexOf(searchTerm.trim());
|
||||||
|
if (index > -1){
|
||||||
|
return i
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Remove grav directory if exists to make sure old files aren't kept
|
// Remove grav directory if exists to make sure old files aren't kept
|
||||||
if (fs.existsSync(dir_grav)){
|
if (fs.existsSync(dir_grav)){
|
||||||
console.log("dir_grav exists");
|
console.log("dir_grav exists");
|
||||||
rimraf.sync(dir_grav);
|
rimraf.sync(dir_grav);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create Grav directories in JSDOC output
|
// Create Grav directories in JSDOC output
|
||||||
dirArray.forEach(function(dir){
|
dirArray.forEach(function(dir){
|
||||||
if (!fs.existsSync(dir)) {
|
if (!fs.existsSync(dir)) {
|
||||||
fs.mkdirSync(dir);
|
fs.mkdirSync(dir);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
// Create baseMD files
|
// Create baseMD files
|
||||||
baseMDDirectories.forEach( md => {
|
baseMDDirectories.forEach( md => {
|
||||||
createMD(md, map_dir_md[md]);
|
createMD(md, map_dir_md[md]);
|
||||||
})
|
})
|
||||||
|
|
||||||
// Read jsdoc output folder and process html files
|
// Read jsdoc output folder and process html files
|
||||||
let curSource = path.join(dir_out, "Controller.html");
|
let curSource = path.join(dir_out, 'global.html');
|
||||||
if (path.extname(curSource) == ".html" && path.basename(curSource, '.html') !== "index") {
|
if (path.extname(curSource) == ".html" && path.basename(curSource, '.html') !== "index") {
|
||||||
// Clean up the html source
|
// Clean up the html source
|
||||||
let loadedHtml = prepareHtml(curSource);
|
let loadedHtml = prepareHtml(curSource);
|
||||||
|
|
||||||
// Extract the title, group name, and the main div
|
// Extract the title, group name, and the main div
|
||||||
let splitTitle = loadedHtml("title").text().split(": ");
|
let splitTitle = loadedHtml("title").text().split(": ");
|
||||||
let groupName = splitTitle[1];
|
let groupName = splitTitle[1];
|
||||||
let htmlTitle = splitTitle.pop();
|
let htmlTitle = splitTitle.pop();
|
||||||
let mainDiv = loadedHtml("#main")
|
let mainDiv = loadedHtml("#main")
|
||||||
|
|
||||||
let methodIDs = [];
|
let methodIDs = [];
|
||||||
let signalIDs = [];
|
let signalIDs = [];
|
||||||
let typeDefIDs = [];
|
let typeDefIDs = [];
|
||||||
// Basic Regex HTML edits
|
// Basic Regex HTML edits
|
||||||
let mainDivRegexed = mainDiv.html()
|
let mainDivRegexed = mainDiv.html()
|
||||||
.replace(html_reg_static,"")
|
.replace(html_reg_static,"")
|
||||||
.replace(html_reg_title,"")
|
.replace(html_reg_title,"")
|
||||||
.replace(html_reg_objectHeader,"")
|
.replace(html_reg_objectHeader,"")
|
||||||
.replace(html_reg_htmlExt,"")
|
.replace(html_reg_htmlExt,"")
|
||||||
.replace(html_reg_brRemove, "")
|
.replace(html_reg_brRemove, "")
|
||||||
.replace(html_reg_subsectionEdit, html_reg_subsectionEdit_replace)
|
.replace(html_reg_subsectionEdit, html_reg_subsectionEdit_replace)
|
||||||
.replace(html_reg_propertiesHeaderEdit, html_reg_propertiesHeaderEdit_Replace)
|
.replace(html_reg_propertiesHeaderEdit, html_reg_propertiesHeaderEdit_Replace)
|
||||||
.replace(html_reg_typeEdit, html_reg_typeEdit_replace)
|
.replace(html_reg_typeEdit, html_reg_typeEdit_replace)
|
||||||
.replace(html_reg_returnSize, html_reg_returnSize_replace)
|
.replace(html_reg_returnSize, html_reg_returnSize_replace)
|
||||||
.replace(html_reg_methodSize, html_reg_methodSize_replace)
|
.replace(html_reg_methodSize, html_reg_methodSize_replace)
|
||||||
.replace(html_reg_typeDefSize, html_reg_typeDefSize_replace)
|
.replace(html_reg_typeDefSize, html_reg_typeDefSize_replace)
|
||||||
.replace(html_reg_typeDefinitonsTitle, "");
|
.replace(html_reg_typeDefinitonsTitle, "")
|
||||||
|
.replace(html_reg_findByMethod, "");
|
||||||
|
fs.writeFileSync(__dirname + "/Examine/global.html", mainDivRegexed);
|
||||||
|
// Further HTML Manipulation
|
||||||
|
// Split HTML by Each named entry
|
||||||
|
let contentSplitArray = splitBy(mainDivRegexed, html_reg_findByName, html_reg_findByArticleClose);
|
||||||
|
// Create a reference to the current content after split and the split functions
|
||||||
|
let currentContent = contentSplitArray[0];
|
||||||
|
// Create references to the split methods and signals
|
||||||
|
let processedMethodsSignalsAndTypeDefs = splitMethodsSignalsAndTypeDefs(contentSplitArray[1]);
|
||||||
|
let splitMethods = processedMethodsSignalsAndTypeDefs[0];
|
||||||
|
let splitSignals = processedMethodsSignalsAndTypeDefs[1];
|
||||||
|
let splitTypeDefintions = processedMethodsSignalsAndTypeDefs[2];
|
||||||
|
let splitDescription = processedMethodsSignalsAndTypeDefs[3];
|
||||||
|
let splitMethodIDS = extractIDs(splitMethods);
|
||||||
|
let splitSignalIDS = extractIDs(splitSignals);
|
||||||
|
let splitTypeDefinitionIDS = extractIDs(splitTypeDefintions);
|
||||||
|
let arrayToPassToClassToc = [];
|
||||||
|
|
||||||
|
// Append Signals and Methods to the current Content
|
||||||
|
if (!splitDescription) {
|
||||||
|
currentContent = append(currentContent, html_reg_title, splitDescription);
|
||||||
|
}
|
||||||
|
if (splitMethods.length > 0) {
|
||||||
|
arrayToPassToClassToc.push({type: "Methods", array: splitMethodIDS});
|
||||||
|
// Add the Signals header to the Signals HTML
|
||||||
|
splitMethods.unshift(html_reg_findByMethod)
|
||||||
|
currentContent = append(currentContent, html_reg_findByArticleClose, splitMethods.join('\n'), true);
|
||||||
|
}
|
||||||
|
if (splitSignals.length > 0) {
|
||||||
|
arrayToPassToClassToc.push({type: "Signals", array: splitSignalIDS});
|
||||||
|
// Add the Signals header to the Signals HTML
|
||||||
|
splitSignals.unshift(html_reg_signalTitle)
|
||||||
|
currentContent = append(currentContent, html_reg_findByArticleClose, splitSignals.join('\n'),true);
|
||||||
|
}
|
||||||
|
if (splitTypeDefintions.length > 0) {
|
||||||
|
|
||||||
|
// console.log(path.basename(curSource, '.html'));
|
||||||
|
// console.log(splitTypeDefintions.length);
|
||||||
|
arrayToPassToClassToc.push({type: "Type Definitions", array: splitTypeDefinitionIDS});
|
||||||
|
// Add the Signals header to the Signals HTML
|
||||||
|
splitTypeDefintions.unshift(html_reg_typeDefinitonsTitle)
|
||||||
|
currentContent = append(currentContent, html_reg_findByArticleClose, splitTypeDefintions.join('\n'), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
let classTOC = makeClassTOC(arrayToPassToClassToc);
|
||||||
|
currentContent = append(currentContent, html_reg_firstTableClose, classTOC);
|
||||||
|
|
||||||
// Further HTML Manipulation
|
// Final Pretty Content
|
||||||
// Split HTML by Each named entry
|
currentContent = htmlclean(currentContent);
|
||||||
let contentSplitArray = splitBy(mainDivRegexed, html_reg_findByName, html_reg_findByArticleClose);
|
currentContent = pretty(currentContent);
|
||||||
// Create a reference to the current content after split and the split functions
|
|
||||||
let currentContent = contentSplitArray[0];
|
|
||||||
// Create references to the split methods and signals
|
|
||||||
let splitMethodsSignalsAndTypeDefs = splitMethodsSignalsAndTypeDefs(contentSplitArray[1]);
|
|
||||||
let splitMethods = splitMethodsSignalsAndTypeDefs[0];
|
|
||||||
let splitSignals = splitMethodsSignalsAndTypeDefs[1];
|
|
||||||
let splitTypeDefintions = splitMethodsSignalsAndTypeDefs[2];
|
|
||||||
let splitMethodIDS = extractIDs(splitMethods);
|
|
||||||
let splitSignalIDS = extractIDs(splitSignals);
|
|
||||||
let splitTypeDefinitionIDS = extractIDs(splitTypeDefintions);
|
|
||||||
let classTOC = makeClassTOC([
|
|
||||||
{type: "Methods", array: splitMethodIDS},
|
|
||||||
{type: "Signals", array: splitSignalIDS},
|
|
||||||
{type: "Type Definitions", array: splitTypeDefinitionIDS}
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Append Signals and Methods to the current Content
|
|
||||||
currentContent = append(currentContent, html_reg_findByTitle, classTOC);
|
|
||||||
currentContent = append(currentContent, html_reg_findByMethod, splitMethods.join('\n'));
|
|
||||||
if (splitSignals.length > 0) {
|
|
||||||
// Add the Signals header to the Signals HTML
|
|
||||||
splitSignals.unshift(html_reg_signalTitle)
|
|
||||||
currentContent = append(currentContent, html_reg_findByArticleClose, splitSignals.join('\n'),true);
|
|
||||||
}
|
|
||||||
if (splitTypeDefintions.length > 0) {
|
|
||||||
// Add the Signals header to the Signals HTML
|
|
||||||
splitTypeDefintions.unshift(html_reg_typeDefinitonsTitle)
|
|
||||||
currentContent = append(currentContent, html_reg_findByArticleClose, splitTypeDefintions.join('\n'), true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Final Pretty Content
|
|
||||||
currentContent = htmlclean(currentContent);
|
|
||||||
currentContent = pretty(currentContent);
|
|
||||||
// Handle Unique Categories
|
// Handle Unique Categories
|
||||||
switch(groupName){
|
switch(groupName){
|
||||||
case "Namespace":
|
case "Namespace":
|
||||||
|
@ -462,25 +490,4 @@ createTemplate("API-Reference", makeGroupTOC(["Namespaces", "Objects", "Globals"
|
||||||
createTemplate("Namespaces", makeGroupTOC("Namespaces"));
|
createTemplate("Namespaces", makeGroupTOC("Namespaces"));
|
||||||
createTemplate("Objects", makeGroupTOC("Objects"));
|
createTemplate("Objects", makeGroupTOC("Objects"));
|
||||||
|
|
||||||
// Copy the files to the target Directories if Local
|
// Copy the files to the target Directories if Local
|
||||||
if (copyLocal){
|
|
||||||
// Copy files to the Twig Directory
|
|
||||||
let templateFiles = fs.readdirSync(path.resolve(targetTemplateDirectory));
|
|
||||||
// Remove Existing API files
|
|
||||||
templateFiles.forEach(function(file){
|
|
||||||
let curSource = path.join(targetTemplateDirectory, file);
|
|
||||||
|
|
||||||
if(path.basename(file, '.html').indexOf("API") > -1){
|
|
||||||
fs.unlink(curSource);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
copyFolderRecursiveSync(dir_template, targetTemplateDirectory);
|
|
||||||
|
|
||||||
// Copy files to the Md Directory
|
|
||||||
let baseMdRefDir = path.join(targetMDDirectory,"06.api-reference");
|
|
||||||
// Remove existing MD directory
|
|
||||||
if (fs.existsSync(baseMdRefDir)){
|
|
||||||
rimraf.sync(baseMdRefDir);
|
|
||||||
}
|
|
||||||
copyFolderRecursiveSync(dir_md, targetMDDirectory);
|
|
||||||
}
|
|
|
@ -43,6 +43,12 @@
|
||||||
"Namespace": dir_md_namespaces,
|
"Namespace": dir_md_namespaces,
|
||||||
"Global": dir_md_globals
|
"Global": dir_md_globals
|
||||||
}
|
}
|
||||||
|
// Map for Links
|
||||||
|
let map_links = {
|
||||||
|
"Global": "globals",
|
||||||
|
"Namespace": "namespaces",
|
||||||
|
"Class": "objects"
|
||||||
|
}
|
||||||
|
|
||||||
// Base Grouping Directories for MD files
|
// Base Grouping Directories for MD files
|
||||||
let baseMDDirectories = ["API-Reference", "Globals", "Namespaces", "Objects"]
|
let baseMDDirectories = ["API-Reference", "Globals", "Namespaces", "Objects"]
|
||||||
|
@ -52,7 +58,7 @@
|
||||||
const html_reg_title = /\<h1.+?\>.+?\<\/h1\>/g;
|
const html_reg_title = /\<h1.+?\>.+?\<\/h1\>/g;
|
||||||
const html_reg_htmlExt = /\.html/g;
|
const html_reg_htmlExt = /\.html/g;
|
||||||
const html_reg_objectHeader = /<header>[\s\S]+?<\/header>/;
|
const html_reg_objectHeader = /<header>[\s\S]+?<\/header>/;
|
||||||
const html_reg_objectSpanNew = /<h4 class="name"[\s\S]+?<\/span><\/h4>/;
|
const html_reg_objectSpanNew = /<h5 class="name"[\s\S]+?<\/span><\/h5>/;
|
||||||
const html_reg_brRemove = /<br>[\s\S]+?<br>/;
|
const html_reg_brRemove = /<br>[\s\S]+?<br>/;
|
||||||
const html_reg_subsectionEdit = /(<h. class="subsection-title">)([\s\S]*?)(<\/h.>)/g;
|
const html_reg_subsectionEdit = /(<h. class="subsection-title">)([\s\S]*?)(<\/h.>)/g;
|
||||||
const html_reg_subsectionEdit_replace = '<h4 class="subsection-title">$2</h4>';
|
const html_reg_subsectionEdit_replace = '<h4 class="subsection-title">$2</h4>';
|
||||||
|
@ -69,11 +75,21 @@
|
||||||
const html_reg_findByName = '<h5 class="name"';
|
const html_reg_findByName = '<h5 class="name"';
|
||||||
const html_reg_findByTitle = '<h1>';
|
const html_reg_findByTitle = '<h1>';
|
||||||
const html_reg_findByMethod = `<h4 class="subsection-title">Methods</h4>`;
|
const html_reg_findByMethod = `<h4 class="subsection-title">Methods</h4>`;
|
||||||
|
const html_reg_containerOverview = `<div class="container-overview">`
|
||||||
|
const html_reg_findByArticleOpen = `<article>`
|
||||||
const html_reg_findByArticleClose = `</article>`
|
const html_reg_findByArticleClose = `</article>`
|
||||||
const html_reg_signalTitle = `<h4 class="subsection-title">Signals</h4>`;
|
const html_reg_signalTitle = `<h4 class="subsection-title">Signals</h4>`;
|
||||||
const html_reg_typeDefinitonsTitle = `<h4 class="subsection-title">Type Definitions</h4>`;
|
const html_reg_typeDefinitonsTitle = `<h4 class="subsection-title">Type Definitions</h4>`;
|
||||||
const html_reg_firstTableClose = `</table>`;
|
const html_reg_firstTableClose = `</table>`;
|
||||||
|
const html_reg_fixLinkHashIssue = /(<a href=")(.*?)(\.)(.*?">)/g;
|
||||||
|
const html_reg_fixLinkHashIssue_replace = "$1$2#$4"
|
||||||
|
const html_reg_findLinks = /(<a href="[\s\S]+?<\/a>)/g;
|
||||||
|
const html_reg_findLinksNoHashes = /(<a href=")([^#]+?)(">[\s\S]+?<\/a>)/g;
|
||||||
|
const html_reg_findGlobalLinks = /(<a href=")(global)(#[\s\S]+?<\/a>)/g;
|
||||||
|
const html_reg_findGlobalLinks_replace = "$1\/api-reference\/globals$3";
|
||||||
|
const html_reg_findGeneralLinks = /(<a href=")([A-Z])([\s\S]*?)("[\s\S]*?<\/a>)/g;
|
||||||
|
const html_reg_findClassLinks = /(<a href=")([\.|\w]+?)(#[\.|\w]+?)(">[\s\S]+?<\/a>)/g;
|
||||||
|
|
||||||
|
|
||||||
// Mapping for GroupNames and Members
|
// Mapping for GroupNames and Members
|
||||||
let groupNameMemberMap = {
|
let groupNameMemberMap = {
|
||||||
|
@ -83,7 +99,73 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
// Procedural functions
|
// Procedural functions
|
||||||
|
|
||||||
|
function isMultipleDots(content){
|
||||||
|
let count = 0;
|
||||||
|
let regEx = /\./g
|
||||||
|
let tempArray;
|
||||||
|
while ((tempArray = regEx.exec(content)) !== null){
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
if (count > 1){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function modifyClassLinks(match, p1,p2,p3,p4){
|
||||||
|
let matchedp = [p2,p3].join("");
|
||||||
|
if(!isMultipleDots(matchedp)){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
p2 = p2.split('.')[1].toLowerCase();
|
||||||
|
return [p1,p2,p3,p4].join("");
|
||||||
|
}
|
||||||
|
|
||||||
|
function lowerCaseGeneralLinks(match, p1, p2, p3, p4){
|
||||||
|
let modifiedString = [p1,p2.toLowerCase(),p3,p4].join("");
|
||||||
|
return modifiedString;
|
||||||
|
}
|
||||||
|
|
||||||
|
function contentReplace(content, title){
|
||||||
|
var linksNoHashes = [];
|
||||||
|
var tempArray;
|
||||||
|
while(( tempArray = html_reg_findLinksNoHashes.exec(content)) !== null ){
|
||||||
|
let tempArrayToPush = tempArray.slice(0,4)
|
||||||
|
tempArrayToPush.push(tempArray.index);
|
||||||
|
linksNoHashes.push(tempArrayToPush);
|
||||||
|
}
|
||||||
|
if (!linksNoHashes){
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
for(var i = linksNoHashes.length-1; i > -1; i--){
|
||||||
|
if (linksNoHashes[i][0].indexOf("http") > -1){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let linkLength = linksNoHashes[i][0].length;
|
||||||
|
let group1 = linksNoHashes[i][1];
|
||||||
|
let group2 = linksNoHashes[i][2];
|
||||||
|
if (group2.indexOf(".") > -1){
|
||||||
|
group2 = group2.split(".")[1].toLowerCase();
|
||||||
|
}
|
||||||
|
let group3 = linksNoHashes[i][3];
|
||||||
|
let index = linksNoHashes[i][4];
|
||||||
|
let newString = `${group1}/api-reference/${returnRightGroup(group2)}/${group2.toLowerCase()}${group3}`;
|
||||||
|
content = [content.slice(0,index), newString, content.slice(index+linkLength)].join("");
|
||||||
|
}
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
|
||||||
// Create the actual MD file
|
// Create the actual MD file
|
||||||
|
function returnRightGroup(methodToCheck){
|
||||||
|
for ( var key in groupNameMemberMap ){
|
||||||
|
for (i = 0; i < groupNameMemberMap[key].length; i++ ){
|
||||||
|
if (methodToCheck.toLowerCase() === groupNameMemberMap[key][i].toLowerCase()){
|
||||||
|
return key.toLowerCase();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function createMD(title, directory, needsDir, isGlobal){
|
function createMD(title, directory, needsDir, isGlobal){
|
||||||
let mdSource = makeMdSource(title);
|
let mdSource = makeMdSource(title);
|
||||||
|
|
||||||
|
@ -110,10 +192,7 @@
|
||||||
|
|
||||||
// If target is a directory a new file with the same name will be created
|
// If target is a directory a new file with the same name will be created
|
||||||
if ( fs.existsSync( target ) ) {
|
if ( fs.existsSync( target ) ) {
|
||||||
// console.log("target exists");
|
|
||||||
if ( fs.lstatSync( target ).isDirectory() ) {
|
if ( fs.lstatSync( target ).isDirectory() ) {
|
||||||
// console.log("target is a directory");
|
|
||||||
|
|
||||||
targetFile = path.join( target, path.basename( source ) );
|
targetFile = path.join( target, path.basename( source ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -204,7 +283,6 @@
|
||||||
|
|
||||||
// Handle NameSpace Group
|
// Handle NameSpace Group
|
||||||
function handleNamespace(title, content){
|
function handleNamespace(title, content){
|
||||||
groupNameMemberMap["Namespaces"].push(title);
|
|
||||||
let destinationDirectory = path.join(map_dir_md["Namespace"], title);
|
let destinationDirectory = path.join(map_dir_md["Namespace"], title);
|
||||||
createMD(title, destinationDirectory, true);
|
createMD(title, destinationDirectory, true);
|
||||||
createTemplate(title, content);
|
createTemplate(title, content);
|
||||||
|
@ -212,7 +290,6 @@
|
||||||
|
|
||||||
// Handle Class Group
|
// Handle Class Group
|
||||||
function handleClass(title, content){
|
function handleClass(title, content){
|
||||||
groupNameMemberMap["Objects"].push(title);
|
|
||||||
let destinationDirectory = path.join(map_dir_md["Class"], title);
|
let destinationDirectory = path.join(map_dir_md["Class"], title);
|
||||||
createMD(title, destinationDirectory, true)
|
createMD(title, destinationDirectory, true)
|
||||||
|
|
||||||
|
@ -223,7 +300,6 @@
|
||||||
|
|
||||||
// Handle Global Group
|
// Handle Global Group
|
||||||
function handleGlobal(title, content){
|
function handleGlobal(title, content){
|
||||||
groupNameMemberMap["Globals"].push("Globals");
|
|
||||||
createMD("Globals", map_dir_md["Global"], false, true);
|
createMD("Globals", map_dir_md["Global"], false, true);
|
||||||
createTemplate("Globals", content);
|
createTemplate("Globals", content);
|
||||||
}
|
}
|
||||||
|
@ -258,7 +334,12 @@
|
||||||
group.forEach( item => {
|
group.forEach( item => {
|
||||||
linkArray.push(`<div><h5>${item.type}</h5></div>`)
|
linkArray.push(`<div><h5>${item.type}</h5></div>`)
|
||||||
item.array.forEach( link => {
|
item.array.forEach( link => {
|
||||||
linkArray.push(`<div><a href="#.${link.slice(1)}">${link.slice(1)}</a></div>`)
|
if ( link.indexOf('.') > -1 ){
|
||||||
|
linkArray.push(`<div><a href="#${link}">${link.slice(1)}</a></div>`);
|
||||||
|
} else {
|
||||||
|
linkArray.push(`<div><a href="#${link}">${link}</a></div>`);
|
||||||
|
|
||||||
|
}
|
||||||
})
|
})
|
||||||
linkArray.push("<br>");
|
linkArray.push("<br>");
|
||||||
})
|
})
|
||||||
|
@ -315,23 +396,25 @@
|
||||||
let methodArray = [];
|
let methodArray = [];
|
||||||
let signalArray = [];
|
let signalArray = [];
|
||||||
let typeDefArray = [];
|
let typeDefArray = [];
|
||||||
// console.log(allItemToSplit.length);
|
let description;
|
||||||
allItemToSplit.forEach( method => {
|
|
||||||
firstLine = method.split("\n")[0];
|
allItemToSplit.forEach( content => {
|
||||||
|
firstLine = content.split("\n")[0];
|
||||||
if (firstLine.indexOf("Signal") > -1){
|
if (firstLine.indexOf("Signal") > -1){
|
||||||
// console.log("Found signal")
|
signalArray.push(content);
|
||||||
signalArray.push(method);
|
|
||||||
} else if (firstLine.indexOf("span") > -1) {
|
} else if (firstLine.indexOf("span") > -1) {
|
||||||
// console.log("Found method")
|
if (content.indexOf("Available in:") > -1){
|
||||||
methodArray.push(method);
|
description = content;
|
||||||
|
} else {
|
||||||
|
methodArray.push(content);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// console.log("Found typeDef")
|
|
||||||
if(firstLine.trim() !== ""){
|
if(firstLine.trim() !== ""){
|
||||||
typeDefArray.push(method);
|
typeDefArray.push(content);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
return [methodArray, signalArray, typeDefArray];
|
return [methodArray, signalArray, typeDefArray, description];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Helper to append
|
// Helper to append
|
||||||
|
@ -378,12 +461,34 @@
|
||||||
})
|
})
|
||||||
|
|
||||||
// Read jsdoc output folder and process html files
|
// Read jsdoc output folder and process html files
|
||||||
|
let links = [];
|
||||||
|
let unTouchedLinks = [];
|
||||||
let files = fs.readdirSync(dir_out);
|
let files = fs.readdirSync(dir_out);
|
||||||
|
// Create initial Group name member map to handle individual link :: TODO find better way to do this
|
||||||
|
files.forEach(function (file){
|
||||||
|
let curSource = path.join(dir_out, file);
|
||||||
|
if (path.extname(curSource) == ".html" && path.basename(curSource, '.html') !== "index") {
|
||||||
|
let loadedHtml = prepareHtml(curSource);
|
||||||
|
let splitTitle = loadedHtml("title").text().split(": ");
|
||||||
|
let groupName = splitTitle[1];
|
||||||
|
let htmlTitle = splitTitle.pop();
|
||||||
|
switch(groupName){
|
||||||
|
case "Namespace":
|
||||||
|
groupNameMemberMap["Namespaces"].push(htmlTitle);
|
||||||
|
break;
|
||||||
|
case "Class":
|
||||||
|
groupNameMemberMap["Objects"].push(htmlTitle);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log(`Case not handled for ${groupName}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
files.forEach(function (file){
|
files.forEach(function (file){
|
||||||
let curSource = path.join(dir_out, file);
|
let curSource = path.join(dir_out, file);
|
||||||
if (path.extname(curSource) == ".html" && path.basename(curSource, '.html') !== "index") {
|
if (path.extname(curSource) == ".html" && path.basename(curSource, '.html') !== "index") {
|
||||||
// Clean up the html source
|
// Clean up the html source
|
||||||
let loadedHtml = prepareHtml(curSource);
|
let loadedHtml = prepareHtml(curSource);
|
||||||
|
|
||||||
// Extract the title, group name, and the main div
|
// Extract the title, group name, and the main div
|
||||||
let splitTitle = loadedHtml("title").text().split(": ");
|
let splitTitle = loadedHtml("title").text().split(": ");
|
||||||
|
@ -408,8 +513,20 @@
|
||||||
.replace(html_reg_methodSize, html_reg_methodSize_replace)
|
.replace(html_reg_methodSize, html_reg_methodSize_replace)
|
||||||
.replace(html_reg_typeDefSize, html_reg_typeDefSize_replace)
|
.replace(html_reg_typeDefSize, html_reg_typeDefSize_replace)
|
||||||
.replace(html_reg_typeDefinitonsTitle, "")
|
.replace(html_reg_typeDefinitonsTitle, "")
|
||||||
.replace(html_reg_findByMethod, "");
|
.replace(html_reg_findGlobalLinks, html_reg_findGlobalLinks_replace)
|
||||||
|
.replace(html_reg_findGeneralLinks, lowerCaseGeneralLinks)
|
||||||
|
.replace(html_reg_findClassLinks, modifyClassLinks)
|
||||||
|
.replace(html_reg_findByMethod, "");
|
||||||
|
|
||||||
|
// Fix for namespace and object links
|
||||||
|
mainDivRegexed = contentReplace(mainDivRegexed, htmlTitle);
|
||||||
|
|
||||||
|
// Grab all links for link changes
|
||||||
|
let matches = mainDivRegexed.match(html_reg_findLinks);
|
||||||
|
if (matches){
|
||||||
|
unTouchedLinks.push(`${htmlTitle}:\n ${matches.join('\n')}`);
|
||||||
|
}
|
||||||
|
|
||||||
// Further HTML Manipulation
|
// Further HTML Manipulation
|
||||||
// Split HTML by Each named entry
|
// Split HTML by Each named entry
|
||||||
let contentSplitArray = splitBy(mainDivRegexed, html_reg_findByName, html_reg_findByArticleClose);
|
let contentSplitArray = splitBy(mainDivRegexed, html_reg_findByName, html_reg_findByArticleClose);
|
||||||
|
@ -420,12 +537,15 @@
|
||||||
let splitMethods = processedMethodsSignalsAndTypeDefs[0];
|
let splitMethods = processedMethodsSignalsAndTypeDefs[0];
|
||||||
let splitSignals = processedMethodsSignalsAndTypeDefs[1];
|
let splitSignals = processedMethodsSignalsAndTypeDefs[1];
|
||||||
let splitTypeDefintions = processedMethodsSignalsAndTypeDefs[2];
|
let splitTypeDefintions = processedMethodsSignalsAndTypeDefs[2];
|
||||||
|
let splitDescription = processedMethodsSignalsAndTypeDefs[3];
|
||||||
let splitMethodIDS = extractIDs(splitMethods);
|
let splitMethodIDS = extractIDs(splitMethods);
|
||||||
let splitSignalIDS = extractIDs(splitSignals);
|
let splitSignalIDS = extractIDs(splitSignals);
|
||||||
let splitTypeDefinitionIDS = extractIDs(splitTypeDefintions);
|
let splitTypeDefinitionIDS = extractIDs(splitTypeDefintions);
|
||||||
let arrayToPassToClassToc = [];
|
let arrayToPassToClassToc = [];
|
||||||
|
|
||||||
// Append Signals and Methods to the current Content
|
if (splitDescription) {
|
||||||
|
currentContent = append(currentContent, html_reg_containerOverview, splitDescription);
|
||||||
|
}
|
||||||
if (splitMethods.length > 0) {
|
if (splitMethods.length > 0) {
|
||||||
arrayToPassToClassToc.push({type: "Methods", array: splitMethodIDS});
|
arrayToPassToClassToc.push({type: "Methods", array: splitMethodIDS});
|
||||||
// Add the Signals header to the Signals HTML
|
// Add the Signals header to the Signals HTML
|
||||||
|
@ -439,9 +559,6 @@
|
||||||
currentContent = append(currentContent, html_reg_findByArticleClose, splitSignals.join('\n'),true);
|
currentContent = append(currentContent, html_reg_findByArticleClose, splitSignals.join('\n'),true);
|
||||||
}
|
}
|
||||||
if (splitTypeDefintions.length > 0) {
|
if (splitTypeDefintions.length > 0) {
|
||||||
|
|
||||||
// console.log(path.basename(curSource, '.html'));
|
|
||||||
// console.log(splitTypeDefintions.length);
|
|
||||||
arrayToPassToClassToc.push({type: "Type Definitions", array: splitTypeDefinitionIDS});
|
arrayToPassToClassToc.push({type: "Type Definitions", array: splitTypeDefinitionIDS});
|
||||||
// Add the Signals header to the Signals HTML
|
// Add the Signals header to the Signals HTML
|
||||||
splitTypeDefintions.unshift(html_reg_typeDefinitonsTitle)
|
splitTypeDefintions.unshift(html_reg_typeDefinitonsTitle)
|
||||||
|
@ -449,7 +566,11 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
let classTOC = makeClassTOC(arrayToPassToClassToc);
|
let classTOC = makeClassTOC(arrayToPassToClassToc);
|
||||||
currentContent = append(currentContent, html_reg_firstTableClose, classTOC);
|
if (groupName === "Global"){
|
||||||
|
currentContent = append(currentContent, html_reg_findByTitle, classTOC);
|
||||||
|
} else {
|
||||||
|
currentContent = append(currentContent, html_reg_firstTableClose, classTOC);
|
||||||
|
}
|
||||||
|
|
||||||
// Final Pretty Content
|
// Final Pretty Content
|
||||||
currentContent = htmlclean(currentContent);
|
currentContent = htmlclean(currentContent);
|
||||||
|
@ -477,6 +598,8 @@
|
||||||
createTemplate("Namespaces", makeGroupTOC("Namespaces"));
|
createTemplate("Namespaces", makeGroupTOC("Namespaces"));
|
||||||
createTemplate("Objects", makeGroupTOC("Objects"));
|
createTemplate("Objects", makeGroupTOC("Objects"));
|
||||||
|
|
||||||
|
fs.writeFileSync('Links-Untouched', unTouchedLinks.join('\n'));
|
||||||
|
|
||||||
// Copy the files to the target Directories if Local
|
// Copy the files to the target Directories if Local
|
||||||
if (copyLocal){
|
if (copyLocal){
|
||||||
// Copy files to the Twig Directory
|
// Copy files to the Twig Directory
|
||||||
|
@ -488,6 +611,7 @@
|
||||||
if(path.basename(file, '.html').indexOf("API") > -1){
|
if(path.basename(file, '.html').indexOf("API") > -1){
|
||||||
fs.unlink(curSource);
|
fs.unlink(curSource);
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
copyFolderRecursiveSync(dir_template, targetTemplateDirectory);
|
copyFolderRecursiveSync(dir_template, targetTemplateDirectory);
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
"htmlclean": "^3.0.8",
|
"htmlclean": "^3.0.8",
|
||||||
"jsdoc": "^3.5.5",
|
"jsdoc": "^3.5.5",
|
||||||
"pretty": "^2.0.0",
|
"pretty": "^2.0.0",
|
||||||
|
"request": "^2.85.0",
|
||||||
"rimraf": "^2.6.2"
|
"rimraf": "^2.6.2"
|
||||||
},
|
},
|
||||||
"private": true
|
"private": true
|
||||||
|
|
0
tools/jsdoc/warningLog
Normal file
0
tools/jsdoc/warningLog
Normal file
Loading…
Reference in a new issue