#!/usr/bin/python # -*- coding: utf-8 -*- class GmiMarkdown: def convert_to_gmi(markdown_text): lines = markdown_text.splitlines() footnotes = [] footnote_counter = 1 output_lines = [] for line in lines: # Process links in the format [text](url) while True: start_bracket = line.find('[') if start_bracket == -1: break # No more links in this line end_bracket = line.find(']', start_bracket) if end_bracket == -1: break # Malformed link; exit loop start_parenthesis = line.find('(', end_bracket) if start_parenthesis == -1: break # Malformed link; exit loop end_parenthesis = line.find(')', start_parenthesis) if end_parenthesis == -1: break # Malformed link; exit loop link_text = line[start_bracket + 1:end_bracket] url = line[start_parenthesis + 1:end_parenthesis] # Add footnote footnotes.append(f" [{footnote_counter}]: {link_text}{url}") footnote_marker = f"{link_text}[{footnote_counter}]" footnote_counter += 1 # Replace link with footnote marker line = line[:start_bracket] + footnote_marker + line[end_parenthesis + 1:] # Remove Markdown header markers if line.startswith('#'): line = line.lstrip('# ').strip() output_lines.append(line.strip()) # Combine output lines and footnotes output_text = "\n".join(output_lines).strip() footnotes_text = "\n".join(footnotes) return f"{output_text}\n\n{footnotes_text}" if footnotes else output_text