diff --git a/marcheolex/markdown.py b/marcheolex/markdown.py index 74a6d7e..f901780 100644 --- a/marcheolex/markdown.py +++ b/marcheolex/markdown.py @@ -74,36 +74,27 @@ def creer_markdown_texte(texte, cache): f_article = open(chemin_article, 'r') soup = BeautifulSoup(f_article.read(), 'xml') f_article.close() - contenu = soup.find('BLOC_TEXTUEL').find('CONTENU').text.strip() - - # Logique de transformation en Markdown + contenu = soup.find('BLOC_TEXTUEL').find('CONTENU') + + # Nettoyage de contenu (sauts de ligne) + for br in contenu.find_all('br'): + br.replace_with('L-N') + for p in contenu.find_all('p'): + p.replace_with(p.text.strip() + 'L-NL-N') + contenu = contenu.text + contenu = contenu.replace('\n', '') + contenu = ' '.join(contenu.split()) + for i in range(3): + contenu = contenu.replace('L-NL-NL-N', 'L-NL-N') + contenu = contenu.replace('L-N', '\n').strip() lignes = [l.strip() for l in contenu.split('\n')] - contenu = '\n'.join(lignes) - # - Retrait des
en début et fin (cela semble être enlevé par BeautifulSoup) - if all([lignes[l].startswith(('
', r'
')) for l in range(0, len(lignes))]): - lignes[i] = re.sub(r'^
*', r'', lignes[i]) - if all([lignes[l].endswith(('
', r'
')) for l in range(0, len(lignes))]): - lignes[i] = re.sub(r' *
$', r'', lignes[i]) - contenu = '\n'.join(lignes) - - # - Markdownisation des listes numérotées - ligne_liste = [ False ] * len(lignes) + # Markdownisation des listes numérotées for i in range(len(lignes)): - if re.match(r'(?:\d+[°\.\)-]|[\*-]) ', lignes[i]): - ligne_liste[i] = True lignes[i] = re.sub(r'^(\d+)([°\.\)-]) +', r'\1. ', lignes[i]) lignes[i] = re.sub(r'^([\*-]) +', r'- ', lignes[i]) contenu = '\n'.join(lignes) - # - Création d’alinea séparés, sauf pour les listes - contenu = lignes[0] - for i in range(1, len(lignes)): - if ligne_liste[i]: - contenu = contenu + '\n' + lignes[i] - else: - contenu = contenu + '\n\n' + lignes[i] - # Enregistrement f_markdown = open(chemin_markdown, 'w') f_markdown.write(contenu.encode('utf-8'))