2013-08-02 5 views
0

내 NVelocity 템플릿에 음수 리터럴을 설정하려고하는데 구문 분석하지 않습니다. 이 작품을 만드는 데 트릭이 있습니까?NVelocity에서 음수 리터럴 설정

긍정적 인 숫자 일 :
#set가 ($ 연령 = 27)

네거티브 번호가 작동하지 않습니다
#set가 ($ 연령 = -27)
#set가 ($ 나이 = 27 * -1)

어휘 오류 : NVelocity.Runtime.Parser.TokenMgrError : 라인 62 어휘 오류가 발생 칼럼 15 : "-"

Castle.NVelocity (dll-AssemblyVersion 1.1.1.0, FileVersion = 1.1.1.60)를 사용하고 있습니다. 이전 Apache 릴리즈가 아닙니다.

답변

0

부정 리터럴이 작동하기 때문에 실패한 단위 테스트를 제공 할 수 있습니까? 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(); 
    } 
}