[DEV] start generating docs
This commit is contained in:
parent
bb6e701bd8
commit
e13bf9da44
146
lutinDoc.py
Normal file
146
lutinDoc.py
Normal file
@ -0,0 +1,146 @@
|
||||
#!/usr/bin/python
|
||||
import lutinDebug as debug
|
||||
import sys
|
||||
import CppHeaderParser
|
||||
import lutinTools
|
||||
|
||||
def writeExpendSize(data, size) :
|
||||
ret = data
|
||||
for iii in range(len(ret), size):
|
||||
ret += " "
|
||||
return ret
|
||||
|
||||
def displayReductFunction(className, function, file, classement, sizeReturn, sizefunction) :
|
||||
lineData = "\t" + classement + " "
|
||||
|
||||
if function['destructor'] :
|
||||
lineData += writeExpendSize("", sizeReturn+1)
|
||||
elif function['constructor'] :
|
||||
lineData += writeExpendSize("", sizeReturn)
|
||||
lineData += "~"
|
||||
else :
|
||||
lineData += writeExpendSize(function["rtnType"], sizeReturn+1)
|
||||
|
||||
lineData += writeExpendSize(function["name"], sizefunction+1)
|
||||
lineData += "("
|
||||
file.write(lineData);
|
||||
parameterPos = len(lineData);
|
||||
isFirst = True
|
||||
for param in function["parameters"]:
|
||||
if isFirst == False:
|
||||
file.write(",\n")
|
||||
file.write(writeExpendSize("",parameterPos))
|
||||
file.write(param['type'])
|
||||
if param['name'] != "":
|
||||
file.write(" ")
|
||||
file.write(param['name'])
|
||||
isFirst = False
|
||||
file.write(");")
|
||||
file.write("\n")
|
||||
|
||||
def calsulateSizeFunction(function, size) :
|
||||
if len(function["name"]) > size:
|
||||
return len(function["name"])+1
|
||||
return size
|
||||
|
||||
def calsulateSizeReturn(function, size) :
|
||||
if len(function["rtnType"]) > size:
|
||||
return len(function["rtnType"])+1
|
||||
return size
|
||||
|
||||
def GenerateDocFile(filename, outFolder) :
|
||||
try:
|
||||
metaData = CppHeaderParser.CppHeader(filename)
|
||||
except CppHeaderParser.CppParseError, e:
|
||||
debug.error(" can not parse the file: '" + filename + "' error : " + e)
|
||||
return False
|
||||
|
||||
lutinTools.CreateDirectoryOfFile(outFolder+"/");
|
||||
|
||||
for element in metaData.classes:
|
||||
classFileName = outFolder + "/";
|
||||
localClass = metaData.classes[element]
|
||||
if localClass['namespace'] == "":
|
||||
className = localClass['name']
|
||||
else:
|
||||
className = localClass['namespace'] + "::" + localClass['name']
|
||||
debug.debug(" class: " + className)
|
||||
classFileName += className
|
||||
# Replace all :: with __
|
||||
classFileName = classFileName.replace(":", "_")
|
||||
classFileName = classFileName.replace(" ", "")
|
||||
classFileName += ".md"
|
||||
file = open(classFileName, "w")
|
||||
|
||||
file.write(className + "\n")
|
||||
for iii in range(0,len(className)):
|
||||
file.write("=");
|
||||
file.write("\n")
|
||||
file.write("\n")
|
||||
# calculate function max size return & function name size:
|
||||
sizeReturn=0
|
||||
sizefunction=0
|
||||
for function in localClass["methods"]["public"]:
|
||||
sizefunction = calsulateSizeFunction(function, sizefunction)
|
||||
sizeReturn = calsulateSizeReturn(function, sizeReturn)
|
||||
for function in localClass["methods"]["protected"]:
|
||||
sizefunction = calsulateSizeFunction(function, sizefunction)
|
||||
sizeReturn = calsulateSizeReturn(function, sizeReturn)
|
||||
for function in localClass["methods"]["private"]:
|
||||
sizefunction = calsulateSizeFunction(function, sizefunction)
|
||||
sizeReturn = calsulateSizeReturn(function, sizeReturn)
|
||||
|
||||
file.write("Synopsis:\n")
|
||||
file.write("---------\n")
|
||||
file.write("\n")
|
||||
# display all functions :
|
||||
# TODO: ...
|
||||
for function in localClass["methods"]["public"]:
|
||||
displayReductFunction(localClass['name'], function, file, "public: ", sizeReturn, sizefunction)
|
||||
for function in localClass["methods"]["protected"]:
|
||||
displayReductFunction(localClass['name'], function, file, "protected:", sizeReturn, sizefunction)
|
||||
for function in localClass["methods"]["private"]:
|
||||
displayReductFunction(localClass['name'], function, file, "private: ", sizeReturn, sizefunction)
|
||||
|
||||
file.write("\n")
|
||||
file.write("\n")
|
||||
|
||||
file.write("Signals:\n")
|
||||
file.write("--------\n")
|
||||
file.write("\n")
|
||||
# display all signals :
|
||||
# TODO: ...
|
||||
|
||||
file.write("Configuration:\n")
|
||||
file.write("--------------\n")
|
||||
file.write("\n")
|
||||
# display all configuration :
|
||||
# TODO: ...
|
||||
|
||||
file.write("Description:\n")
|
||||
file.write("------------\n")
|
||||
file.write("\n")
|
||||
# display Class description :
|
||||
# TODO: ...
|
||||
|
||||
|
||||
file.write("Detail:\n")
|
||||
file.write("-------\n")
|
||||
file.write("\n")
|
||||
# display all the class internal functions :
|
||||
# TODO: ...
|
||||
|
||||
|
||||
|
||||
if len(localClass['inherits']) != 0:
|
||||
for heritedClass in localClass['inherits']:
|
||||
debug.debug(" heritage : " + str(heritedClass['class']))
|
||||
|
||||
|
||||
file.close()
|
||||
|
||||
|
||||
"""
|
||||
|
||||
"""
|
||||
|
@ -11,6 +11,7 @@ import lutinHeritage as heritage
|
||||
import lutinDepend as dependency
|
||||
import lutinMultiprocess
|
||||
import lutinEnv
|
||||
import lutinDoc
|
||||
|
||||
"""
|
||||
|
||||
@ -35,6 +36,8 @@ class module:
|
||||
self.name=''
|
||||
# Dependency list:
|
||||
self.depends=[]
|
||||
# Dependency list:
|
||||
self.docPath=lutinTools.GetCurrentPath(file)
|
||||
# export PATH
|
||||
self.export_path=[]
|
||||
self.local_path=[]
|
||||
@ -375,6 +378,22 @@ class module:
|
||||
debug.verbose("Might copy folder : " + element[0] + "==>" + element[1])
|
||||
lutinTools.CopyAnythingTarget(target, self.originFolder+"/"+element[0],element[1])
|
||||
|
||||
###############################################################################
|
||||
## Create the module documentation:
|
||||
###############################################################################
|
||||
def CreateDoc(self, target) :
|
||||
if self.docPath == "":
|
||||
return False
|
||||
lutinTools.RemoveFolderAndSubFolder(target.GetDocFolder(self.name));
|
||||
for root, dirnames, filenames in os.walk(self.docPath):
|
||||
tmpList = fnmatch.filter(filenames, "*.h")
|
||||
# Import the module :
|
||||
for filename in tmpList:
|
||||
fileCompleteName = os.path.join(root, filename)
|
||||
debug.debug(" Find a file : '" + fileCompleteName + "'")
|
||||
lutinDoc.GenerateDocFile(fileCompleteName, target.GetDocFolder(self.name));
|
||||
|
||||
|
||||
# call here to build the module
|
||||
def Build(self, target, packageName):
|
||||
# ckeck if not previously build
|
||||
|
@ -67,6 +67,7 @@ class Target:
|
||||
self.folder_final="/final/" + typeCompilator
|
||||
self.folder_staging="/staging/" + typeCompilator
|
||||
self.folder_build="/build/" + typeCompilator
|
||||
self.folder_doc="/doc/"
|
||||
self.folder_bin="/usr/bin"
|
||||
self.folder_lib="/usr/lib"
|
||||
self.folder_data="/usr/share"
|
||||
@ -149,6 +150,9 @@ class Target:
|
||||
def GetBuildFolder(self, moduleName):
|
||||
return lutinTools.GetRunFolder() + self.folder_out + self.folder_build + "/" + moduleName
|
||||
|
||||
def GetDocFolder(self, moduleName):
|
||||
return lutinTools.GetRunFolder() + self.folder_out + self.folder_doc + "/" + moduleName
|
||||
|
||||
def IsModuleBuild(self,module):
|
||||
for mod in self.buildDone:
|
||||
if mod == module:
|
||||
@ -255,6 +259,9 @@ class Target:
|
||||
elif actionName == "build":
|
||||
debug.debug("build module '" + moduleName + "'")
|
||||
return mod.Build(self, None)
|
||||
elif actionName == "doc":
|
||||
debug.debug("Create doc module '" + moduleName + "'")
|
||||
return mod.CreateDoc(self)
|
||||
debug.error("not know module name : '" + moduleName + "' to '" + actionName + "' it")
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user