diff --git a/pandocFilter/pandocFilter.py b/pandocFilter/pandocFilter.py index 05a504c08761e01348d70b26d8be507bc80907c1..6adddf4ae3aa9651d7b7047ae59066ef119e2485 100644 --- a/pandocFilter/pandocFilter.py +++ b/pandocFilter/pandocFilter.py @@ -7,7 +7,7 @@ # License: BSD 3-Clause License. See the LICENSE file for further details. # -import argparse, os, re +import argparse, os, re, sys from rich import print from rich.progress import Progress, TextColumn, TimeElapsedColumn @@ -98,11 +98,38 @@ def replaceTableCaptions(progress:Progress, mdLines:list[str]) -> list[str]: return _lines +def replaceFigureCaptions(progress:Progress, mdLines:list[str]) -> list[str]: + """ Replace table captions with a pandoc table caption. + """ + _taskID = progress.add_task('[blue]Replacing figure captions', start=False, total=0) + # progress.update() + figureregex = re.compile('^\*\*(Figure .*)\*\*') + + _lines:list[str] = [] + for line in mdLines: + matches = re.findall(figureregex, line) + if matches: + # Replace the previous figure markdown name with the captions + _idx = len(_lines) - 1 + while _idx >= 0 and not _lines[_idx].startswith('!['): + _idx -= 1 + if _idx > 0: + _lines[_idx] = re.sub(r'^.*?]', f'![{matches[0]}]', _lines[_idx]) + + else: + _lines.append(line) + + progress.stop_task(_taskID) + return _lines + + + def process(document:str, outDirectory:str) -> None: with Progress(TextColumn('{task.description}'), TimeElapsedColumn()) as progress: mdLines = readMDFile(progress, document) mdLines = correctTOC(progress, mdLines) mdLines = replaceTableCaptions(progress, mdLines) + mdLines = replaceFigureCaptions(progress, mdLines) writeMDFile(progress, mdLines, document, outDirectory) def main(args=None):