Где я могу найти хороший синтаксический анализатор Разметки MediaWiki в PHP?

Я пришел к следующему решению без создания объекта временного списка, который должен работать с любым повторяемым объектом. Обратите внимание, что эта версия для Python 2.x:

def chunked(iterable, size):
    stop = []
    it = iter(iterable)
    def _next_chunk():
        try:
            for _ in xrange(size):
                yield next(it)
        except StopIteration:
            stop.append(True)
            return

    while not stop:
        yield _next_chunk()

for it in chunked(xrange(16), 4):
   print list(it)

Вывод:

[0, 1, 2, 3]
[4, 5, 6, 7]
[8, 9, 10, 11]
[12, 13, 14, 15] 
[]

Как вы можете видеть, что len (итеративный)% size == 0, тогда у нас есть дополнительный пустой объект итератор. Но я не думаю, что это большая проблема.

5
задан Aleph Dvorak 22 June 2009 в 19:33
поделиться

1 ответ

Это действительно невероятно сложный формат. разбирать. Вы можете попытаться отделить компонент парсера от медиа-вики (так как это тоже php), но это запутанный беспорядок. Я видел несколько частично автономных, которые выполняют почти разумную работу для очень ограниченного набора разметки.

Если вам случится реализовать один или провести рефакторинг текущей википедии, дайте мне знать, так как это может быть весьма полезно.

3
ответ дан 14 December 2019 в 01:14
поделиться
Другие вопросы по тегам:

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