TN1150

A Dart implementation of Apple's HFS+ FastUnicodeCompare algorithm for case-insensitive string comparison that matches macOS file sorting behavior.

Features

  • HFS+ compatible string comparison
  • NFD Unicode normalization
  • Case-insensitive comparison with special character support

Usage

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)));
}

API

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.

Credits

Dart port of node-tn1150 by Linus Unnebäck.

License

MIT License

Libraries

tn1150
Support for doing something awesome.