Advertisement
Guest User

Untitled

a guest
Jul 17th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.17 KB | None | 0 0
  1. /*
  2.  * generated by Xtext 2.9.1-SNAPSHOT
  3.  */
  4. package org.eclipse.xtext.example.homeautomation.formatting2
  5.  
  6. import org.eclipse.xtext.example.homeautomation.ruleEngine.Declaration
  7. import org.eclipse.xtext.example.homeautomation.ruleEngine.Device
  8. import org.eclipse.xtext.example.homeautomation.ruleEngine.Model
  9. import org.eclipse.xtext.example.homeautomation.ruleEngine.Rule
  10. import org.eclipse.xtext.example.homeautomation.ruleEngine.State
  11. import org.eclipse.xtext.formatting2.IFormattableDocument
  12. import org.eclipse.xtext.xbase.XBlockExpression
  13. import org.eclipse.xtext.xbase.XExpression
  14. import org.eclipse.xtext.xbase.XSwitchExpression
  15. import org.eclipse.xtext.xbase.formatting2.XbaseFormatter
  16.  
  17. import static org.eclipse.xtext.example.homeautomation.ruleEngine.RuleEnginePackage.Literals.*
  18. import static org.eclipse.xtext.xbase.XbasePackage.Literals.*
  19.  
  20. class RuleEngineFormatter extends XbaseFormatter {
  21.    
  22.         def dispatch void format(Model model, extension IFormattableDocument document) {
  23.         model.prepend[setNewLines(0, 0, 1); noSpace]
  24.         for (Declaration declaration : model.getDeclarations()) {
  25.             declaration.format.append[setNewLines(1, 1, 2)]
  26.         }
  27.     }
  28.  
  29.     def dispatch void format(Device device, extension IFormattableDocument document) {
  30.         device.regionFor.feature(DEVICE__NAME).surround[oneSpace]
  31.         device.regionFor.keyword("be").surround[oneSpace]
  32.         for (State state : device.getStates()) {
  33.             state.format.immediatelyPreceding.keyword(",").prepend[noSpace].append[oneSpace]
  34.         }
  35.     }
  36.  
  37.     def dispatch void format(Rule rule, extension IFormattableDocument document) {
  38.         rule.regionFor.feature(RULE__DESCRIPTION).surround[oneSpace]
  39.         rule.regionFor.feature(RULE__DEVICE_STATE).surround[oneSpace]
  40.         rule.thenPart.format.prepend[newLine]
  41.     }
  42.  
  43.     override dispatch void format(XBlockExpression expr, extension IFormattableDocument document) {
  44.         expr.surround[indent]
  45.         for (child : expr.expressions) {
  46.             val sem = child.immediatelyFollowing.keyword(";")
  47.             if (sem !== null) {
  48.                 sem.prepend[noSpace]
  49.                 if (child != expr.expressions.last)
  50.                     sem.append[newLine]
  51.             } else if (child != expr.expressions.last)
  52.                 child.append[newLine]
  53.             child.format
  54.         }
  55.     }
  56.  
  57.     override dispatch void format(XSwitchExpression expr, extension IFormattableDocument document) {
  58.         set(expr.^switch.previousHiddenRegion, expr.nextHiddenRegion)[indent]
  59.         expr.regionFor.keyword("switch").append[oneSpace]
  60.         expr.^switch.append[newLine].format
  61.         for (c : expr.cases) {
  62.             if (c.typeGuard !== null && c.^case !== null) {
  63.                 c.typeGuard.append[oneSpace]
  64.                 c.^case.append[noSpace]
  65.             } else if (c.typeGuard !== null) {
  66.                 c.typeGuard.append[noSpace]
  67.             } else if (c.^case !== null) {
  68.                 c.^case.prepend[oneSpace].append[noSpace]
  69.             }
  70.             c.regionFor.feature(XCASE_PART__FALL_THROUGH).prepend[noSpace].append[newLine]
  71.             c.^case.format
  72.             if (c == expr.cases.last && expr.^default === null)
  73.                 c.then.formatBody(true, document)
  74.             else
  75.                 c.then.formatBodyParagraph(document)
  76.         }
  77.         if (expr.^default !== null) {
  78.             expr.regionFor.keyword("default").append[noSpace]
  79.             expr.^default.formatBody(true, document)
  80.         }
  81.     }
  82.  
  83.     override protected void formatBody(XExpression expr, boolean forceMultiline, extension IFormattableDocument doc) {
  84.         if (expr === null)
  85.             return;
  86.         if (expr instanceof XBlockExpression) {
  87.             expr.prepend[newLine]
  88.         } else if (forceMultiline || expr.previousHiddenRegion.isMultiline) {
  89.             expr.prepend[newLine].surround[indent]
  90.         } else {
  91.             expr.prepend[oneSpace]
  92.         }
  93.         expr.format
  94.     }
  95.  
  96.     override protected void formatBodyInline(XExpression expr, boolean forceMultiline,
  97.         extension IFormattableDocument doc) {
  98.         if (expr === null)
  99.             return;
  100.         if (expr instanceof XBlockExpression) {
  101.             expr.surround[newLine]
  102.         } else if (forceMultiline || expr.previousHiddenRegion.isMultiline) {
  103.             expr.prepend[newLine].surround[indent].append[newLine]
  104.         } else {
  105.             expr.surround[oneSpace]
  106.         }
  107.         expr.format
  108.     }
  109.  
  110.     override protected void formatBodyParagraph(XExpression expr, extension IFormattableDocument doc) {
  111.         if (expr === null)
  112.             return;
  113.         if (expr instanceof XBlockExpression) {
  114.             expr.surround[newLine]
  115.         } else {
  116.             expr.surround[oneSpace]
  117.         }
  118.         expr.format
  119.     }
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement