Информация: как программно получить список всех статей?

234
wvxvw

Я обдумываю улучшенную индексацию страниц Info с помощью Sphinx. Но для того, чтобы сделать это, мне нужен какой-то способ программного извлечения всех узлов (чтобы затем вставить содержимое каждого узла в базу данных через xmlpipe). Но я не вижу способа сделать это программно, есть ли у вас какие-либо предложения о том, как это сделать?

Это помечено как «Emacs», потому что Emacs можно использовать в качестве браузера Info, и если оригинальная программа Info не может создать такой список, то использование Emacs Lisp для этой цели также будет в порядке.


PS. Кто-то с большим количеством респ. Пожалуйста, добавьте тег "информация", это достаточно сложно, чтобы гуглить как есть.


Редактировать, я думаю, что я получаю где-то:

info --subnodes -o ./info.txt 

Это почти то, что я хочу, за исключением того, что оно дает слишком много информации (не только список узлов, но также некоторое описание и оформление).


Хорошо, написание этого кажется легче, чем поиск, ну, в конце концов, смысл всего этого усилия - сделать поиск проще, так что, я думаю, никакого вреда не будет! : 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
Я немного запутался здесь. Под информационными страницами вы имеете в виду GNU-страницы Info с помощью программ в целом? Или вы имеете в виду страницы man? Или вы имеете в виду страницы документации Python? jcoppens 8 лет назад 0
@jcoppens Info - это программа, которая может отображать содержание справки. Файлы, как правило, имеют специальный формат, который в основном является текстовым, но в нем также используются непечатаемые символы, чтобы помочь читателю. Эти файлы обычно создаются путем редактирования файлов TexInfo (простой текст с некоторой разметкой). Справочные страницы служат аналогичной цели, но имеют другой формат / используют другой читатель. Вот более формальное введение: http://www.gnu.org/software/texinfo/manual/info-stnd/info-stnd.html#Top wvxvw 8 лет назад 0
Да, я знаю, что такое Info-файлы и man-файлы. Но я регулярно замечаю замешательство (* не * мое), когда читаю статьи. Я полагаю, вы знаете страницу о TkInfo? (http://math-www.uni-paderborn.de/~axel/tkinfo/) Есть много полезных «читателей», включая «saminfo», который преобразует информацию в древовидную структуру. jcoppens 8 лет назад 1
@jcoppens Нет, я не знал об этом, и понятия не имел, что их так много! Хотя, во-вторых, я бы предпочел, чтобы это выполнялось с помощью программ, которые, как я ожидаю, будут установлены на типичном рабочем столе Linux (можно предположить, что Emacs будет одним из них, поскольку предполагается, что он будет использоваться в Emacs). wvxvw 8 лет назад 0
TkInfo - который основан на Tk, который является частью пакета Tcl / Tk, основан на Unix / Linux. Почти каждый дистрибутив Linux поставляется с установленным Tcl, у многих также есть Tk. Также вы можете легко создать необходимую структуру, посетив каждый узел в `/ usr / share / Info`. jcoppens 8 лет назад 0
@jcoppens `/ usr / share / Info`, конечно, недостаточно. Например, есть переменная `$ INFOPATH`, но в Emacs также есть` Info-directory-list` (всего для меня около десяти каталогов), плюс большинство информационных файлов не отображаются в статьи один-в-один. -не один, иногда есть много статей в одном файле. Но кажется, что анализ выходных данных `info --subnodes` тривиален, поэтому я, вероятно, просто напишу несколько регулярных выражений и покончим с этим. wvxvw 8 лет назад 0
INFOPATH, вероятно, является переменной окружения, которую вы можете извлечь из переменных среды (доступно в Python). Я подозреваю, что все остальные файлы создаются автоматически при установке нового файла Info на основе информации, прочитанной во вновь добавленном файле. jcoppens 8 лет назад 0

0 ответов на вопрос

Похожие вопросы