installTextDirectionHandlers method

void installTextDirectionHandlers()

Implementation

void installTextDirectionHandlers() {
  // \RLE{content} — Right-to-Left Embedding
  register(["RLE"], (_, ctx, __) {
    final arg = ctx.parseArgument();
    if (arg == null) return TextNode("");
    final content = arg is GroupNode ? arg.childrenNodes : [arg];
    return TextDirectionNode(content, TextDirectionType.rtl);
  });

  // \LRE{content} — Left-to-Right Embedding
  register(["LRE"], (_, ctx, __) {
    final arg = ctx.parseArgument();
    if (arg == null) return TextNode("");
    final content = arg is GroupNode ? arg.childrenNodes : [arg];
    return TextDirectionNode(content, TextDirectionType.ltr);
  });

  // \textarabic{content} — Arabic text (RTL)
  register(["textarabic"], (_, ctx, __) {
    final arg = ctx.parseArgument();
    if (arg == null) return TextNode("");
    final content = arg is GroupNode ? arg.childrenNodes : [arg];
    return TextDirectionNode(content, TextDirectionType.rtl);
  });

  // \texthebrew{content} — Hebrew text (RTL)
  register(["texthebrew"], (_, ctx, __) {
    final arg = ctx.parseArgument();
    if (arg == null) return TextNode("");
    final content = arg is GroupNode ? arg.childrenNodes : [arg];
    return TextDirectionNode(content, TextDirectionType.rtl);
  });
}