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