Files
PythonRobotics/docs/jupyternotebook2rst.py
Atsushi Sakai 8542504b80 code clean up
2019-02-02 10:17:08 +09:00

94 lines
1.8 KiB
Python

"""
Jupyter notebook converter to rst file
author: Atsushi Sakai
"""
import subprocess
import os.path
import os
import glob
NOTEBOOK_DIR = "../"
def get_notebook_path_list(ndir):
path = glob.glob(ndir + "**/*.ipynb", recursive=True)
return path
def convert_rst(rstpath):
with open(rstpath, "r") as bfile:
filedata = bfile.read()
# convert from code directive to code-block
# because showing code in Sphinx
before = ".. code:: ipython3"
after = ".. code-block:: ipython3"
filedata = filedata.replace(before, after)
with open(rstpath, "w") as afile:
afile.write(filedata)
def generate_rst(npath):
print("====Start generating rst======")
# generate dir
dirpath = os.path.dirname(npath)
# print(dirpath)
rstpath = os.path.abspath("./modules/" + npath[3:-5] + "rst")
# print(rstpath)
basename = os.path.basename(rstpath)
cmd = "jupyter nbconvert --to rst "
cmd += npath
print(cmd)
subprocess.call(cmd, shell=True)
rstpath = dirpath + "/" + basename
convert_rst(rstpath)
# clean up old files
cmd = "rm -rf "
cmd += "./modules/"
cmd += basename[:-4]
cmd += "*"
# print(cmd)
subprocess.call(cmd, shell=True)
# move files to module dir
cmd = "mv "
cmd += dirpath
cmd += "/*.rst ./modules/"
print(cmd)
subprocess.call(cmd, shell=True)
cmd = "mv "
cmd += dirpath
cmd += "/*_files ./modules/"
print(cmd)
subprocess.call(cmd, shell=True)
def main():
print("start!!")
notebook_path_list = get_notebook_path_list(NOTEBOOK_DIR)
# print(notebook_path_list)
for npath in notebook_path_list:
if "template" not in npath:
generate_rst(npath)
print("done!!")
if __name__ == '__main__':
main()