Apache Velocity: нелатинские названия пользовательских директив

как сделать пользовательскую директиву скорости с локализованным именем.
Такие директивы сейчас игнорируются.
Например:

class MyDirective extends Directive {
  @Override
  public String getName() {
    return "Пример";
  }
  @Override
  public boolean render(InternalContextAdapter context, Writer writer, Node node) 
        throws IOException, ResourceNotFoundException, ParseErrorException, MethodInvocationException {
    writer.write("example");
    return true;
  }
}

Входной текст: #Пример()

Ожидалосьexample, но получил немодифицированный текст #Пример()

1 ответ

  1. Это ограничение анализатора скорости в соответствии с этим определением идентификатора

    <PRE_REFERENCE,REFMODIFIER,REFMOD2>
    TOKEN :
    {
        <#ALPHA_CHAR: ["a"-"z", "A"-"Z", "_"] >
    |   <#IDENTIFIER_CHAR: [ "a"-"z", "A"-"Z", "0"-"9", "_" ] >
    |   <IDENTIFIER:  ( <ALPHA_CHAR> ) (<IDENTIFIER_CHAR>)* >
        {
            if (curLexState == PRE_REFERENCE)
            {
                SwitchTo(REFERENCE);
            }
        }
    }