generateStableId function

String generateStableId({
  1. required String parentPath,
  2. required String role,
  3. required int siblingPosition,
  4. String identifier = '',
  5. String text = '',
  6. int? disambiguator,
})

Build a human-readable, deterministic stable ID for one tree node.

Implementation

String generateStableId({
  required String parentPath,
  required String role,
  required int siblingPosition,
  String identifier = '',
  String text = '',
  int? disambiguator,
}) {
  String slug;
  final textSlug = text.isEmpty ? '' : idTextSlug(text);
  if (identifier.isNotEmpty) {
    slug = slugify(identifier);
  } else if (textSlug.isNotEmpty) {
    slug = textSlug;
  } else {
    final r = role.isEmpty ? 'node' : slugify(role);
    slug = '${r}_$siblingPosition';
  }
  if (disambiguator != null) slug = '${slug}_$disambiguator';
  return parentPath.isEmpty ? slug : '$parentPath.$slug';
}