Перевод викитекста (стиль викисловаря) в HTML на стороне клиента - PullRequest
0 голосов
/ 01 августа 2011

Я пытаюсь разобрать Викисловарь Викитекст на стороне клиента (с JavaScript).Я нашел Wiky.js , но у него есть проблемы с некоторыми разметками, такими как {{}}, + и т. Д. Знаете ли вы какую-либо библиотеку JavaScript, которая может помочь мне в этом?Я обнаружил, что MediaWiki API может переводить вики-текст в HTML.но я получаю данные из API, используя действие запроса , поэтому было бы глупо дважды запрашивать сервер.Может быть, есть какой-то способ получить HTML вместо Wikitext с помощью действия запроса?Я также нашел рендер действия , но он посылает мне всю страницу, а не только статью.

// edit

Вот часть примера Wikitext:

=====Translations===== {{trans-top|on fingers and toes}} * [[Afrikaans]]: [[nael]] * Albanian: [[thua]] {{f}} * Arabic: {{Arab|[[ظفر]]}} (ẓufr) * Armenian: {{t-|hy|եղունգ|tr=eġung}} *: Old Armenian: {{tø|xcl|եղունգն|tr=ełungn|sc=Armn|xs=Old Armenian}} * [[Azeri]]: {{t+|az|dırnaq|xs=Azeri}} * Bosnian: {{t-|bs|nokat|m}} * [[Breton]]: [[ivin]] {{m}}, ivinoù {{p}} * [[Campidanese Sardinian]]: [[unga]] {{f}} * [[Catalan]]: [[ungla]] {{f}} * Chinese: {{zh-zh-p|指甲|zhǐjia}} * Croatian: {{t+|hr|nokat|m|alt=nȍkat}} * Czech: {{t+|cs|nehet|m}} * Danish: {{t+|da|negl}} * Dutch: {{t+|nl|nagel|m}} * [[Erzya]]: [[кенже]] (kenzhe) * Esperanto: {{t-|eo|ungo|xs=Esperanto}} * Estonian: [[küüs]] * Finnish: {{t+|fi|kynsi}} * French: {{t+|fr|ongle|m}} * [[Galician]]: [[unlla]] {{f}}, [[uña]] {{f}} * Georgian: {{t-|ka|ფრჩხილი|tr=p'rč'xili|sc=Geor|xs=Georgian}} * German: {{t+|de|Nagel|m}} * Greek: *: Anciemt: {{tø|grc|ὄνυξ|m|tr=onyx|xs=Ancient Greek}} *: Modern: {{t+|el|νύχι|n|tr=nýchi}} * [[Gujarati]]: [[નખ]] (nakh) {{m}} * Hindi: {{t-|hi|नाख़ुन|m|tr=nāḵẖun|xs=Hindi}} 

и вывод Wiky.toHtml ():

<h4>Translations</h4>
<p u"="" style="{trans-top</p></td>?(c_u) <li class=">Arabic: {{t-</p>
</li>
arصرعm?(c_u)
<li class="u">Bengali;"&gt;}, {{t-bspadavica?(c_u) </li>
<li class="u">Chinese: *: Mandarin: {{t</li>
cmn癲癇sc=Hani}}, {{tcmn癫痫tr=diānxiánsc=Hani}}, {{tcmn癲癇癥sc=Hani}}, {{tcmn癫痫症tr=diānxiánzhèng?(c_u)
<li class="u">Croatian: {{t-</li>
hrepilepsijafalt=epilèpsija}}, {{t-hrpadavicaf?(c_u)
<li class="u">Czech: {{t-</li>
csepilepsie?(c_u)
<li class="u">Estonian: {{t+</li>
etepilepsia}}, {{t+et?(c_u)
<li class="u">Finnish: {{t+</li>
fi?(c_u)
<li class="u">French: {{t+</li>
frépilepsie?(c_u)
<li class="u">German: {{t+</li>
deEpilepsief}}, {{t-deFallsucht?(c_u)
<li class="u">Greek: {{t+</li>
elεπιληψία?(c_u)
<li class="u">Hindi: {{t-</li>
hiअपस्मारtr=apasmārxs=Hindi}}, {{thiमिर्गीtr=mirgī?(c_u) 

1 Ответ

2 голосов
/ 03 августа 2011

Wikitext имеет очень сложные крайние случаи, вы не можете ожидать, что библиотека javascript надежно его проанализирует (хотя должна быть возможность выполнять намного лучшую работу, чем вики). Лучше всего использовать action = render, а затем удалить соответствующую часть из ответа (я не уверен, что вы подразумеваете под целой страницей и статьей).

...