Implemented doc template generation.

This commit is contained in:
Relintai 2024-01-06 11:55:43 +01:00
parent dc2d3cfeea
commit d8e368dafe
4 changed files with 8598 additions and 2 deletions

View File

@ -0,0 +1,7 @@
$NAME$
----------------------------------------------------------------------------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
$CODE$
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

8404
docs/index.gen.md.html Normal file

File diff suppressed because it is too large Load Diff

162
docs/index_template.md.html Normal file
View File

@ -0,0 +1,162 @@
<meta charset="utf-8">
**Sample API Doc**
1.1 Release
This is the markdeep generic "Company API" template. Replace
`company-logo-512.png` with your organization's logo and adjust the
`company-api.css` styling to match the desired colors.
See `CA::OpenHandle()` for an example of an auto-generated API link.
The rest of the information on this page is bogus placeholder to show the formatting.
API Modules
====================================================================================
The CA library is a layer on top of the resource manager and parsing libraries that
provides utilities for streaming processing and client-side process construction.
ENUMS
====================================================================================
$ENUMS$
STRUCTS
====================================================================================
$STRUCTS$
CLASSES
====================================================================================
$CLASSES$
Modules
----------------------------------------------------------------------------------------
The CA library contains the APIs for applications to allocate and exchange resources.
!!! Attention Attention
Always read all of the documentation.
[CA APIs](#CA)
: List of APIs to manage external processes.
CA Buffer List APIs
: Methods to process buffer resources separate from computation.
CA Data Structures
: Specifies the data structures used for complex cases.
## Handles
`CA::OpenHandle(const std::string&)`
: Open a reference handle.
`CA::ReadMetaData(const Handle&)`
: Metadata about the event.
`CA::CloseHandle(const Handle&)`
: Free all handle resources, recursively.
CA
====================================================================================
!!! Warning Warning
The API content represents the set of APIs you can use directly. Some APIs
are not documented and we advise you do not use them directly. Using undocumented
APIs can lead to incompatibility when upgrading to later releases.
These examples assume that your directory structure is:
**********************************************************
*
* 📂 ca1
* |
* +-- 📄 bar.txt
* |
* +-- 📂 foo
* | |
* | ⋮
* |
* +-- 📂 xsource
* | |
* | +-- 📂 data
* | | |
* | | +-- 📄 manifest.json
* | | |
* | ⋮ ⋮
* |
* ⋮
**********************************************************
[Directory structure.]
Table
------------------------------------------------------------------
Screen | Factor | Used | Efficiency
----------:|------------:|----------:|---------:
1366x768 | 3x | 1152x672 | 74%
1440x900 | 3x | 1152x672 | 60%
*1600x900* | *4x* | 1536x896 | *96%*
1680x1050 | 4x | 1536x896 | 78%
1920x1080 | 4x | 1536x896 | 66%
*1920x1200*| *5x* | 1920x1120 | *93%*
[A Table]
More Info
------------------------------------------------------------------
******************************************************************
* ^ y
* |
* .---------. .----|----.
* | | | | |
* | *-------> x | *--------> x
* | | | | |
* '----|----' '---------'
* |
* v y
******************************************************************
[Figure 1: Coordinate Example]
-----
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ GLSL
vec3 sphNormal(in vec3 pos, in vec4 sph) {
return normalize(pos-sph.xyz);
}
vec3 camera(vec2 U, vec2 r, vec3 ro, vec3 la, float fl) {
vec2 uv = (U - r*.5)/r.y;
vec3 fwd = normalize(la-ro),
rgt = normalize(vec3(fwd.z, 0., -fwd.x));
return normalize(fwd + fl*uv.x*rgt + fl*uv.y*cross(fwd, rgt));
}
float vMap(vec3 p) {
float hit = 0.0;
vec2 h2 = hash22(floor(p.xz*0.25));
if (p.z > 0.0) {
if (p.y < -10.0 && h2.x > 0.5) hit=1.0;
if (p.y > 10.0 && h2.y > 0.5) hit=1.0;
}
return hit;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[Code listing]
<script>markdeepOptions = {tocStyle:'long', definitionStyle:'long', linkAPIDefinitions: true};</script>
<link rel="stylesheet" href="slate.css">
<!-- Markdeep: --><style class="fallback">body{visibility:hidden;white-space:pre;font-family:monospace}</style><script src="markdeep.min.js"></script><script src="https://casual-effects.com/markdeep/latest/markdeep.min.js?"></script><script>window.alreadyProcessedMarkdeep||(document.body.style.visibility="visible")</script>

View File

@ -35,7 +35,6 @@ String get_structure_parents(const String &data) {
return l;
}
bool is_structure_template_specialization_or_parent_is_template(const String &data) {
String fl = data.get_slicec('\n', 0);
String l = fl.get_slicec('{', 0);
@ -43,6 +42,20 @@ bool is_structure_template_specialization_or_parent_is_template(const String &da
return l.contains("<");
}
String generate_section_class_list(const List<String> &list) {
FileAccess f;
String code_template = f.read_file("code_template.md.html");
String d;
for (const List<String>::Element *E = list.front(); E; E = E->next()) {
String c = E->get();
d += code_template.replace("$CODE$", c).replace("$NAME$", get_structure_name(c));
}
return d;
}
List<String> process_classes_and_structs(const List<String> &list) {
List<String> ret;
@ -375,6 +388,7 @@ void process_file(const String &path) {
//ERR_PRINT("CLASSES");
//print_list(classes);
/*
ERR_PRINT("ENUMS");
for (const List<String>::Element *E = enums.front(); E; E = E->next()) {
@ -400,12 +414,21 @@ void process_file(const String &path) {
if (is_structure_template_specialization_or_parent_is_template(E->get())) {
ERR_PRINT("!!!!!!");
}
}
}*/
//ERR_PRINT("COUNT");
//ERR_PRINT(itos(enums.size()));
//ERR_PRINT(itos(structs.size()));
//ERR_PRINT(itos(classes.size()));
String index_template = f.read_file("index_template.md.html");
String d = index_template;
d = d.replace("$ENUMS$", generate_section_class_list(enums));
d = d.replace("$STRUCTS$", generate_section_class_list(structs));
d = d.replace("$CLASSES$", generate_section_class_list(classes));
f.write_file("index.gen.md.html", d);
}
int main(int argc, char **argv) {