# Takes Push instructions defined through (def-instruction and # puts their documentation into a markdown file in docs_src import os from mdutils.mdutils import MdUtils mdFile = MdUtils(file_name='src/docs_src/Additional_Instructions') mdFile.new_header(level=1, title='Additional Instructions') os.chdir('..') instructionFiles = os.listdir('src/propeller/push/instructions') instructionFiles.remove('vector.cljc') instructionFiles.remove('polymorphic.cljc') print(instructionFiles) hasDefInstruction = False for file in instructionFiles: mdFile.new_header(level=1, title=file) try: print(file) # opening and reading the file file_read = open('src/propeller/push/instructions/'+file, "r") # set search text text = "(def-instruction" # reading file content line by line. lines = file_read.readlines() # looping through each line in the file # if the line contains "\(def-instruction", go through lines above that line and add # the Clojure comments to a list which is later written into markdown file. for count, line in enumerate(lines): new_list = [] # print(line) # print(count) if text in line: hasDefInstruction = True # print(line) mdFile.new_header(level=2, title=lines[count+1].strip()) isComment = True inc = 1 while isComment: if lines[count-inc].startswith(';;'): new_list.append(lines[count-inc].replace(';', '').strip()) # print(lines[count-inc]) inc = inc + 1 else: isComment = False new_list.reverse() for comment in new_list: mdFile.write(comment+' ') functionInfo = lines[count+1].strip() + lines[count-1].replace(';', '').strip() # print(functionInfo) new_list.append(functionInfo) # closing file after reading file_read.close() # the input string doesn't # found in the text file if not hasDefInstruction: print("\n\"" + text + "\" is not found in \"" + file + "\"!") mdFile.new_paragraph('') else: print("There is"+text) # entering except block # if input file doesn't exist except: print("\nThe file doesn't exist!") mdFile.new_table_of_contents() mdFile.create_md_file()