Extraindo comentários para markdown

import os import re

def extract_sas_comments_to_markdown(source_dir): """ Extrai comentários /*DOC ... / de arquivos SAS e os salva em arquivos Markdown.

        Args:
                source_dir (str): O diretório raiz onde os arquivos .sas estão localizados.
                    """
                        # Expressão regular para encontrar o bloco de comentário /**DOC ... */
                            # re.DOTALL permite que o '.' case com quebras de linha
                                comment_pattern = re.compile(r'/\*\*DOC(.*?)?\*/', re.DOTALL)

                                    for root, _, files in os.walk(source_dir):
                                            for file in files:
                                                        if file.endswith(".sas"):
                                                                        sas_file_path = os.path.join(root, file)
                                                                                        markdown_file_path = os.path.join(root, file.replace(".sas", ".md"))

                                                                                                        print(f"Processando arquivo: {sas_file_path}")

                                                                                                                        try:
                                                                                                                                            with open(sas_file_path, 'r', encoding='utf-8') as f:
                                                                                                                                                                    content = f.read()

                                                                                                                                                                                        # Encontra todas as ocorrências do padrão de comentário
                                                                                                                                                                                                            matches = comment_pattern.findall(content)

                                                                                                                                                                                                                                if matches:
                                                                                                                                                                                                                                                        with open(markdown_file_path, 'w', encoding='utf-8') as md_file:
                                                                                                                                                                                                                                                                                    for match in matches:
                                                                                                                                                                                                                                                                                                                    # Remove linhas em branco extras no início/fim e grava o conteúdo
                                                                                                                                                                                                                                                                                                                                                    cleaned_comment = os.linesep.join([line.strip() for line in match.strip().splitlines() if line.strip()])
                                                                                                                                                                                                                                                                                                                                                                                    if cleaned_comment: # Garante que não escreve blocos vazios
                                                                                                                                                                                                                                                                                                                                                                                                                        md_file.write(cleaned_comment)
                                                                                                                                                                                                                                                                                                                                                                                                                                                            md_file.write(os.linesep * 2) # Adiciona duas quebras de linha entre blocos

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    print(f"Comentários extraídos para: {markdown_file_path}")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        else:
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                print(f"Nenhum comentário /**DOC*/ encontrado em: {sas_file_path}")

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                except Exception as e:
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    print(f"Erro ao processar o arquivo '{sas_file_path}': {e}")

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    # Define a pasta de origem
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    SOURCE_DIRECTORY = "src"

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    # Executa a função
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    extract_sas_comments_to_markdown(SOURCE_DIRECTORY)

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    print("Processo concluído.")