#!/usr/bin/env python
import re
import argparse

def extract_content(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        content = file.read()

    # Utiliser une expression régulière pour trouver le contenu entre les balises <think> et </think>
    #think_pattern = r'<think>(.*?)</think>'
    think_pattern = r'Thinking\.\.\.(.*?)\.\.\.done thinking\.'
    think_matches = re.findall(think_pattern, content, re.DOTALL)

    # Nettoyer les résultats pour enlever les espaces superflus
    extracted_think = [match.strip() for match in think_matches]

    # Utiliser une expression régulière pour trouver le contenu YAML entre les balises ```yaml et ```
    yaml_pattern = r'```yaml(.*?)```'
    yaml_matches = re.findall(yaml_pattern, content, re.DOTALL)

    # Nettoyer les résultats pour enlever les espaces superflus
    extracted_yaml = [match.strip() for match in yaml_matches]

    # Supprimer le contenu YAML et <think> du texte complet
    markdown_content = re.sub(yaml_pattern, '', content, flags=re.DOTALL)
    markdown_content = re.sub(think_pattern, '', markdown_content, flags=re.DOTALL)

    return extracted_think, extracted_yaml, markdown_content.strip()

def main():
    # Configuration de l'analyseur d'arguments
    parser = argparse.ArgumentParser(description='Extraire le contenu d\'un fichier texte.')
    parser.add_argument('file_path', type=str, help='Chemin vers le fichier texte à analyser.')
    group = parser.add_mutually_exclusive_group(required=True)
    group.add_argument('--think', action='store_true', help='Afficher le contenu de la balise <think>.')
    group.add_argument('--explanation', action='store_true', help='Afficher le reste du Markdown sans le code YAML et <think>.')
    group.add_argument('--yaml', action='store_true', help='Afficher le contenu YAML.')

    # Analyse des arguments
    args = parser.parse_args()

    # Extraction du contenu
    extracted_think, extracted_yaml, markdown_content = extract_content(args.file_path)

    if args.think:
        # Affichage du contenu de la balise <think>
        if extracted_think:
            print(extracted_think[0])
        else:
            print("Aucun contenu trouvé entre les balises <think> et </think>.")
    elif args.yaml:
        # Affichage du contenu YAML
        if extracted_yaml:
            print(extracted_yaml[0])
        else:
            print("Aucun contenu YAML trouvé.")
    elif args.explanation:
        # Affichage du reste du Markdown sans le code YAML et <think>
        print(markdown_content)

if __name__ == "__main__":
    main()

