Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Possible fix of #2 #18

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 7 additions & 4 deletions archeo-lex
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ from marcheolex.utilitaires import nop
from marcheolex.utilitaires import obtenir_tous_textes

# Manuel d’aide
aide = ('''Usage: archeo-lex [--aide] [--debug] [--help] [--version] [--textes=<TEXTES>] [--base=<BASE>] [--livraison=<DATE>] [--initialisation] [--rechercher-xml] [--telecharger] [--ranger] [--lier] [--exporter] [--mise-a-jour | --nouveau] [--dialecte=<DIALECTE>] [--historique=<HISTORIQUE>] [--métadonnées] [--organisation=<TYPE>] [--bdd=<fichier>] [--cache=<dossier>] [--dossier=<dossier>]
aide = ('''Usage: archeo-lex [--aide] [--debug] [--help] [--version] [--textes=<TEXTES>] [--base=<BASE>] [--livraison=<DATE>] [--initialisation] [--rechercher-xml] [--telecharger] [--ranger] [--lier] [--exporter] [--mise-a-jour | --nouveau] [--dialecte=<DIALECTE>] [--historique=<HISTORIQUE>] [--metadonnees=<METAS>] [--organisation=<TYPE>] [--bdd=<fichier>] [--cache=<dossier>] [--dossier=<dossier>]

-t --textes=<TEXTES> Types de textes à télécharger :
- "constitution-de-1958",
Expand Down Expand Up @@ -62,7 +62,10 @@ aide = ('''Usage: archeo-lex [--aide] [--debug] [--help] [--version] [--textes=<
--historique=<HIST> Fabrique l’historique avec le système :
- "git" (défaut)
- "fichiers" : plusieurs fichiers avec les dates [inactif]
--métadonnées Afficher les métadonnées dans le texte
--metadonnees=<METAS> Afficher les métadonnées dans le texte
Les options META suivantes sont cumulables : "META1 META2 ..."
- "lien" : liens internes des articles
- "tdm" : table des matières [inactif]
--organisation=<TYPE> Organisation de l’arborescence des fichiers :
- "fichier-unique" (défaut) : unique fichier
- "repertoires-simple" : un répertoire par article, sans hiérarchie
Expand Down Expand Up @@ -115,9 +118,9 @@ def principal(arguments):
data['base'] = arguments.get('--base') or 'LEGI'
data['livraison'] = arguments.get('--livraison') or 'tout'
data['format'] = {}
data['format']['dialecte'] = arguments.get('--format') or 'markdown'
data['format']['dialecte'] = arguments.get('--dialecte') or 'markdown'
data['format']['historique'] = arguments.get('--historique') or 'git'
data['format']['metadonnees'] = arguments.get('--metadonnees') or False
data['format']['metadonnees'] = arguments.get('--metadonnees') or ''
data['format']['organisation'] = arguments.get('--organisation') or 'fichier-unique'

# Lecture des autres paramètres
Expand Down
35 changes: 34 additions & 1 deletion marcheolex/exporter.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import os
import subprocess
import datetime
import re
from path import path
from bs4 import BeautifulSoup
from marcheolex import logger
Expand Down Expand Up @@ -142,6 +143,10 @@ def creer_historique_texte(texte, format, dossier, cache):
# Créer les sections (donc tout le texte)
contenu = creer_sections(contenu, 1, None, versions_sections, articles, version_texte, cid, format, [], dossier, cache)

# Ajouter des liens internes vers articles
if 'lien' in format['metadonnees']:
contenu = ajouter_liens_internes(contenu)

# Enregistrement du fichier
if format['organisation'] == 'fichier-unique':
f_texte = open(fichier, 'w')
Expand Down Expand Up @@ -233,4 +238,32 @@ def creer_articles_section(texte, niveau, version_section_parente, articles, ver

return texte

# vim: set ts=4 sw=4 sts=4 et:

def ajouter_liens_internes(contenu):

# Corrections mineures pour les décrets *
# TODO afficher un message d'avertissement
for l in ['R', 'D']:
contenu = contenu.replace(l + '* ', l + '*') # suppr. un espace en + dans l'art.
contenu = contenu.replace(l + '. * ', l + '*. ') # corrig. mauvais formattages
contenu = contenu.replace(l + '. *', l + '*. ')
contenu = contenu.replace(l + '.* ', l + '*. ')
contenu = contenu.replace(l + '.*', l + '*. ')
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je suis pas trop fan de modifier le texte, même s’il a des coquilles comme ça, mais je comprend que ça soit plus facile à manipuler pour rajouter les liens. J’hésite entre deux propositions :

  • conserver cette implémentation et avertir que le texte est légèrement modifié [enfin, je pense que je devrais mettre l’avertissement de toutes façon]
  • ajouter une option de format “conservatif ou non”, et dans ce cas j’utiliserai cette option également dans markdown.py car il y a quelques modifs aussi


# Ajouter un lien interne vers l'article en question
lignes = [l.strip() for l in contenu.split('\n')]
for ligne in lignes:
info = ligne.partition('# Article ')[2]
num = re.search('\d', info)
if num:
ind = num.start()
type_article = info[:ind]
num_article = info[ind:]
article = type_article + '. ' + num_article
contenu = contenu.replace(type_article + '.' + num_article, article) # ajouter un espace
type_article_lien = type_article.lower().replace('*', '')
article_avec_lien = '[' + article.replace('*', r'\*') + ']' + \
'(#article-' + type_article_lien + num_article + ')'
for symbole in [' ', ',', '.']: # rechercher des mots exacts
contenu = contenu.replace(article + symbole, article_avec_lien + symbole)
return contenu