A Dart implementation of Apple's HFS+ FastUnicodeCompare algorithm for case-insensitive string comparison that matches macOS file sorting behavior.
- HFS+ compatible string comparison
- NFD Unicode normalization
- Case-insensitive comparison with special character support
import 'package:tn1150/tn1150.dart';
void main() {
// Case-insensitive comparison
print(compare('Hello', 'hello')); // 0 (equal)
// With normalization
String str1 = normalize('café');
String str2 = normalize('CAFÉ');
print(compare(str1, str2)); // 0
// Sorting files (HFS+ style)
List<String> files = ['Test.txt', 'test2.txt', 'readme.md'];
files.sort((a, b) => compare(normalize(a), normalize(b)));
}compare(String str1, String str2) → int
Compares two NFD-normalized strings using HFS+ rules. Returns negative if str1 < str2, zero if equal, positive if str1 > str2.
normalize(String string) → String
Normalizes string to Unicode NFD form.
Dart port of node-tn1150 by Linus Unnebäck.
MIT License