| /******************************************************************************* |
| * 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(); |
| } |
| } |