From 1ea0f0c9ac3cab215f36d2d56abb145ad645ea42 Mon Sep 17 00:00:00 2001
From: Andreas Kraft <an.kraft@gmail.com>
Date: Fri, 2 Jun 2023 12:50:09 +0200
Subject: [PATCH] Added missing sys import. Added figure caption handling.

---
 pandocFilter/pandocFilter.py | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/pandocFilter/pandocFilter.py b/pandocFilter/pandocFilter.py
index 05a504c..6adddf4 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):
-- 
GitLab