Используя модифицированный Nokogiri для анализа Wikitext? - PullRequest
1 голос
/ 02 февраля 2012

Извиняюсь за длину этого вопроса, это скорее "возможно ли это", чем "как мне это сделать".

Моя цель - удалить из разметки Википедии все, кроме простого текста - таблицы, шаблоны, форматирование. В разметке wikitext (например, ''bold text'') или HTML (<b>bold text</b>).

Текст из Википедии - это набор пользовательских тегов: шаблоны {{ ... }}, таблицы {| ... |}, ссылки [[ ... ]] и элементы HTML. Разбор это своего рода кошмар. Вы не можете использовать регулярные выражения, потому что теги могут быть вложенными, и они могут содержать HTML, так что почти все возможно. Часть текста в HTML, которую я хотел бы сохранить (вещи, выделенные жирным шрифтом), но другие элементы, такие как таблицы, должны быть полностью удалены.

Я думал о повторном назначении парсера XML, такого как Nokogiri, добавив {{ / }} в качестве альтернативы <x> / </x>.

Кто-нибудь, кто знает Nokogiri (или другой анализатор Ruby XML), знает, возможно ли это или даже хорошая идея?

Моя альтернатива - изменить существующий синтаксический анализатор, например WikiCloth , для разметки вики, а затем попытаться удалить любой оставшийся HTML-код другим методом.

1 Ответ

1 голос
/ 03 февраля 2012

Звучит как хорошая идея.Тем не менее, вы не сможете "исправить" Nokogiri, ", добавив {{/}} в качестве альтернативы <x>/</x>" .Это связано с тем, что основная часть работы, выполняемой Nokogiri - синтаксический анализ, XPath и генерация строкового представления DOM, - на самом деле выполняется libxml2 в серверной части.Вы должны будете пропатчить и перекомпилировать libxml2 (а затем пересобрать Nokogiri против вашей новой версии)… но в этот момент я понятия не имею, как Nokogiri будет вести себя.REXML , поскольку он написан на чистом Ruby.

...