2010-03-02 30 views
2

我重新回到了一箇舊項目中,我在Essence'中添加了預處理器功能,並且我意識到我以前編寫領域特定語言和關聯的詞法分析器/解析器的解決方案過度。將Python代碼作爲預處理器PHP風格嵌入

相反,我只需要能夠將動態語言代碼嵌入到文件中,在運行時將其隔離,然後插入結果。換句話說,非常類似於將動態代碼插入到HTML中的PHP模型。我寧可不使用PHP作爲Python是更容易分配爲(IronPython的或Jython的)更大的項目的一部分

所以問題那張,如何最好地實施類似以下內容:

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

我不想改變Essence文件的結構(如果我刪除了所有的代碼塊,所有的代碼塊都應該能夠在語法上正確,它需要能夠插入文本來代替PHP之類的代碼塊

終於安全明智我不會爲代碼注入困擾,因爲它會是用戶自己選擇要執行的文件儘管如果一個模型對另一個模型具有安全優勢而沒有額外的成本顯然是好的。

乾杯提前

回答

6

最好的辦法是使用的已經取得(與戰鬥測試)的模板引擎之一。我用過的兩個大牌是MakoCheetah。它們允許您將代碼嵌入到頁面中,並且主要用作MVC體系結構中的視圖。

如果您覺得使用這些引擎中的一種對您的項目來說太過分了,here是一本關於如何自己實現基本模板的小教程。請記住,該示例需要進行修改以適應您的特定項目/需求。