Ich kann kein Emacs-Lisp schreiben, also habe ich nach einem Parser im Organisationsmodus mit Python gesucht und es ausprobiert. Versuchen Sie, die Beispiel-Organisationsdatei zu lesen und das Leseergebnis in Organisationstext umzuwandeln.
Klicken Sie hier für das offizielle Dokument. https://orgparse.readthedocs.io/en/latest/
Dieses Mal wird das folgende Beispiel verwendet.
$ cat sample.org
* Heading 1
:PROPERTIES:
:ID: 48c4a07e-95c1-41ff-a1f0-8e2f6ad88761
:END:
** TODO [#B] Heading 2
DEADLINE: <2020-05-09 Sat>
** DONE Heading 2
CLOSED: [2020-05-09 Sat 22:21]
*** Heading 3
SCHEDULED: <2020-05-09 Sat>
* Heading 1 :ARCHIVE:
Installieren Sie zunächst die erforderlichen Pakete. Es gibt separate Pakete zum Lesen und Schreiben.
$ pip install orgparse orger
Der Beispielcode zum Lesen und Schreiben ist unten.
$ cat org-parse.py
from orgparse import load
from orger import inorganic
root = load('sample.org')
print('--- for node in root[1:] ---')
#Ausführen in der Reihenfolge vom Knoten in der oberen Reihe
for node in root[1:]:
print(node.heading)
#Ausführen in der Reihenfolge vom Knoten in der oberen Hierarchie
print('--- for node in root.children ---')
# for node in root.children
for node in root.children:
print(node.heading)
#Zum Schreiben in das Paket kopieren
def get_node(node):
children = [get_node(child) for child in node.children]
scheduled = None if node.scheduled is None else node.scheduled.start
return inorganic.node(
heading=node.heading, #Titel lesen
todo=node.todo, # TODO,Lesen Sie FERTIG usw.
tags=node.tags, #Tag lesen
scheduled=scheduled, #geplantes Lesen,Es gibt auch eine Frist zum Lesen
properties=node.properties, #Individuelles Laden ist Knoten.get_property('ID')
body=node.body, #Inhalt lesen
children=children
)
print('--- write to org file ---')
for node in root.children:
node = get_node(node)
print(node.render())
Ausführungsergebnis
$ python3 org-parse.py
--- for node in root[1:] ---
Heading 1
Heading 2
Heading 2
Heading 3
Heading 1
--- for node in root.children ---
Heading 1
Heading 1
--- write to org file ---
* Heading 1
:PROPERTIES:
:ID: 48c4a07e-95c1-41ff-a1f0-8e2f6ad88761
:END:
** TODO Heading 2
** DONE Heading 2
*** Heading 3
SCHEDULED: <2020-05-09 Sat>
* Heading 1 :ARCHIVE:
Ich konnte leicht Organisationsdateien lesen und schreiben. Damit scheint es, dass ToDo-Aggregation usw. mit einem Python-Skript geschrieben werden kann. Ab dem 9. Mai 2020 scheint die anorganische Seite des Nur-Schreib-Pakets keine Schließung oder Frist zu unterstützen.
Das org write-Paket befindet sich noch in der vorläufigen Phase, und es scheint, dass die API in Betracht gezogen wird. Verwandte Themen: https://github.com/karlicoss/orgparse/issues/11
Übrigens sind die zugehörigen Repositorys diesmal wie folgt. Alle werden von derselben Person hergestellt.
Insbesondere das Paket namens orger orgs github, pdf, tiwtter usw. Es scheint, dass das Ziel darin besteht, alle Informationen in org zu verwalten. Es ist wie die emacs-org-Version von evernote. Ich möchte es eines Tages benutzen.
Recommended Posts