@@ -16,12 +16,13 @@ private extension EKReminder {
1616 }
1717}
1818
19- private func format( _ reminder: EKReminder , at index: Int , listName: String ? = nil ) -> String {
19+ private func format( _ reminder: EKReminder , at index: Int ? , listName: String ? = nil ) -> String {
2020 let dateString = formattedDueDate ( from: reminder) . map { " ( \( $0) ) " } ?? " "
2121 let priorityString = Priority ( reminder. mappedPriority) . map { " (priority: \( $0) ) " } ?? " "
2222 let listString = listName. map { " \( $0) : " } ?? " "
2323 let notesString = reminder. notes. map { " ( \( $0) ) " } ?? " "
24- return " \( listString) \( index) : \( reminder. title ?? " <unknown> " ) \( notesString) \( dateString) \( priorityString) "
24+ let indexString = index. map { " \( $0) : " } ?? " "
25+ return " \( listString) \( indexString) \( reminder. title ?? " <unknown> " ) \( notesString) \( dateString) \( priorityString) "
2526}
2627
2728public enum OutputFormat : String , ExpressibleByArgument {
@@ -128,15 +129,19 @@ public final class Reminders {
128129 semaphore. wait ( )
129130 }
130131
131- func showListItems( withName name: String , dueOn dueDate: DateComponents ? , displayOptions: DisplayOptions , outputFormat: OutputFormat ) {
132+ func showListItems( withName name: String , dueOn dueDate: DateComponents ? , displayOptions: DisplayOptions ,
133+ outputFormat: OutputFormat , sort: Sort , sortOrder: CustomSortOrder )
134+ {
132135 let semaphore = DispatchSemaphore ( value: 0 )
133136 let calendar = Calendar . current
134137
135138 self . reminders ( on: [ self . calendar ( withName: name) ] , displayOptions: displayOptions) { reminders in
136- var matchingReminders = [ ( EKReminder, Int) ] ( )
139+ var matchingReminders = [ ( EKReminder, Int? ) ] ( )
140+ let reminders = sort == . none ? reminders : reminders. sorted ( by: sort. sortFunction ( order: sortOrder) )
137141 for (i, reminder) in reminders. enumerated ( ) {
142+ let index = sort == . none ? i : nil
138143 guard let dueDate = dueDate? . date else {
139- matchingReminders. append ( ( reminder, i ) )
144+ matchingReminders. append ( ( reminder, index ) )
140145 continue
141146 }
142147
@@ -147,7 +152,7 @@ public final class Reminders {
147152 let sameDay = calendar. compare (
148153 reminderDueDate, to: dueDate, toGranularity: . day) == . orderedSame
149154 if sameDay {
150- matchingReminders. append ( ( reminder, i ) )
155+ matchingReminders. append ( ( reminder, index ) )
151156 }
152157 }
153158
0 commit comments