private void appendRuleElement()

in ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/formatter/RutaFormattedPrinter.java [618:719]


  private void appendRuleElement(RutaRuleElement ruleEl) throws Exception {
    // if (ruleEl instanceof ComposedRuleElement) {
    // ComposedRuleElement cre = (ComposedRuleElement) ruleEl;
    // List<Expression> elements = cre.getElements();
    // append(PAR_OPEN);
    // for (Expression expression : elements) {
    //
    // if (expression instanceof RutaRuleElement) {
    // RutaRuleElement re = (RutaRuleElement) expression;
    // appendRuleElement(re);
    // }
    // if (elements.indexOf(expression) < elements.size() - 1) {
    // append(" ");
    // }
    //
    // }
    // append(PAR_CLOSE);
    // } else
    if (ruleEl.getHead() != null) {
      append(ruleEl.getHead());
    }
    if (ruleEl.isWildcard()) {
      append("#");
    }
    List<RutaCondition> conditions = ruleEl.getConditions();
    List<RutaAction> actions = ruleEl.getActions();
    // don't print {->} for empty rule elements

    // print Quantifiers
    List<? extends ASTNode> quantifierExpressions = ruleEl.getQuantifierExpressions();
    if (quantifierExpressions != null && !quantifierExpressions.isEmpty()) {
      if (quantifierExpressions.size() == 1) {
        ASTNode astNode = quantifierExpressions.get(0);
        if (astNode instanceof RutaQuantifierLiteralExpression) {
          append(astNode);
        } else {
          append(BRACK_OPEN);
          append(astNode);
          append(BRACK_CLOSE);
        }
      } else if (quantifierExpressions.size() == 2) {
        if (quantifierExpressions.get(1) instanceof RutaQuantifierLiteralExpression) {
          append(BRACK_OPEN);
          append(quantifierExpressions.get(0));
          append(BRACK_CLOSE);
          append(quantifierExpressions.get(1));
        } else {
          append(BRACK_OPEN);
          append(quantifierExpressions.get(0));
          append(COMMA + " ");
          append(quantifierExpressions.get(1));
          append(BRACK_CLOSE);
        }
      } else if (quantifierExpressions.size() == 3) {
        append(BRACK_OPEN);
        append(quantifierExpressions.get(0));
        append(COMMA + " ");
        append(quantifierExpressions.get(1));
        append(BRACK_CLOSE);
        append(quantifierExpressions.get(2));
      }
    }
    if (!inBlockDeclaration && conditions == null && actions == null) {
      return;
    }

    if (!inBlockDeclaration && ((conditions == null && actions.isEmpty())
            || actions == null && (conditions != null) && conditions.isEmpty())) {
      return;
    }
    append(CURLY_OPEN);
    // print Conditions
    if (conditions != null && !conditions.isEmpty()) {
      traverseAstNodes(conditions);
    }
    if (conditions != null && !conditions.isEmpty()) {
    }
    // print Actions
    if (actions != null && !actions.isEmpty()) {
      if (conditions != null && !conditions.isEmpty()) {
        append(" " + THEN + " ");
      } else {
        append(THEN + " ");
      }
      traverseAstNodes(actions);
    }
    append(CURLY_CLOSE);
    if (ruleEl.getInlinedRuleBlocks() != null && !ruleEl.getInlinedRuleBlocks().isEmpty()) {
      String inlineMode = ruleEl.getInlineMode();
      append(inlineMode);
      append(CURLY_OPEN);
      indentLevel++;
      List<List<RutaRule>> inlinedRuleBlocks = ruleEl.getInlinedRuleBlocks();
      for (List<RutaRule> inlinedRules : inlinedRuleBlocks) {
        for (RutaRule rutaRule : inlinedRules) {
          visit(rutaRule);
        }
      }
      indentLevel--;
      appendIntoNewLine(CURLY_CLOSE);
    }
  }