mirror of
https://github.com/azerothcore/mod-ale
synced 2025-11-29 15:38:17 +08:00
docs: port docs generator to python3
This commit is contained in:
@@ -1,14 +1,14 @@
|
|||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
from types import FileType
|
import typing
|
||||||
from jinja2 import Environment, FileSystemLoader
|
from jinja2 import Environment, FileSystemLoader
|
||||||
from typedecorator import params, returns
|
from typedecorator import params, returns
|
||||||
from parser import ClassParser, MethodDoc
|
from ElunaDoc.parser import ClassParser, MethodDoc
|
||||||
import glob
|
import glob
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
|
||||||
@returns([(str, FileType)])
|
@returns([(str, typing.IO)])
|
||||||
@params(search_path=str)
|
@params(search_path=str)
|
||||||
def find_class_files(search_path):
|
def find_class_files(search_path):
|
||||||
"""Find and open all files containing Eluna class methods in `search_path`.
|
"""Find and open all files containing Eluna class methods in `search_path`.
|
||||||
@@ -63,13 +63,13 @@ if __name__ == '__main__':
|
|||||||
shutil.copytree('ElunaDoc/static', 'build/static')
|
shutil.copytree('ElunaDoc/static', 'build/static')
|
||||||
|
|
||||||
# Load up all files with methods we need to parse.
|
# Load up all files with methods we need to parse.
|
||||||
print 'Finding Eluna method files...'
|
print('Finding Eluna method files...')
|
||||||
class_files = find_class_files('../')
|
class_files = find_class_files('../')
|
||||||
|
|
||||||
# Parse all the method files.
|
# Parse all the method files.
|
||||||
classes = []
|
classes = []
|
||||||
for f in class_files:
|
for f in class_files:
|
||||||
print 'Parsing file {}...'.format(f.name)
|
print(f'Parsing file {f.name}...')
|
||||||
classes.append(ClassParser.parse_file(f))
|
classes.append(ClassParser.parse_file(f))
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
@@ -155,7 +155,7 @@ if __name__ == '__main__':
|
|||||||
render('date.js', 'date.js', level=0, currdate=time.strftime("%d/%m/%Y"))
|
render('date.js', 'date.js', level=0, currdate=time.strftime("%d/%m/%Y"))
|
||||||
|
|
||||||
for class_ in classes:
|
for class_ in classes:
|
||||||
print 'Rending pages for class {}...'.format(class_.name)
|
print(f'Rendering pages for class {class_.name}...')
|
||||||
|
|
||||||
# Make a folder for the class.
|
# Make a folder for the class.
|
||||||
os.mkdir('build/' + class_.name)
|
os.mkdir('build/' + class_.name)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import re
|
import re
|
||||||
from types import FileType
|
import typing
|
||||||
import markdown
|
import markdown
|
||||||
from typedecorator import params, returns, Nullable
|
from typedecorator import params, returns, Nullable
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ class ParameterDoc(object):
|
|||||||
'ObjectGuid': ('0', '18,446,744,073,709,551,615'),
|
'ObjectGuid': ('0', '18,446,744,073,709,551,615'),
|
||||||
}
|
}
|
||||||
|
|
||||||
@params(self=object, name=Nullable(unicode), data_type=str, description=unicode, default_value=Nullable(unicode))
|
@params(self=object, name=Nullable(str), data_type=str, description=str, default_value=Nullable(str))
|
||||||
def __init__(self, name, data_type, description, default_value=None):
|
def __init__(self, name, data_type, description, default_value=None):
|
||||||
"""If `name` is not provided, the Parameter is a returned value instead of a parameter."""
|
"""If `name` is not provided, the Parameter is a returned value instead of a parameter."""
|
||||||
self.name = name
|
self.name = name
|
||||||
@@ -59,12 +59,12 @@ class ParameterDoc(object):
|
|||||||
self.data_type = '[' + self.data_type + ']'
|
self.data_type = '[' + self.data_type + ']'
|
||||||
|
|
||||||
elif not self.data_type in ['nil', 'boolean', 'number', 'string', 'table', 'function', '...'] and self.data_type[:1] != '[':
|
elif not self.data_type in ['nil', 'boolean', 'number', 'string', 'table', 'function', '...'] and self.data_type[:1] != '[':
|
||||||
print "Missing angle brackets [] around the data type name: `" + self.data_type + "`"
|
print(f"Missing angle brackets [] around the data type name: `{self.data_type}`")
|
||||||
|
|
||||||
|
|
||||||
class MethodDoc(object):
|
class MethodDoc(object):
|
||||||
"""The documentation data of an Eluna method."""
|
"""The documentation data of an Eluna method."""
|
||||||
@params(self=object, name=unicode, description=unicode, prototypes=[unicode], parameters=[ParameterDoc], returned=[ParameterDoc])
|
@params(self=object, name=str, description=str, prototypes=[str], parameters=[ParameterDoc], returned=[ParameterDoc])
|
||||||
def __init__(self, name, description, prototypes, parameters, returned):
|
def __init__(self, name, description, prototypes, parameters, returned):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.prototypes = prototypes
|
self.prototypes = prototypes
|
||||||
@@ -81,7 +81,7 @@ class MethodDoc(object):
|
|||||||
|
|
||||||
class MangosClassDoc(object):
|
class MangosClassDoc(object):
|
||||||
"""The documentation of a MaNGOS class that has Lua methods."""
|
"""The documentation of a MaNGOS class that has Lua methods."""
|
||||||
@params(self=object, name=unicode, description=unicode, methods=[MethodDoc])
|
@params(self=object, name=str, description=str, methods=[MethodDoc])
|
||||||
def __init__(self, name, description, methods):
|
def __init__(self, name, description, methods):
|
||||||
self.name = name
|
self.name = name
|
||||||
# Parse the description as Markdown.
|
# Parse the description as Markdown.
|
||||||
@@ -317,7 +317,7 @@ class ClassParser(object):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@returns(MangosClassDoc)
|
@returns(MangosClassDoc)
|
||||||
@params(file=FileType)
|
@params(file=typing.IO)
|
||||||
def parse_file(file):
|
def parse_file(file):
|
||||||
"""Parse the file `file` into a documented class."""
|
"""Parse the file `file` into a documented class."""
|
||||||
# Get the class name from "ClassMethods.h" by stripping off "Methods.h".
|
# Get the class name from "ClassMethods.h" by stripping off "Methods.h".
|
||||||
|
|||||||
Reference in New Issue
Block a user