From d727de5715df6ff64aec4468839c22fead792bd8 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Wed, 5 Jan 2022 13:36:10 -0600 Subject: [PATCH] Add finding positions of docstrings Signed-off-by: Thomas A. Christensen II <25492070+MillironX@users.noreply.github.com> --- nfdocs-parser.py | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/nfdocs-parser.py b/nfdocs-parser.py index 9e9c45d..148c7b3 100755 --- a/nfdocs-parser.py +++ b/nfdocs-parser.py @@ -1,6 +1,9 @@ #!/usr/bin/env python import sys +# Declare the docstring starting characters +DOC_STARTER = "/// " + # Take path as single argument for now nextflow_path = sys.argv[1] with open(nextflow_path) as nextflow_file: @@ -8,6 +11,29 @@ with open(nextflow_path) as nextflow_file: # Split by lines nextflow_lines = nextflow_file.readlines() - # Print the first few lines - for i in range(1, 10): - print(nextflow_lines[i]) + # Declare some variables to keep track of where the docstrings begin and end + doc_start = 0 + doc_end = 0 + + # Declare dictionaries to keep track of the docstrings + docstring_positions = [] + + # 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): + # 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): + doc_start = i + if not line_next.startswith(DOC_STARTER): + doc_end = i + + # Check if we've reached the end of a docstring block + if doc_end == i: + # Add this docstring position to the array + docstring_positions.append(range(doc_start, doc_end)) + + # Display the results so far + print(docstring_positions)