mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 11:48:09 +02:00
Added toc
This commit is contained in:
parent
91c0fa2778
commit
f35fffb975
1 changed files with 96 additions and 53 deletions
|
@ -5,6 +5,7 @@
|
||||||
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');
|
||||||
|
|
||||||
// Required directories
|
// Required directories
|
||||||
let dir_out = path.join(__dirname, 'out');
|
let dir_out = path.join(__dirname, 'out');
|
||||||
|
@ -46,16 +47,31 @@
|
||||||
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>/;
|
||||||
|
|
||||||
|
// Mapping for GroupNames and Members
|
||||||
|
let groupNameMemberMap = {
|
||||||
|
"Objects": [],
|
||||||
|
"Namespaces": [],
|
||||||
|
"Globals": []
|
||||||
|
}
|
||||||
|
|
||||||
// Procedural functions
|
// Procedural functions
|
||||||
function createMD(title, directory, needsDir){
|
function createMD(title, directory, needsDir, isGlobal){
|
||||||
let mdSource = makeMdSource(title);
|
let mdSource = makeMdSource(title);
|
||||||
|
|
||||||
|
// if (isGlobal){
|
||||||
|
// mdSource =
|
||||||
|
// destinationMDFile = path.join(directory, `Globals.md`);
|
||||||
|
// }
|
||||||
|
|
||||||
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`);
|
|
||||||
|
let destinationMDFile = path.join(directory, `API_${title}.md`);
|
||||||
fs.writeFileSync(destinationMDFile, mdSource);
|
fs.writeFileSync(destinationMDFile, mdSource);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,71 +128,97 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
function makeMdSource(title){
|
function makeMdSource(title){
|
||||||
return (
|
return dedent(
|
||||||
`---
|
`
|
||||||
title: '${title}'
|
---
|
||||||
taxonomy:
|
title: ${title}
|
||||||
category:
|
taxonomy:
|
||||||
- docs
|
category:
|
||||||
visible: true
|
- docs
|
||||||
---
|
visible: true
|
||||||
`
|
---
|
||||||
)
|
`
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
function makeTwigFile(contentHtml){
|
function makeTwigFile(contentHtml){
|
||||||
return (
|
return dedent(
|
||||||
`
|
`
|
||||||
{% extends 'partials/base_noGit.html.twig' %}
|
{% extends 'partials/base_noGit.html.twig' %}
|
||||||
{% set tags = page.taxonomy.tag %}
|
{% set tags = page.taxonomy.tag %}
|
||||||
{% if tags %}
|
{% if tags %}
|
||||||
{% set progress = page.collection({'items':{'@taxonomy':{'category': 'docs', 'tag': tags}},'order': {'by': 'default', 'dir': 'asc'}}) %}
|
{% set progress = page.collection({'items':{'@taxonomy':{'category': 'docs', 'tag': tags}},'order': {'by': 'default', 'dir': 'asc'}}) %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% set progress = page.collection({'items':{'@taxonomy':{'category': 'docs'}},'order': {'by': 'default', 'dir': 'asc'}}) %}
|
{% set progress = page.collection({'items':{'@taxonomy':{'category': 'docs'}},'order': {'by': 'default', 'dir': 'asc'}}) %}
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% block navigation %}
|
|
||||||
<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 %}
|
{% endif %}
|
||||||
|
|
||||||
{% if not progress.isLast(page.path) %}
|
{% block navigation %}
|
||||||
<a class="nav nav-next" href="{{ progress.prevSibling(page.path).url }}"><img src="{{ url('theme://images/right-arrow.png') }}"></a>
|
<div id="navigation">
|
||||||
{% endif %}
|
{% if not progress.isFirst(page.path) %}
|
||||||
</div>
|
<a class="nav nav-prev" href="{{ progress.nextSibling(page.path).url }}"> <img src="{{ url('theme://images/left-arrow.png') }}"></a>
|
||||||
{% endblock %}
|
{% endif %}
|
||||||
|
|
||||||
{% block content %}
|
{% if not progress.isLast(page.path) %}
|
||||||
<div id="body-inner">
|
<a class="nav nav-next" href="{{ progress.prevSibling(page.path).url }}"><img src="{{ url('theme://images/right-arrow.png') }}"></a>
|
||||||
<h1>{{ page.title }}</h1>
|
{% endif %}
|
||||||
${contentHtml}
|
</div>
|
||||||
</div>
|
{% endblock %}
|
||||||
{% endblock %}
|
|
||||||
`
|
{% block content %}
|
||||||
)
|
<div id="body-inner">
|
||||||
|
<h1>{{ page.title }}</h1>
|
||||||
|
${contentHtml}
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
|
`
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
|
|
||||||
let formatedHtml = content
|
let formatedHtml = content
|
||||||
.replace(html_reg_objectHeader,"")
|
.replace(html_reg_objectSpanNew,"")
|
||||||
.replace(html_reg_objectSpanNew,"");
|
.replace(html_reg_brRemove, "");
|
||||||
createTemplate(title, formatedHtml);
|
createTemplate(title, formatedHtml);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleGlobal(title, content){
|
function handleGlobal(title, content){
|
||||||
createMD("API_Globals", map_dir_md["Global"], false);
|
groupNameMemberMap["Globals"].push("Globals");
|
||||||
createTemplate("API_Globals", content);
|
createMD("Globals", map_dir_md["Global"], false, true);
|
||||||
|
createTemplate("Globals", content);
|
||||||
|
}
|
||||||
|
|
||||||
|
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");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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
|
||||||
|
@ -212,9 +254,11 @@
|
||||||
let mainDiv = loadedHtml("#main").html();
|
let mainDiv = loadedHtml("#main").html();
|
||||||
|
|
||||||
// Strip out undesired regex
|
// Strip out undesired regex
|
||||||
let mainDivRegexed = mainDiv.replace(html_reg_static,"")
|
let mainDivRegexed = mainDiv
|
||||||
.replace(html_reg_title,"")
|
.replace(html_reg_static,"")
|
||||||
.replace(html_reg_htmlExt,"");
|
.replace(html_reg_title,"")
|
||||||
|
.replace(html_reg_objectHeader,"")
|
||||||
|
.replace(html_reg_htmlExt,"");
|
||||||
// Handle Unique Categories
|
// Handle Unique Categories
|
||||||
switch(groupName){
|
switch(groupName){
|
||||||
case "Namespace":
|
case "Namespace":
|
||||||
|
@ -233,10 +277,9 @@
|
||||||
})
|
})
|
||||||
|
|
||||||
// Create the base Templates after processing individual files
|
// Create the base Templates after processing individual files
|
||||||
createTemplate("API-Reference","");
|
createTemplate("API-Reference", makeGroupTOC(["Namespaces", "Objects", "Globals"]));
|
||||||
createTemplate("Globals","");
|
createTemplate("Namespaces", makeGroupTOC("Namespaces"));
|
||||||
createTemplate("Namespaces","");
|
createTemplate("Objects", makeGroupTOC("Objects"));
|
||||||
createTemplate("Objects","");
|
|
||||||
|
|
||||||
// Copy files to the Twig Directory
|
// Copy files to the Twig Directory
|
||||||
let templateFiles = fs.readdirSync(path.resolve(targetTemplateDirectory));
|
let templateFiles = fs.readdirSync(path.resolve(targetTemplateDirectory));
|
||||||
|
|
Loading…
Reference in a new issue