Refactor to parse multiple files from the directory

Signed-off-by: Thomas A. Christensen II <25492070+MillironX@users.noreply.github.com>
This commit is contained in:
Thomas A. Christensen II 2022-01-10 16:13:30 -06:00
parent ab23cd2e17
commit ccdb61ac27
Signed by: millironx
GPG key ID: 139C07724802BC5D

View file

@ -1,4 +1,5 @@
#!/usr/bin/env python #!/usr/bin/env python
import os
import yaml import yaml
from docutils import nodes from docutils import nodes
from docutils.parsers.rst import Directive from docutils.parsers.rst import Directive
@ -53,7 +54,22 @@ class NFDocs(Directive):
def run(self): def run(self):
# Take path as single argument for now # Take path as single argument for now
nextflow_path = self.arguments[0] nextflow_path = self.arguments[0]
with open(nextflow_path) as nextflow_file: print(nextflow_path)
# Create dictionaries for each of the block types
docstrings = {
"process": {},
"workflow": {},
"function": {}
}
# Create any array to return from the plugin
return_nodes = []
for root, dirs, files in os.walk(nextflow_path):
for f in files:
if f.endswith(".nf"):
with open(os.path.join(root,f)) as nextflow_file:
# Split by lines # Split by lines
nextflow_lines = nextflow_file.readlines() nextflow_lines = nextflow_file.readlines()
@ -82,13 +98,6 @@ class NFDocs(Directive):
# Add this docstring position to the array # Add this docstring position to the array
docstring_positions.append(range(doc_start, doc_end+1)) docstring_positions.append(range(doc_start, doc_end+1))
# Create dictionaries for each of the block types
docstrings = {
"process": {},
"workflow": {},
"function": {}
}
# Parse out the docstrings and put them in the appropriate dictionary # Parse out the docstrings and put them in the appropriate dictionary
for pos in docstring_positions: for pos in docstring_positions:
proc_name, proc_type = self.definition_type(nextflow_lines[pos[-1]+1]) proc_name, proc_type = self.definition_type(nextflow_lines[pos[-1]+1])
@ -97,9 +106,6 @@ class NFDocs(Directive):
doc_yaml = doc_yaml + nextflow_lines[i].replace(self.DOC_STARTER, "") doc_yaml = doc_yaml + nextflow_lines[i].replace(self.DOC_STARTER, "")
docstrings[proc_type][proc_name] = yaml.safe_load(doc_yaml) docstrings[proc_type][proc_name] = yaml.safe_load(doc_yaml)
# Create any array to return from the plugin
return_nodes = []
# Try to convert each definition to a node # Try to convert each definition to a node
for block_type, block_docs in docstrings.items(): for block_type, block_docs in docstrings.items():
block_section = nodes.section() block_section = nodes.section()