# Markdown et Python

2015-02-03

Suite des utilitaires utilisés pour générer ce site.

J’ai une arborescence de fichiers markdown que je transforme en fichiers `HTML`. Je commence donc par les récupérer :

    def each_markdown_from(source_dir, file_name='index.md'):
        """Walk across the `source_dir` and return the md file path."""
        for root, dirnames, filenames in os.walk(source_dir):
            for filename in fnmatch.filter(filenames, file_name):
                yield os.path.join(root, filename)

Ce petit utilitaire parcoure un dossier et retourne le chemin d’accès s’il contient `index.md`. J’ai une seconde fonction qui me permet de parser un fichier markdown et de compiler le contenu avec ses méta-données :

    def parse_markdown(file_path, extensions=None):
        """Parse an md file and returns its converted content and metadata."""
        if extensions is None:
            extensions = ['meta', 'codehilite']
        parser = markdown.Markdown(extensions=extensions)
        with codecs.open(file_path, 'r', 'utf-8') as source:
            content = parser.convert(source.read())
            return content, hasattr(parser, 'Meta') and parser.Meta or None

En combinant les deux, on obtient la boucle suivante :

    for file_path in each_markdown_from(POSTS_PATH):
        content, metadata = parse_markdown(file_path)

Dans un prochain épisode, on verra comment utiliser les `namedtuple`s à bon escient.

Articles choisis : Commodité et effondrement, Des données aux communs, Accompagner un enfant, Senior developer, L’illusion sociale, Instantané Scopyleft, Enseigner le Web, Simplicité par défaut, Minimalisme et esthétique, Travail en transition, La pairmutation du travail, Principes Web, Travail en transition, Un web omni-présent, Manifeste de développeur, Confort et convivialité, Testament numérique, et bien d’autres…