import inspect
import json
import logging
import os
import re
import sys
import subprocess
import threading
from urllib import request
import socket
from multiprocessing import Process, Queue
def split(s, delim="\n"):
return list(filter(None, [x.strip() for x in re.split(delim, s.strip())]))
def sf(string, *args, **kwargs):
return string.format(*args, **kwargs)
def replace(heading):
rep = "-".join(split(heading.lower(), r"\s+"))
return sf('# {}', rep, rep, heading)
def gentoc(content):
start = ""
end = ""
startIndex = content.index(start) + len(start)
endIndex = content.index(end)
r = re.compile(r'^#\s+\s*([\w\s]+)\s*', re.M)
links = []
for x in r.finditer(content):
link = x.group(1)
text = x.group(2)
links.append(sf("- [{}]({})", text, link))
toc = "\n".join(links)
return content[:startIndex] + toc + "\n" + content[endIndex:]
def go(param):
with open(param) as f:
content = f.read()
regex = r"^#\s+(\w.*)"
r = re.compile(regex, re.M)
content = r.sub(lambda m: replace(m.group(1)), content)
content = gentoc(content)
with open(param, "w") as f:
f.write(content)
def main(params):
go(os.path.abspath(os.path.expanduser(params[0])))
if __name__ == '__main__':
method = 'main'
num_args = len(sys.argv)
if num_args == 1 or sys.argv[1] not in globals():
main(sys.argv[1:])
elif num_args == 2:
globals()[sys.argv[1]]()
else:
globals()[sys.argv[1]](sys.argv[2:])