splitPathInFrontmatter function
Split paths in frontmatter, respecting brace patterns.
Implementation
List<String> splitPathInFrontmatter(dynamic input) {
if (input is List) {
return input
.expand<String>((item) => splitPathInFrontmatter(item))
.toList();
}
if (input is! String) return [];
final parts = <String>[];
var current = StringBuffer();
var braceDepth = 0;
for (var i = 0; i < input.length; i++) {
final char = input[i];
if (char == '{') {
braceDepth++;
current.write(char);
} else if (char == '}') {
braceDepth--;
current.write(char);
} else if (char == ',' && braceDepth == 0) {
final trimmed = current.toString().trim();
if (trimmed.isNotEmpty) parts.add(trimmed);
current = StringBuffer();
} else {
current.write(char);
}
}
final trimmed = current.toString().trim();
if (trimmed.isNotEmpty) parts.add(trimmed);
return parts
.where((p) => p.isNotEmpty)
.expand((pattern) => expandBraces(pattern))
.toList();
}