/*
 * generated by Xtext
 */
package edu.kit.iti.formal.pse.worthwhile.formatting;

import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter;
import edu.kit.iti.formal.pse.worthwhile.services.WorthwhileGrammarAccess;
import org.eclipse.xtext.formatting.impl.FormattingConfig;
import org.eclipse.xtext.Keyword;
import org.eclipse.xtext.util.Pair;

/**
 * This class contains custom formatting description.
 * 
 * see : http://www.eclipse.org/Xtext/documentation/latest/xtext.html#formatting on how and when to use it
 * 
 * Also see {@link org.eclipse.xtext.xtext.XtextFormattingTokenSerializer} as an example
 */
public class WorthwhileFormatter extends AbstractDeclarativeFormatter {

	@Override
	protected final void configureFormatting(final FormattingConfig c) {
		WorthwhileGrammarAccess f = (WorthwhileGrammarAccess) getGrammarAccess();
		for (Pair<Keyword, Keyword> pair : f.findKeywordPairs("{", "}")) {

			c.setIndentation(pair.getFirst(), pair.getSecond());
			c.setLinewrap(1).after(pair.getFirst());
			c.setLinewrap(1).before(pair.getSecond());
			c.setLinewrap(1).after(pair.getSecond());
		}
		for (Keyword comma : f.findKeywords(",")) {
			c.setNoLinewrap().before(comma);
			c.setNoSpace().before(comma);
			c.setLinewrap().after(comma);
		}
		c.setLinewrap(0, 1, 2).before(f.getSL_COMMENTRule());
		c.setLinewrap(0, 1, 2).before(f.getML_COMMENTRule());
		c.setLinewrap(0, 1, 1).after(f.getML_COMMENTRule());
	}
}

@@ -1,33 +1,4 @@
-/*%0A * generated by Xtext%0A */%0A
 pack
@@ -48,16 +48,50 @@
 tting;%0A%0A
+import org.eclipse.xtext.Keyword;%0A
 import o
@@ -157,83 +157,8 @@
 er;%0A
-import edu.kit.iti.formal.pse.worthwhile.services.WorthwhileGrammarAccess;%0A
 impo
@@ -216,42 +216,8 @@
 ig;%0A
-import org.eclipse.xtext.Keyword;%0A
 impo
@@ -249,16 +249,157 @@
 .Pair;%0A%0A
+import edu.kit.iti.formal.pse.worthwhile.model.ast.ArrayLiteral;%0Aimport edu.kit.iti.formal.pse.worthwhile.services.WorthwhileGrammarAccess;%0A%0A
 /**%0A * T
@@ -955,17 +955,16 @@
 %22%7D%22)) %7B%0A
-%0A
 %09%09%09c.set
@@ -1146,16 +1146,299 @@
 ond());%0A
+%09%09%09c.setNoSpace().before(pair.getFirst());%0A%09%09%09c.setNoSpace().between(pair.getFirst(), pair.getSecond());%0A%09%09%7D%0A%09%09for (Pair%3CKeyword, Keyword%3E pair : f.findKeywordPairs(%22(%22, %22)%22)) %7B%0A%09%09%09c.setNoSpace().before(pair.getFirst());%0A%09%09%09c.setNoSpace().between(pair.getFirst(), pair.getSecond());%0A
 %09%09%7D%0A%09%09fo
@@ -1751,14 +1751,395 @@
 Rule());
+%0A%0A%09%09// Forbid line wrap and space in array literals%0A%09%09c.setNoLinewrap().between(f.getArrayLiteralAccess().getLeftCurlyBracketKeyword_1(),%0A%09%09                f.getArrayLiteralAccess().getRightCurlyBracketKeyword_3());%0A%09%09c.setNoSpace().after(f.getArrayLiteralAccess().getLeftCurlyBracketKeyword_1());%0A%09%09c.setNoSpace().before(f.getArrayLiteralAccess().getRightCurlyBracketKeyword_3());
 %0A%09%7D%0A%7D%0A

Implement resonably sane formatting rules