| /* |
| * generated by Xtext |
| */ |
| package org.eclipse.vorto.fbeditor.formatting |
| |
| import javax.inject.Inject |
| import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter |
| import org.eclipse.xtext.formatting.impl.FormattingConfig |
| import org.eclipse.vorto.fbeditor.services.FunctionblockGrammarAccess |
| |
| |
| class FunctionblockFormatter extends AbstractDeclarativeFormatter { |
| |
| @Inject extension FunctionblockGrammarAccess f |
| |
| override protected void configureFormatting(FormattingConfig c) { |
| // formatting for Comments |
| c.setLinewrap(1, 1, 2).before(SL_COMMENTRule) |
| c.setLinewrap(1, 1, 2).before(ML_COMMENTRule) |
| c.setLinewrap(1, 1, 1).after(ML_COMMENTRule) |
| c.setAutoLinewrap(120) |
| |
| // Line wrap for all basic function block info, like displayname, description etc. |
| c.setLinewrap(1).after(f.functionBlockAccess.displaynameAssignment_1) |
| c.setLinewrap(1).after(f.functionBlockAccess.descriptionAssignment_2_1) |
| c.setLinewrap(1).after(f.functionBlockAccess.vendorAssignment_4) |
| c.setLinewrap(1).after(f.functionBlockAccess.categoryAssignment_6) |
| c.setLinewrap(2).after(f.functionBlockAccess.versionAssignment_8) |
| |
| //Line wrap for every property entries in all function block constructs like configuration, status etc. |
| c.setLinewrap(1).after(f.FBFeatureAccess.propertiesAssignment) |
| c.setLinewrap(1).before(f.findKeywords("mandatory").get(0)) |
| c.setLinewrap(1).before(f.findKeywords("optional").get(0)) |
| |
| // Line wrap and indentation between function block sub elements. |
| findKeywordPairs("{","}").forEach[ |
| c.setLinewrap(1).after(first) |
| c.setLinewrap(1).before(second) |
| c.setLinewrap(2).after(second) |
| c.setIndentationIncrement().after(first) |
| c.setIndentationDecrement().before(second) |
| ] |
| |
| //Formatting for operation paranthesis |
| findKeywordPairs("(",")").forEach[ |
| c.setNoSpace().before(first) |
| c.setNoSpace().after(first) |
| c.setNoSpace().before(second) |
| ] |
| |
| //Formatting for constraint block |
| findKeywordPairs("<",">").forEach[ |
| c.setSpace(" ").before(first) |
| c.setNoSpace().after(first) |
| c.setNoSpace().before(second) |
| ] |
| |
| //Line wrap for each operation. |
| c.setLinewrap(1).after(f.operationAccess.group) |
| |
| //Remove space between enum values. Make enum into separate line. |
| c.setNoSpace().before(f.enumAccess.commaKeyword_3_1_0) |
| c.setLinewrap(1).after(f.enumAccess.commaKeyword_3_1_0) |
| |
| //Remove extra spaces between constraint parameters. |
| c.setNoSpace().before(f.primitivePropertyAccess.commaKeyword_5_2_0) |
| c.setNoSpace().after(f.primitivePropertyAccess.commaKeyword_5_2_0) |
| |
| //Remove extra spaces between method parameters. |
| c.setNoSpace().before(f.operationAccess.commaKeyword_2_1_0) |
| c.setNoSpace().after(f.operationAccess.commaKeyword_2_1_0) |
| |
| |
| |
| |
| } |
| } |