public String verbalizeRuleElement()

in ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ScriptVerbalizer.java [139:228]


  public String verbalizeRuleElement(RuleElement re) {
    List<AbstractRutaCondition> conditions = re.getConditions();
    List<AbstractRutaAction> actions = re.getActions();
    RuleElementQuantifier quantifier = re.getQuantifier();
    StringBuilder result = new StringBuilder();
    if (!StringUtils.isBlank(re.getLabel())) {
      result.append(re.getLabel());
      result.append(COLON);
    }
    if (re.isStartAnchor()) {
      result.append("@");
    }
    if (re instanceof ConjunctRulesRuleElement) {
      result.append(verbalizeConjunct((ConjunctRulesRuleElement) re));
    } else if (re instanceof ComposedRuleElement) {
      result.append(verbalizeComposed((ComposedRuleElement) re));
    } else if (re instanceof RutaOptionalRuleElement) {
      result.append("_");
    } else if (re instanceof RutaRuleElement) {
      RutaRuleElement tmre = (RutaRuleElement) re;
      RutaMatcher matcher = tmre.getMatcher();
      // action-only rule
      boolean actionOnlyRule = false;
      if (matcher == null) {
        result.append("_");
      } else {
        IRutaExpression expression = matcher.getExpression();
        actionOnlyRule = expression == null;
        if (expression != null) {
          String verbalize = verbalizer.verbalize(expression);
          if (StringUtils.isBlank(verbalize)) {
            actionOnlyRule = true;
          } else {
            result.append(verbalize);
          }
        }
      }
      if (actionOnlyRule) {
        Iterator<AbstractRutaAction> ait = actions.iterator();
        while (ait.hasNext()) {
          AbstractRutaAction each = ait.next();
          result.append(verbalizer.verbalize(each));
          if (ait.hasNext()) {
            result.append(",");
          }
        }
        return result.toString();
      }
    } else if (re instanceof WildCardRuleElement) {
      result.append("#");
    }
    result.append(verbalizeQuantifier(quantifier));

    if (!conditions.isEmpty() || !actions.isEmpty()) {
      result.append(CBOPEN);
      Iterator<AbstractRutaCondition> cit = conditions.iterator();
      while (cit.hasNext()) {
        AbstractRutaCondition each = cit.next();
        result.append(verbalizer.verbalize(each));
        if (cit.hasNext()) {
          result.append(",");
        }
      }
      if (!actions.isEmpty()) {
        result.append(THEN);
        Iterator<AbstractRutaAction> ait = actions.iterator();
        while (ait.hasNext()) {
          AbstractRutaAction each = ait.next();
          result.append(verbalizer.verbalize(each));
          if (ait.hasNext()) {
            result.append(",");
          }
        }
      }
      result.append(CBCLOSE);
    }
    if (re instanceof AbstractRuleElement) {
      AbstractRuleElement are = (AbstractRuleElement) re;

      List<List<RutaStatement>> inlinedConditionRuleBlocks = are.getInlinedConditionRuleBlocks();
      for (List<RutaStatement> inlinedConditionRules : inlinedConditionRuleBlocks) {
        result.append(verbalizeInlinedConditionRuleBlock(inlinedConditionRules));
      }
      List<List<RutaStatement>> inlinedActionRuleBlocks = are.getInlinedActionRuleBlocks();
      for (List<RutaStatement> inlinedActionRules : inlinedActionRuleBlocks) {
        result.append(verbalizeInlinedActionRuleBlock(inlinedActionRules));
      }
    }
    return result.toString();
  }