Implements modules documents
Editor can generate documents for modules in thier own xml files
This commit is contained in:
parent
81a393a2b4
commit
886f646cba
4 changed files with 43 additions and 5 deletions
|
@ -1063,6 +1063,7 @@ bool Main::start() {
|
||||||
|
|
||||||
bool editor=false;
|
bool editor=false;
|
||||||
String doc_tool;
|
String doc_tool;
|
||||||
|
List<String> removal_docs;
|
||||||
bool doc_base=true;
|
bool doc_base=true;
|
||||||
String game_path;
|
String game_path;
|
||||||
String script;
|
String script;
|
||||||
|
@ -1093,6 +1094,8 @@ bool Main::start() {
|
||||||
bool parsed_pair=true;
|
bool parsed_pair=true;
|
||||||
if (args[i]=="-doctool") {
|
if (args[i]=="-doctool") {
|
||||||
doc_tool=args[i+1];
|
doc_tool=args[i+1];
|
||||||
|
for(int j=i+2; j<args.size();j++)
|
||||||
|
removal_docs.push_back(args[j]);
|
||||||
} else if (args[i]=="-script" || args[i]=="-s") {
|
} else if (args[i]=="-script" || args[i]=="-s") {
|
||||||
script=args[i+1];
|
script=args[i+1];
|
||||||
} else if (args[i]=="-level" || args[i]=="-l") {
|
} else if (args[i]=="-level" || args[i]=="-l") {
|
||||||
|
@ -1141,6 +1144,14 @@ bool Main::start() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for(List<String>::Element* E= removal_docs.front(); E; E=E->next()) {
|
||||||
|
DocData rmdoc;
|
||||||
|
if (rmdoc.load(E->get()) == OK) {
|
||||||
|
print_line(String("Removing classes in ") + E->get());
|
||||||
|
doc.remove_from(rmdoc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
doc.save(doc_tool);
|
doc.save(doc_tool);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
Import('env')
|
Import('env')
|
||||||
env.editor_sources = []
|
env.editor_sources = []
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
def make_certs_header(target, source, env):
|
def make_certs_header(target, source, env):
|
||||||
|
|
||||||
|
@ -29,11 +31,21 @@ def make_certs_header(target, source, env):
|
||||||
|
|
||||||
def make_doc_header(target, source, env):
|
def make_doc_header(target, source, env):
|
||||||
|
|
||||||
src = source[0].srcnode().abspath
|
|
||||||
dst = target[0].srcnode().abspath
|
dst = target[0].srcnode().abspath
|
||||||
f = open(src, "rb")
|
|
||||||
g = open(dst, "wb")
|
g = open(dst, "wb")
|
||||||
buf = f.read()
|
buf = ""
|
||||||
|
docbegin = ""
|
||||||
|
docend = ""
|
||||||
|
for s in source:
|
||||||
|
src = s.srcnode().abspath
|
||||||
|
f = open(src, "rb")
|
||||||
|
content = f.read()
|
||||||
|
buf += content[content.find("<class"): content.rfind("</doc>")]
|
||||||
|
if len(docbegin) == 0:
|
||||||
|
docbegin = content[0: content.find("<class")]
|
||||||
|
if len(docend) == 0:
|
||||||
|
docend = content[content.rfind("</doc>"): len(buf)]
|
||||||
|
buf = docbegin + buf + docend
|
||||||
decomp_size = len(buf)
|
decomp_size = len(buf)
|
||||||
import zlib
|
import zlib
|
||||||
buf = zlib.compress(buf)
|
buf = zlib.compress(buf)
|
||||||
|
@ -146,8 +158,15 @@ if (env["tools"] == "yes"):
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
# API documentation
|
# API documentation
|
||||||
env.Depends("#tools/editor/doc_data_compressed.h", "#doc/base/classes.xml")
|
docs = ["#doc/base/classes.xml"]
|
||||||
env.Command("#tools/editor/doc_data_compressed.h", "#doc/base/classes.xml", make_doc_header)
|
moduledir = os.path.join(os.getcwd(), "..", "..", "modules")
|
||||||
|
for m in os.listdir(moduledir):
|
||||||
|
curmodle = os.path.join(moduledir, m)
|
||||||
|
docfile = os.path.join(curmodle, "classes.xml")
|
||||||
|
if os.path.isdir(curmodle) and os.path.isfile(docfile):
|
||||||
|
docs.append(docfile)
|
||||||
|
env.Depends("#tools/editor/doc_data_compressed.h", docs)
|
||||||
|
env.Command("#tools/editor/doc_data_compressed.h", docs, make_doc_header)
|
||||||
|
|
||||||
# Certificates
|
# Certificates
|
||||||
env.Depends("#tools/editor/certs_compressed.h", "#thirdparty/certs/ca-certificates.crt")
|
env.Depends("#tools/editor/certs_compressed.h", "#thirdparty/certs/ca-certificates.crt")
|
||||||
|
|
|
@ -158,6 +158,13 @@ void DocData::merge_from(const DocData& p_data) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DocData::remove_from(const DocData &p_data) {
|
||||||
|
for(Map<String,ClassDoc>::Element* E=p_data.class_list.front(); E; E=E->next()) {
|
||||||
|
if(class_list.has(E->key()))
|
||||||
|
class_list.erase(E->key());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void DocData::generate(bool p_basic_types) {
|
void DocData::generate(bool p_basic_types) {
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -98,6 +98,7 @@ public:
|
||||||
public:
|
public:
|
||||||
|
|
||||||
void merge_from(const DocData& p_data);
|
void merge_from(const DocData& p_data);
|
||||||
|
void remove_from(const DocData& p_data);
|
||||||
void generate(bool p_basic_types=false);
|
void generate(bool p_basic_types=false);
|
||||||
Error load(const String& p_path);
|
Error load(const String& p_path);
|
||||||
Error save(const String& p_path);
|
Error save(const String& p_path);
|
||||||
|
|
Loading…
Reference in a new issue