Improve codegen scripts

This commit is contained in:
Dan 2019-05-31 00:19:18 +02:00
parent cb3addab1e
commit 06ad65e3a0
2 changed files with 16 additions and 8 deletions

View File

@ -67,7 +67,7 @@ def get_docstring_arg_type(t: str, is_list: bool = False, is_pyrogram_type: bool
n = len(t) - 1 n = len(t) - 1
t = (("e" if is_list else "E") + "ither " if n else "") + ", ".join( t = (("e" if is_list else "E") + "ither " if n else "") + ", ".join(
":obj:`{1} <{0}.{1}>`".format( ":obj:`~{}.{}`".format(
"pyrogram.types" if is_pyrogram_type else "pyrogram.api.types", "pyrogram.types" if is_pyrogram_type else "pyrogram.api.types",
i.replace("pyrogram.", "") i.replace("pyrogram.", "")
) )
@ -88,7 +88,7 @@ def get_references(t: str):
n = len(t) - 1 n = len(t) - 1
t = ", ".join( t = ", ".join(
":obj:`{0} <pyrogram.api.functions.{0}>`".format(i) ":obj:`~pyrogram.api.functions.{}`".format(i)
for i in t for i in t
) )

View File

@ -18,6 +18,7 @@
import ast import ast
import os import os
import re
import shutil import shutil
HOME = "compiler/docs" HOME = "compiler/docs"
@ -29,8 +30,10 @@ TYPES_PATH = "pyrogram/api/types"
FUNCTIONS_BASE = "functions" FUNCTIONS_BASE = "functions"
TYPES_BASE = "types" TYPES_BASE = "types"
shutil.rmtree(TYPES_BASE, ignore_errors=True)
shutil.rmtree(FUNCTIONS_BASE, ignore_errors=True) def snek(s: str):
s = re.sub(r"(.)([A-Z][a-z]+)", r"\1_\2", s)
return re.sub(r"([a-z0-9])([A-Z])", r"\1_\2", s).lower()
def generate(source_path, base): def generate(source_path, base):
@ -50,9 +53,11 @@ def generate(source_path, base):
for node in ast.walk(p): for node in ast.walk(p):
if isinstance(node, ast.ClassDef): if isinstance(node, ast.ClassDef):
name = node.name name = node.name
break
else:
continue
# name = "".join([str(j.title()) for j in os.path.splitext(i)[0].split("_")]) full_path = os.path.basename(path) + "/" + snek(name).replace("_", "-") + ".rst"
full_path = os.path.basename(path) + "/" + name + ".rst"
if level: if level:
full_path = base + "/" + full_path full_path = base + "/" + full_path
@ -65,7 +70,7 @@ def generate(source_path, base):
title=name, title=name,
title_markup="=" * len(name), title_markup="=" * len(name),
full_class_path="pyrogram.api.{}".format( full_class_path="pyrogram.api.{}".format(
os.path.splitext(full_path)[0].replace("/", ".") ".".join(full_path.split("/")[:-1]) + "." + name
) )
) )
) )
@ -82,7 +87,7 @@ def generate(source_path, base):
entities = [] entities = []
for i in v: for i in v:
entities.append(i) entities.append(snek(i).replace("_", "-"))
if k != base: if k != base:
inner_path = base + "/" + k + "/index" + ".rst" inner_path = base + "/" + k + "/index" + ".rst"
@ -98,6 +103,7 @@ def generate(source_path, base):
with open(DESTINATION + "/" + inner_path, "w", encoding="utf-8") as f: with open(DESTINATION + "/" + inner_path, "w", encoding="utf-8") as f:
if k == base: if k == base:
f.write(":tocdepth: 1\n\n") f.write(":tocdepth: 1\n\n")
k = "Raw " + k
f.write( f.write(
toctree.format( toctree.format(
@ -115,6 +121,8 @@ def start():
global page_template global page_template
global toctree global toctree
shutil.rmtree(DESTINATION, ignore_errors=True)
with open(HOME + "/template/page.txt", encoding="utf-8") as f: with open(HOME + "/template/page.txt", encoding="utf-8") as f:
page_template = f.read() page_template = f.read()