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