Info: Wie bekomme ich eine Liste aller Artikel programmgesteuert?

306
wvxvw

Ich denke über eine verbesserte Indizierung von Infoseiten mit Sphinx nach. Dazu brauche ich jedoch eine Möglichkeit, alle Knoten programmgesteuert zu extrahieren (um dann den Inhalt jedes Knotens über xmlpipe in eine Datenbank einzufügen). Aber ich sehe keine Möglichkeit, dies programmgesteuert durchzuführen. Haben Sie Vorschläge, wie Sie dies tun können?

Dies ist mit "Emacs" gekennzeichnet, da Emacs als Info-Browser verwendet werden kann. Wenn das ursprüngliche Info-Programm eine solche Liste nicht erstellen kann, wäre die Verwendung von Emacs Lisp für diesen Zweck ebenfalls in Ordnung.


PS. Jemand mit mehr Wiederholungen. Bitte fügen Sie das "Info" -Tag hinzu. Es ist schwer genug, um es zu googeln, wie es ist.


Edit, ich glaube ich komme irgendwo hin:

info --subnodes -o ./info.txt 

Das ist fast das, was ich will, außer dass es zu viele Informationen gibt (nicht nur die Knotenliste, sondern auch eine Beschreibung und Dekoration).


OK, das Schreiben scheint einfacher zu sein als das Suchen. Nun, schließlich ist es das Ziel dieser gesamten Anstrengung, die Suche zu vereinfachen. Ich denke, es ist kein Schaden angerichtet! : D

(defun sphinx-info-nodes () (let ((tmp-file (make-temp-file "info"))) (shell-command (format "info --subnodes -o '%s'" tmp-file)) (with-temp-buffer (insert-file-contents tmp-file) (cl-loop while (re-search-forward "^\\*\\s-*\\([^:]+\\):" nil t) collect (match-string 1))))) 
0
Ich bin hier etwas verwirrt. Mit Infoseiten meinen Sie die GNU `Info'-Seiten mit Hilfe für Programme im Allgemeinen? Oder beziehen Sie sich auf die "man" -Seiten? Oder beziehen Sie sich auf Python-Dokumentationsseiten? jcoppens vor 8 Jahren 0
@jcoppens Info ist ein Programm, das Hilfeinhalte anzeigen kann. Die Dateien haben normalerweise ein spezielles Format, das meistens aus Text besteht, aber auch einige nicht druckbare Zeichen verwenden, um den Leser zu unterstützen. Diese Dateien werden normalerweise durch Bearbeiten von TexInfo-Dateien erstellt (einfacher Text mit etwas Markup). Man-Seiten dienen einem ähnlichen Zweck, haben jedoch ein anderes Format / verwenden einen anderen Leser. Hier eine formellere Einführung: http://www.gnu.org/software/texinfo/manual/info-stnd/info-stnd.html#Top wvxvw vor 8 Jahren 0
Ja, ich weiß, was Info- und Man-Dateien sind. Aber ich stelle regelmäßig Verwirrung (* nicht * meine) fest, wenn ich Artikel lese. Ich nehme an, Sie kennen die Seite über TkInfo? (http://math-www.uni-paderborn.de/~axel/tkinfo/) Es gibt viele nützliche "Leser" einschließlich "saminfo", die Informationen in eine Baumstruktur umwandeln. jcoppens vor 8 Jahren 1
@jcoppens Nö, ich wusste nichts von diesem hier und hatte keine Ahnung, dass es so viele davon gibt! Auf der zweiten Seite würde ich es jedoch vorziehen, dies mit den Programmen zu erreichen, von denen erwartet werden kann, dass sie auf einem typischen Linux-Desktop installiert werden (Emacs kann als eines angenommen werden, da dies in Emacs verwendet werden soll). wvxvw vor 8 Jahren 0
TkInfo - das auf Tk basiert, das Teil des Tcl / Tk-Pakets ist, basiert auf Unix / Linux. Bei fast jeder Linux-Distribution ist Tcl installiert, viele haben auch Tk. Sie können auch leicht die gewünschte Struktur erstellen, indem Sie jeden Knoten in `/ usr / share / Info 'besuchen. jcoppens vor 8 Jahren 0
@jcoppens `/ usr / share / Info` ist sicherlich nicht genug. Zum Beispiel gibt es auch die $ INFOPATH-Variable, aber es gibt auch eine Info-Verzeichnis-Liste in Emacs (für mich gibt es etwa zehn Verzeichnisse), und die meisten Infodateien passen nicht zu den One-to-Artikeln -ein, manchmal sind viele Artikel in der gleichen Datei. Aber es scheint, als wäre das Parsen der Ausgabe von "info - subnodes" trivial, also werde ich wahrscheinlich nur ein paar Regexx schreiben und damit fertig sein. wvxvw vor 8 Jahren 0
INFOPATH ist wahrscheinlich eine Umgebungsvariable, die Sie aus den Umgebungsvariablen extrahieren können (auf die in Python zugegriffen werden kann). Ich vermute, dass alle anderen Dateien automatisch durch die Installation einer neuen Info-Datei generiert werden, basierend auf den in der neu hinzugefügten Datei gelesenen Informationen. jcoppens vor 8 Jahren 0

0 Antworten auf die Frage