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

Не могли бы вы предоставить неудачный модульный тест, потому что для меня работают негативные литералы. Я использовал HEAD нашего исходного хранилища NVelocity, однако я не знал о каких-либо изменениях в этой области, так как был выпущен 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(); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^