如何在Acceleo中使用循环模板后删除额外的新行?

时间:2013-08-22 06:35:03

标签: eclipse-emf acceleo

这是一个简单的MOF模型到文本脚本:

[comment encoding = UTF-8 /]
[module test('http://www.eclipse.org/uml2/2.1.0/UML')/]

[template public test(element : Model)]
[comment @main /]
[file ('test.txt', false, 'UTF-8')]
start
  [loop(element)/]
  [loop(element)/]
end
[/file]
[/template]

[template public loop(element : Model)]
[for (var : Integer | Sequence{1..3})]
[var/]
[/for]
[/template]

它生成以下文本:

start
  1
  2
  3

  1
  2
  3

end

如何在3之后删除多余的新行?谢谢!

3 个答案:

答案 0 :(得分:2)

您可以在for:

中使用分隔符
[template public loop(element : Model)]
[for (var : Integer | Sequence{1..3}) separator('\n')]
[var/][/for]
[/template]

或者你可以修剪模板“loop”的结果:

[template public loop(element : Model) post(trim())]
[for (var : Integer | Sequence{1..3})]
[var/]
[/for]
[/template]

答案 1 :(得分:2)

post(trim())会帮助你吗?

我使用的一些例子:

[template public bodyOperation(g : Getter) ? post (trim())]

[template public typeKind(t : Type) post (replaceAll('\n', '').trim())]

答案 2 :(得分:0)

似乎我找到了一个黑客:

[template public loop(element : Model)]
[for (var : Integer | Sequence{1..3})]
[if i>1]

[/if][var/][/for]
[/template]

但它有点难看......