Add order: none handling to playlist sorting

This commit is contained in:
DarkBreakpoint
2025-11-19 22:12:53 -06:00
parent c3a41f6877
commit 88e92cd4a4
4 changed files with 17 additions and 5 deletions
+10 -2
View File
@@ -10,6 +10,9 @@ fn playlist_comparator(
value_a: &str,
value_b: &str,
) -> Ordering {
if matches!(order, SortOrder::None) {
return Ordering::Equal;
}
if let Some(regex_list) = sequence {
let mut match_a = None;
let mut match_b = None;
@@ -123,10 +126,15 @@ pub(in crate::processing::processor) fn sort_playlist(target: &ConfigTarget, new
if let Some(sort) = &target.sort {
let match_as_ascii = sort.match_as_ascii;
if let Some(group_sort) = &sort.groups {
new_playlist.sort_by(|a, b| playlistgroup_comparator(a, b, group_sort, match_as_ascii));
if group_sort.order != SortOrder::None {
new_playlist.sort_by(|a, b| playlistgroup_comparator(a, b, group_sort, match_as_ascii));
}
}
if let Some(channel_sorts) = &sort.channels {
for channel_sort in channel_sorts {
if channel_sort.order == SortOrder::None {
continue;
}
let regexp = &channel_sort.group_pattern;
for group in new_playlist.iter_mut() {
let group_title = if match_as_ascii { deunicode(&group.title) } else { group.title.clone() };
@@ -223,4 +231,4 @@ mod tests {
let expected = vec!["US| EAST [UHD] m", "US| EAST [FHD] abc", "US| EAST [FHD] bc", "US| EAST [FHD] de", "US| EAST [FHD] def", "US| EAST [FHD] ghi", "US| EAST [HD] f", "US| EAST [HD] h", "US| EAST [HD] jkl", "US| EAST [HD] mno", "US| EAST [HD] pqrs", "US| EAST [HD] tuv", "US| EAST [HD] wxy", "US| EAST [HD] z", "US| EAST [SD] a", "US| EAST [SD] ijk", "US| EAST [SD] l", "US| WEST [FHD] no", "US| WEST [HD] qrst", "US| WEST [HD] uvw", "US| (West) xv", "US| East d", "US| West e", "US| West f"];
assert_eq!(expected, sorted);
}
}
}