Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
В шаблонах MediaWiki очень похожий прием постоянно используется. Но там язык разметки чувствителен к переносам строки, так что если хочется разбить строку, надо прятать перенос строки в комментарии. Другого выхода нет.
Например, http://en.wikipedia.org/w/index.php?title=Template:Imbox&action=ed it&oldid=568631328
<!-- опущено мной -->
| notice = <!-- Do nothing, valid "type" -->
| #default = <div style="text-align: center;">This message box is using an invalid "type={{{type|}}}" parameter and needs fixing.</div>[[Category:Wikipedia message box parameter needs fixing|{{main other|Main:}}{{FULLPAGENAME}}]]<!-- Sort on namespace -->
}}<!--
--><includeonly>{{#ifeq:{{BASEPAGENAME}}|{{SUBPAGENAME}}|{{#ifeq:{{NAMESPACE}}|Template|[[Category:File message boxes]]}}}}
<!-- опущено мной -->
Впрочем, подобные стрёмные шаблоны начиная где-то с прошлого года активно заменяют на Lua-шаблоны.
Lua - это ж встраиваемый язык. Что скрипту передали, с тем он и работает. Всякие опасные модули библиотеки легко выпиливаются. PHP же для это не предназначен, его в песочницу не так просто загнать.
> Алсо, не выходит ли раком отсутствие стандартной библиотеки?
Отчасти - выходит. Но по сравнению с тем пиздецом, который приходилось писать на Wikitext - небо и земля.
> И почему нельзя было то же самое сделать на рнр?
1. Луа быстрее, в ней кэширование байткода by design и для неё есть JIT.
2. В Луа очень грамотная работа с окружениями и загрузкой модулей. Из луа можно сделать ровно то, что нужно программисту. Как выпилить из интерпретатора пхп встроенные функции, позволяющие доступ к файловой системе? с луа таких проблем изначально не существует.
3. Луа гораздо выразительней и проще.
> А с чем этот процесс коммуницирует?
Ничто не мешает написать сишный php-модуль, который будет поднимать интерпретатор lua и транслировать php-объекты в lua-объекты и выполнять код в изолированном окружении. На самом деле это довольно просто сделать.
Вот меня и интересует, к чему имеет доступ луа модуль, чтобы обеспечить и изоляцию, и работоспособность.
>Ничто не мешает написать сишный php-модуль, который будет поднимать интерпретатор lua и транслировать php-объекты в lua-объекты и выполнять код в изолированном окружении. На самом деле это довольно просто сделать.
Ага, то есть ручками урезаем права?
>Луа быстрее,
Как часто изменяются страницы?
>3. Луа гораздо выразительней и проще.
Почему педивикия тогда написана на рнр?
> к чему имеет доступ луа модуль
к чему откроешь, к тому и будет. Луа это голый интерпретатор + механизм загрузки модулей. Модули - хэштаблички с указателями на функции. Какие указатели положишь в хэш-таблички, такие функции у тебя и будут. Стандартные модули ничем от пользовательских не отличаются, их можно закрыть или открыть только нужные.
> Ага, то есть ручками урезаем права?
Что значит ручками? Да, если хочешь что-то закрыть, нужно немного поменять стандартную инициализацию интерпретатора (а именно опустить инициализацию некоторых стандартных модулей, изменить пути загрузки модулей). Исходники самой луа менять не нужно, как в случае пхп.
> Почему педивикия тогда написана на рнр?
Интересно, когда решение о выборе языка определялось исключительно его красотой и выразительностью? Очевидно, вебморду на пхп написать быстрее и проще, т.к. все функции для работы с вебом идут из коробки.
> И программиста на PHP найти проще.
По ссылкам выше приводят довод, что даже типичные игроки WoW без особых проблем осиливают lua и пилят на ней нетривиальные вещи.
>По ссылкам выше приводят довод, что даже типичные игроки WoW без особых проблем осиливают lua и пилят на ней нетривиальные вещи.
... с помощью регекспов и матери.
Ну, скажем так, почти без ущерба 😉
P.S. На самом деле, статический кусок js'а я бы упер куда-нибудь в отдельную js'ку. Зачем его генерить пыхом каждый раз?
Например, http://en.wikipedia.org/w/index.php?title=Template:Imbox&action=ed it&oldid=568631328
Впрочем, подобные стрёмные шаблоны начиная где-то с прошлого года активно заменяют на Lua-шаблоны.
Что это
http://en.wikipedia.org/wiki/Wikipedia:Lua
> Алсо, не выходит ли раком отсутствие стандартной библиотеки?
Отчасти - выходит. Но по сравнению с тем пиздецом, который приходилось писать на Wikitext - небо и земля.
http://www.mediawiki.org/wiki/Extension:Scribunto#LuaSandbox
1. Луа быстрее, в ней кэширование байткода by design и для неё есть JIT.
2. В Луа очень грамотная работа с окружениями и загрузкой модулей. Из луа можно сделать ровно то, что нужно программисту. Как выпилить из интерпретатора пхп встроенные функции, позволяющие доступ к файловой системе? с луа таких проблем изначально не существует.
3. Луа гораздо выразительней и проще.
> А с чем этот процесс коммуницирует?
Ничто не мешает написать сишный php-модуль, который будет поднимать интерпретатор lua и транслировать php-объекты в lua-объекты и выполнять код в изолированном окружении. На самом деле это довольно просто сделать.
>Ничто не мешает написать сишный php-модуль, который будет поднимать интерпретатор lua и транслировать php-объекты в lua-объекты и выполнять код в изолированном окружении. На самом деле это довольно просто сделать.
Ага, то есть ручками урезаем права?
>Луа быстрее,
Как часто изменяются страницы?
>3. Луа гораздо выразительней и проще.
Почему педивикия тогда написана на рнр?
к чему откроешь, к тому и будет. Луа это голый интерпретатор + механизм загрузки модулей. Модули - хэштаблички с указателями на функции. Какие указатели положишь в хэш-таблички, такие функции у тебя и будут. Стандартные модули ничем от пользовательских не отличаются, их можно закрыть или открыть только нужные.
> Ага, то есть ручками урезаем права?
Что значит ручками? Да, если хочешь что-то закрыть, нужно немного поменять стандартную инициализацию интерпретатора (а именно опустить инициализацию некоторых стандартных модулей, изменить пути загрузки модулей). Исходники самой луа менять не нужно, как в случае пхп.
> Почему педивикия тогда написана на рнр?
Интересно, когда решение о выборе языка определялось исключительно его красотой и выразительностью? Очевидно, вебморду на пхп написать быстрее и проще, т.к. все функции для работы с вебом идут из коробки.
И программиста на PHP найти проще.
По ссылкам выше приводят довод, что даже типичные игроки WoW без особых проблем осиливают lua и пилят на ней нетривиальные вещи.
... с помощью регекспов и матери.