Как удалить лишнюю новую строку после шаблона с циклом в 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? Спасибо!


person Denis    schedule 22.08.2013    source источник


Ответы (3)


Вы можете использовать разделитель в 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]
person Laurent    schedule 22.08.2013

post(trim()) вам помогает?

Некоторые примеры, которые я использую:

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

[template public typeKind(t : Type) post (replaceAll('\n', '').trim())]
person tomhelper    schedule 28.08.2013
comment
Просто trim() не помог, но replaceAll('\n', '').trim() у меня сработал. - person Qw4z1; 18.02.2015

Кажется, я нашел хак:

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

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

Но как-то некрасиво...

person Denis    schedule 22.08.2013