Otl : gestion des Outliners

Le package otl réunit un ensemble de classes pour manipuler des données d'outliners. Pour chaque outliner, il peut exister un Reader et/ou un Writer.

Outre les formats ci-dessous, il est possible qu'apparaissent des gestionnaires d'autres outliners : Notecase, KeepNote...

gjots : GjotsReader et GjotsWriter

La gestion de l'outliner Gjots est la plus complète (car la plus simple :-) : GjotsReader permet de transformer un fichier gjots en objet Node et GjotsWriter de transformer un objet Node en fichier gjots.

from pyrnb.otl.gjots.reader import GjotsReader
outline_node = GjotsReader.read("path/to/gjots/file")
Utilisation du Reader de fichier gjots.
from pyrnb.otl.gjots.writer import GjotsWriter
GjotsReader.write(outline_node, "path/to/gjots/file")
Utilisation du Writer de fichier gjots.

Keynote : KntReader

Keynote est un outliner que j'ai beaucoup utilisé lorsque j'étais sous Windows. KntReader, Reader permettant de transformer un fichier Keynote en objet Node, a été développé uniquement dans le but de récupérer les Mo de données stockées sous ce format. Il n'est pas prévu d'écrire un Writer.

from pyrnb.otl.knt.reader import KntReader
outline_node = KntReader.read("path/to/keynote/file")
Utilisation du Reader de fichier Keynote.

Deux remarques concernant ce Reader. D'abord sur la hiérarchie des données : Keynote permet de gérer plusieurs arbres hiérarchiques dans un même fichier alors que d'autres outliners (Gjots et Zim) n'en construisent qu'un seul. Pour harmoniser les comportements, les « notes » de Keynote sont donc fusionnées en une seule structure arborescente et constituent les nœuds racines.

Note A                  Note B
---------------------   ---------------------
Node A1                 Node B1
    Node A1.1               Node B1.1
Node A2                 Node B2
    Node A2.1
Exemple d'un fichier Keynote avec deux notes.
Note A
    Node A1
        Node A1.1
    Node B2
        Node B2.1
Note B
    Node B1
        Node B1.1
    Node B2
Traduction des deux notes Keynote dans une unique objet Node avec deux nœuds racines.

La seconde remarque concerne les nœuds au format RTF : le contenu récupéré n'est pas une simple chaîne de caractères mais un objet Node issue de leur lecture par le Reader de syntaxe RTF.

Wiki : WikiBookWriter et ZimWriter

WikiBookWriter et son dérivé ZimWriter sont des Writer un peu spéciaux dans le sens où ils ne génèrent pas un fichier d'oultine mais une structure hiérarchique de fichiers et de dossiers qui représentent l'outline, à la manière dont le logiciel Zim gère un bloc-notes. Dans un cas (WikiBookWriter), les fichiers seront formatés avec une syntaxe wiki par défaut ; dans l'autre, les fichiers sont formatés avec la syntaxe wiki de Zim.

Le développement d'un Reader est à l'étude, bien que le but premier de tous ces outils est d'arriver à une hiérarchie de fichiers créée par le WikiBookWriter.

from pyrnb.otl.wikibook.writer import WikiBookWriter
WikiBookWriter.write(outline_node, "path/to/wikibook/")
Exemple d'utilisation du Writer d'outliner wikibook.
from pyrnb.otl.zim.writer import ZimWriter
ZimWriter.write(outline_node, "path/to/notebook/")
Exemple d'utilisation du Writer d'outliner Zim.