blob: 8ef7ba30b7581ae7d3e594850db01bdbb335f684 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2020 Willink Transformations and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* E.D.Willink - initial API and implementation
*******************************************************************************/
package org.eclipse.qvtd.xtext.qvtimperative.formatting;
import org.eclipse.qvtd.xtext.qvtbase.formatting.QVTbaseFormatter;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess.AddStatementCSElements;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess.AppendParameterBindingCSElements;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess.AppendParameterCSElements;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess.BufferStatementCSElements;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess.CheckStatementCSElements;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess.DeclareStatementCSElements;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess.DirectionCSElements;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess.EntryPointCSElements;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess.GuardParameterBindingCSElements;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess.GuardParameterCSElements;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess.ImportCSElements;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess.LoopParameterBindingCSElements;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess.MappingCSElements;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess.MappingCallCSElements;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess.MappingLoopCSElements;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess.NewStatementCSElements;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess.QualifiedPackageCSElements;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess.QueryCSElements;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess.ScopeNameCSElements;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess.SetStatementCSElements;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess.SimpleParameterBindingCSElements;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess.SimpleParameterCSElements;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess.SpeculateStatementCSElements;
import org.eclipse.qvtd.xtext.qvtimperative.services.QVTimperativeGrammarAccess.TransformationCSElements;
import org.eclipse.xtext.formatting.impl.FormattingConfig;
/**
* 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 QVTimperativeFormatter extends QVTbaseFormatter
{
@Override
protected void configureFormatting(FormattingConfig c) {
c.setAutoLinewrap(120);
QVTimperativeGrammarAccess f = getGrammarAccess();
configureAttributeCS(c, f.getAttributeCSAccess());
configureCollectionLiteralExpCS(c, f.getCollectionLiteralExpCSAccess());
configureCollectionTypeCS(c, f.getCollectionTypeCSAccess());
configureCurlyBracketedClauseCS(c, f.getCurlyBracketedClauseCSAccess());
configureDataTypeCS(c, f.getDataTypeCSAccess());
configureEnumerationCS(c, f.getEnumerationCSAccess());
configureEnumerationLiteralCS(c, f.getEnumerationLiteralCSAccess());
configureEssentialOCLNavigationOperatorCS(c, f.getEssentialOCLNavigationOperatorNameAccess());
configureExpCS(c, f.getExpCSAccess());
configureIfExpCS(c, f.getIfExpCSAccess());
configureLetExpCS(c, f.getLetExpCSAccess());
configureMapLiteralExpCS(c, f.getMapLiteralExpCSAccess());
configureMapTypeCS(c, f.getMapTypeCSAccess());
configureMultiplicityBoundsCS(c, f.getMultiplicityBoundsCSAccess());
configureMultiplicityCS(c, f.getMultiplicityCSAccess());
configureMultiplicityStringCS(c, f.getMultiplicityStringCSAccess());
configureNavigatingCommaArgCS(c, f.getNavigatingCommaArgCSAccess());
configureNavigatingSemiArgCS(c, f.getNavigatingSemiArgCSAccess());
configureNestedExpCS(c, f.getNestedExpCSAccess());
configureOperationCS(c, f.getOperationCSAccess());
configureParameterCS(c, f.getParameterCSAccess());
configurePathNameCS(c, f.getPathNameCSAccess());
configurePrimaryExpCS(c, f.getPrimaryExpCSAccess());
configureReferenceCS(c, f.getReferenceCSAccess());
configureRoundBracketedClauseCS(c, f.getRoundBracketedClauseCSAccess());
configureSquareBracketedClauseCS(c, f.getSquareBracketedClauseCSAccess());
configureStructuredClassCS(c, f.getStructuredClassCSAccess());
configureTupleLiteralExpCS(c, f.getTupleLiteralExpCSAccess());
configureTupleTypeCS(c, f.getTupleTypeCSAccess());
configureTypedTypeRefCS(c, f.getTypedTypeRefCSAccess());
configureURIPathNameCS(c, f.getURIPathNameCSAccess());
c.setLinewrap(0, 1, 2).before(f.getSL_COMMENTRule());
c.setLinewrap(0, 1, 1).after(f.getSL_COMMENTRule());
c.setLinewrap(0, 1, 2).before(f.getML_COMMENTRule());
c.setLinewrap(0, 1, 1).after(f.getML_COMMENTRule());
{
AddStatementCSElements a = f.getAddStatementCSAccess();
c.setLinewrap(1).before(a.getGroup());
c.setNoSpace().before(a.getCommaKeyword_0_2_0());
c.setLinewrap(1).before(a.getAddKeyword_1());
c.setNoSpace().before(a.getSemicolonKeyword_5());
}
{
AppendParameterBindingCSElements a = f.getAppendParameterBindingCSAccess();
c.setLinewrap(1).before(a.getGroup());
setNoSpaceLineWrap(c, a.getSemicolonKeyword_3());
}
{
AppendParameterCSElements a = f.getAppendParameterCSAccess();
c.setLinewrap(1).before(a.getGroup());
c.setNoSpace().before(a.getSemicolonKeyword_4());
}
{
BufferStatementCSElements a = f.getBufferStatementCSAccess();
c.setLinewrap(1).before(a.getGroup());
c.setNoSpace().around(a.getColonKeyword_2_0());
c.setNoSpace().around(a.getFullStopFullStopKeyword_2_2_0());
c.setNoSpace().before(a.getSemicolonKeyword_6());
}
{
CheckStatementCSElements a = f.getCheckStatementCSAccess();
c.setLinewrap(1).before(a.getGroup());
c.setNoSpace().before(a.getSemicolonKeyword_3());
setNoSpaceLineWrap(c, a.getSemicolonKeyword_3());
}
{
DeclareStatementCSElements a = f.getDeclareStatementCSAccess();
c.setLinewrap(1).before(a.getGroup());
c.setNoSpace().before(a.getCommaKeyword_0_2_0());
c.setLinewrap(1).before(a.getIsCheckAssignment_1());
setNoSpaceLineWrap(c, a.getSemicolonKeyword_7());
}
{
DirectionCSElements a = f.getDirectionCSAccess();
c.setLinewrap(1).before(a.getGroup());
c.setNoSpace().before(a.getCommaKeyword_2_2_0());
}
{
EntryPointCSElements a = f.getEntryPointCSAccess();
c.setLinewrap(2).before(a.getGroup());
c.setNoSpace().around(a.getColonKeyword_3_0());
c.setNoSpace().before(a.getCommaKeyword_5_2_0());
c.setNoSpace().before(a.getCommaKeyword_6_2_0());
c.setNoSpace().between(a.getLeftCurlyBracketKeyword_7(), a.getRightCurlyBracketKeyword_12());
setBraces(c, a.getLeftCurlyBracketKeyword_7(), a.getRightCurlyBracketKeyword_12());
// c.setLinewrap(2).between(a.getDomainsAssignment_5(), a.getDomainsAssignment_5());
// c.setLinewrap(1).before(a.getOwnedDomainsAssignment_5());
}
{
GuardParameterBindingCSElements a = f.getGuardParameterBindingCSAccess();
setNoSpaceLineWrap(c, a.getSemicolonKeyword_4());
}
{
GuardParameterCSElements a = f.getGuardParameterCSAccess();
c.setLinewrap(1).before(a.getGroup());
c.setNoSpace().around(a.getColonKeyword_1());
c.setNoSpace().before(a.getSemicolonKeyword_7());
}
{
ImportCSElements a = f.getImportCSAccess();
setNoSpaceLineWrap(c, a.getSemicolonKeyword_4());
}
{
LoopParameterBindingCSElements a = f.getLoopParameterBindingCSAccess();
c.setLinewrap(1).before(a.getGroup());
c.setNoSpace().before(a.getSemicolonKeyword_4());
}
{
MappingCSElements a = f.getMappingCSAccess();
c.setLinewrap(2).before(a.getGroup());
c.setNoSpace().around(a.getColonKeyword_3_0());
c.setNoSpace().around(a.getFullStopFullStopKeyword_3_2_0());
c.setNoSpace().between(a.getLeftCurlyBracketKeyword_5(), a.getRightCurlyBracketKeyword_10());
setBraces(c, a.getLeftCurlyBracketKeyword_5(), a.getRightCurlyBracketKeyword_10());
// c.setLinewrap(2).between(a.getDomainsAssignment_5(), a.getDomainsAssignment_5());
// c.setLinewrap(1).before(a.getOwnedDomainsAssignment_5());
}
{
MappingCallCSElements a = f.getMappingCallCSAccess();
c.setLinewrap(1).before(a.getGroup());
setAppendedBraces(c, a.getLeftCurlyBracketKeyword_3(), a.getRightCurlyBracketKeyword_5());
// c.setIndentation(a.getLeftCurlyBracketKeyword_3(), a.getRightCurlyBracketKeyword_5());
}
{
MappingLoopCSElements a = f.getMappingLoopCSAccess();
c.setLinewrap(1).before(a.getGroup());
c.setNoSpace().before(a.getCommaKeyword_0_2_0());
setAppendedBraces(c, a.getLeftCurlyBracketKeyword_5(), a.getRightCurlyBracketKeyword_7());
}
{
NewStatementCSElements a = f.getNewStatementCSAccess();
c.setLinewrap(1).before(a.getGroup());
c.setNoSpace().before(a.getCommaKeyword_0_2_0());
c.setLinewrap(1).before(a.getIsContainedAssignment_1());
c.setNoSpace().around(a.getColonKeyword_3());
c.setNoSpace().before(a.getSemicolonKeyword_9());
}
{
QualifiedPackageCSElements a = f.getQualifiedPackageCSAccess();
c.setLinewrap(2).before(a.getGroup());
c.setNoSpace().between(a.getLeftCurlyBracketKeyword_5_0_0(), a.getRightCurlyBracketKeyword_5_0_2());
setBraces(c, a.getLeftCurlyBracketKeyword_5_0_0(), a.getRightCurlyBracketKeyword_5_0_2());
setNoSpaceLineWrap(c, a.getSemicolonKeyword_5_1());
}
{
QueryCSElements a = f.getQueryCSAccess();
c.setLinewrap(2).before(a.getGroup());
c.setNoSpace().around(a.getLeftParenthesisKeyword_3());
c.setNoSpace().around(a.getLeftParenthesisKeyword_3());
c.setNoSpace().before(a.getCommaKeyword_4_1_0());
c.setNoSpace().before(a.getRightParenthesisKeyword_5());
setNoSpaceLineWrap(c, a.getSemicolonKeyword_8_0());
c.setNoSpace().between(a.getLeftCurlyBracketKeyword_8_1_0(), a.getRightCurlyBracketKeyword_8_1_2());
setBraces(c, a.getLeftCurlyBracketKeyword_8_1_0(), a.getRightCurlyBracketKeyword_8_1_2());
c.setIndentation(a.getLeftParenthesisKeyword_3(), a.getRightParenthesisKeyword_5());
}
{
ScopeNameCSElements a = f.getScopeNameCSAccess();
c.setNoSpace().around(a.getColonColonKeyword_1());
c.setNoSpace().around(a.getColonColonKeyword_2_1());
}
{
SetStatementCSElements a = f.getSetStatementCSAccess();
c.setLinewrap(1).before(a.getGroup());
c.setNoSpace().before(a.getCommaKeyword_0_2_0());
c.setLinewrap(1).before(a.getIsNotifyAssignment_1());
c.setNoSpace().around(a.getFullStopKeyword_4());
c.setNoSpace().before(a.getSemicolonKeyword_8());
}
{
SimpleParameterBindingCSElements a = f.getSimpleParameterBindingCSAccess();
setNoSpaceLineWrap(c, a.getSemicolonKeyword_4());
}
{
SimpleParameterCSElements a = f.getSimpleParameterCSAccess();
c.setLinewrap(1).before(a.getGroup());
c.setNoSpace().around(a.getColonKeyword_1());
c.setNoSpace().before(a.getSemicolonKeyword_6());
}
{
SpeculateStatementCSElements a = f.getSpeculateStatementCSAccess();
c.setLinewrap(1).before(a.getGroup());
c.setNoSpace().before(a.getCommaKeyword_2_0());
c.setNoSpace().before(a.getSemicolonKeyword_3());
setNoSpaceLineWrap(c, a.getSemicolonKeyword_3());
}
// {
// TopLevelCSElements a = f.getTopLevelCSAccess();
// c.setLinewrap(2).between(a.getOwnedMappingsMappingCSParserRuleCall_1_1_0(), a.getOwnedMappingsMappingCSParserRuleCall_1_1_0());
// c.setLinewrap(2).before(a.getOwnedQueriesAssignment_1_2());
// c.setLinewrap(2).before(a.getOwnedTransformationsAssignment_1_0());
// }
{
TransformationCSElements a = f.getTransformationCSAccess();
c.setLinewrap(2).before(a.getGroup());
c.setNoSpace().between(a.getLeftCurlyBracketKeyword_4(), a.getRightCurlyBracketKeyword_7());
setBraces(c, a.getLeftCurlyBracketKeyword_4(), a.getRightCurlyBracketKeyword_7());
setNoSpaceLineWrap(c, a.getSemicolonKeyword_5_1());
}
}
@Override
public QVTimperativeGrammarAccess getGrammarAccess() {
return (QVTimperativeGrammarAccess) super.getGrammarAccess();
}
}