簡體   English   中英

在NVelocity中設置否定文字

[英]setting negative literals in NVelocity

我正在嘗試在我的NVelocity模板中設置否定文字,並且它不會解析。 進行這項工作有技巧嗎?

數起作用:
#set($ age = 27)

負數不起作用:
#set($ age = -27)
#set($ age = 27 * -1)

詞匯錯誤:NVelocity.Runtime.Parser.TokenMgrError:第62行第15列的詞匯錯誤。遇到:“-”

我正在使用Castle.NVelocity(dll-AssemblyVersion 1.1.1.0,FileVersion = 1.1.1.60),而不是較舊的Apache版本

您能否提供一個失敗的單元測試,因為否定的文字對我有用。 我使用了NVelocity源存儲庫的HEAD ,但是自1.1.1發布以來,我不知道該區域的任何更改。 如果我的單元測試因該構建而失敗,那么我可以根據需要調查修復該問題的時間。

[Test]
public void NegativeLiterals()
{
    Assert.AreEqual("-27", Eval("#set($result = -27)\r\n$result"));
    Assert.AreEqual("-27", Eval("#set($result = 27 * -1)\r\n$result"));
    Assert.AreEqual("-27", Eval("#set($result = 27*-1)\r\n$result"));
    Assert.AreEqual("27", Eval("#set($result = -27*-1)\r\n$result"));
}

private string Eval(string template)
{
    VelocityEngine velocityEngine = new VelocityEngine();
    velocityEngine.Init();

    using (StringWriter sw = new StringWriter())
    {
        bool ok = velocityEngine.Evaluate(new VelocityContext(), sw, "", template);
        Assert.IsTrue(ok, "Evaluation returned failure");
        return sw.ToString();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM