mirror of
https://github.com/MillironX/nfdocs-parser.git
synced 2024-11-22 00:56:04 +00:00
Promote main script to RST run function
Signed-off-by: Thomas A. Christensen II <25492070+MillironX@users.noreply.github.com>
This commit is contained in:
parent
c09f664328
commit
5124acddc7
1 changed files with 66 additions and 63 deletions
|
@ -1,10 +1,12 @@
|
|||
#!/usr/bin/env python
|
||||
import sys
|
||||
import yaml
|
||||
from docutils import nodes
|
||||
from docutils.parsers.rst import Directive
|
||||
from docutils.parsers.rst import directives
|
||||
|
||||
class NFDocs(Directive):
|
||||
# Class default overrides
|
||||
required_arguments = 1
|
||||
|
||||
# Declare the docstring starting characters
|
||||
DOC_STARTER = "/// "
|
||||
|
@ -37,7 +39,7 @@ class NFDocs(Directive):
|
|||
tuple_item += nodes.paragraph(text="Tuple:")
|
||||
tuple_list = nodes.bullet_list()
|
||||
for io in params["tuple"]:
|
||||
tuple_list += params_to_list(io)
|
||||
tuple_list += self.params_to_list(io)
|
||||
tuple_item += tuple_list
|
||||
return tuple_item
|
||||
else:
|
||||
|
@ -48,8 +50,9 @@ class NFDocs(Directive):
|
|||
io_item += nodes.paragraph(text=params["description"])
|
||||
return io_item
|
||||
|
||||
def run(self):
|
||||
# Take path as single argument for now
|
||||
nextflow_path = sys.argv[1]
|
||||
nextflow_path = self.arguments[0]
|
||||
with open(nextflow_path) as nextflow_file:
|
||||
|
||||
# Split by lines
|
||||
|
@ -65,13 +68,13 @@ class NFDocs(Directive):
|
|||
# Calculate the start and end positions of each docstring
|
||||
for i, line in enumerate(nextflow_lines):
|
||||
# Check if this is a docstring
|
||||
if line.startswith(DOC_STARTER):
|
||||
if line.startswith(self.DOC_STARTER):
|
||||
# It is: check the next and previous lines to see if this is part of a block
|
||||
line_previous = nextflow_lines[i-1]
|
||||
line_next = nextflow_lines[i+1]
|
||||
if not line_previous.startswith(DOC_STARTER):
|
||||
if not line_previous.startswith(self.DOC_STARTER):
|
||||
doc_start = i
|
||||
if not line_next.startswith(DOC_STARTER):
|
||||
if not line_next.startswith(self.DOC_STARTER):
|
||||
doc_end = i
|
||||
|
||||
# Check if we've reached the end of a docstring block
|
||||
|
@ -88,10 +91,10 @@ class NFDocs(Directive):
|
|||
|
||||
# Parse out the docstrings and put them in the appropriate dictionary
|
||||
for pos in docstring_positions:
|
||||
proc_name, proc_type = definition_type(nextflow_lines[pos[-1]+1])
|
||||
proc_name, proc_type = self.definition_type(nextflow_lines[pos[-1]+1])
|
||||
doc_yaml = ""
|
||||
for i in pos:
|
||||
doc_yaml = doc_yaml + nextflow_lines[i].replace(DOC_STARTER, "")
|
||||
doc_yaml = doc_yaml + nextflow_lines[i].replace(self.DOC_STARTER, "")
|
||||
docstrings[proc_type][proc_name] = yaml.safe_load(doc_yaml)
|
||||
|
||||
# Create any array to return from the plugin
|
||||
|
@ -112,11 +115,11 @@ class NFDocs(Directive):
|
|||
io_section += nodes.title(text=met)
|
||||
io_list = nodes.bullet_list()
|
||||
for io in proc_docs[met]:
|
||||
io_list += params_to_list(io)
|
||||
io_list += self.params_to_list(io)
|
||||
io_section += io_list
|
||||
proc_section += io_section
|
||||
block_section += proc_section
|
||||
|
||||
return_nodes.append(block_section)
|
||||
|
||||
print(return_nodes)
|
||||
return return_nodes
|
||||
|
|
Loading…
Reference in a new issue