Встраивание кода Python как стиль препроцессора PHP - PullRequest
2 голосов
/ 02 марта 2010

Я возвращаюсь к старому проекту, в котором я добавил функциональность препроцессора к Essence ', и я понял, что мое предыдущее решение по написанию языка, специфичного для домена, и связанного с ним лексера / парсера было излишним.

Вместо этого мне просто нужно иметь возможность вставлять динамический код языка в файл, изолировать его во время выполнения, вычислять eval и вставлять результаты. Другими словами, очень похоже на PHP-модель вставки динамического кода в HTML. Я бы предпочел не использовать PHP, так как Python гораздо легче распространять как часть более крупного проекта (IronPython или Jython)

Итак, возникает вопрос, как лучше всего реализовать что-то вроде следующего:

<code>Python goes here</code>
Lots of essence <code>Python</code> prime code goes here

Я не хочу менять структуру файла Essence (если я удаляю все блоки кода, все оставшееся должно иметь синтаксическую корректность. Нужно уметь вставлять текст вместо кода блок как PHP.

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

Приветствия заранее

1 Ответ

6 голосов
/ 02 марта 2010

Лучше всего использовать один из уже созданных (и проверенных в бою) шаблонизаторов. Два больших, которые я использовал, это Мако и Гепард . Они позволяют встраивать код прямо в страницу и в основном используются как представление в архитектуре MVC.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...