logicalToVisual function

String logicalToVisual(
  1. String input
)

Applies THE BIDIRECTIONAL ALGORITHM using (https://pub.dev/packages/bidi)

Implementation

String logicalToVisual(String input) {
  final buffer = StringBuffer();
  final paragraphs = bidi.BidiString.fromLogical(input).paragraphs;
  for (final paragraph in paragraphs) {
    final endsWithNewLine = paragraph.separator == 10;
    final endIndex = paragraph.bidiText.length - (endsWithNewLine ? 1 : 0);
    final visual = String.fromCharCodes(paragraph.bidiText, 0, endIndex);
    buffer.write(visual.split(' ').reversed.join(' '));
    if (endsWithNewLine) {
      buffer.writeln();
    }
  }
  return buffer.toString();
}