@@ -16,12 +16,13 @@ private extension EKReminder {
16
16
}
17
17
}
18
18
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 {
20
20
let dateString = formattedDueDate ( from: reminder) . map { " ( \( $0) ) " } ?? " "
21
21
let priorityString = Priority ( reminder. mappedPriority) . map { " (priority: \( $0) ) " } ?? " "
22
22
let listString = listName. map { " \( $0) : " } ?? " "
23
23
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) "
25
26
}
26
27
27
28
public enum OutputFormat : String , ExpressibleByArgument {
@@ -128,15 +129,19 @@ public final class Reminders {
128
129
semaphore. wait ( )
129
130
}
130
131
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
+ {
132
135
let semaphore = DispatchSemaphore ( value: 0 )
133
136
let calendar = Calendar . current
134
137
135
138
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) )
137
141
for (i, reminder) in reminders. enumerated ( ) {
142
+ let index = sort == . none ? i : nil
138
143
guard let dueDate = dueDate? . date else {
139
- matchingReminders. append ( ( reminder, i ) )
144
+ matchingReminders. append ( ( reminder, index ) )
140
145
continue
141
146
}
142
147
@@ -147,7 +152,7 @@ public final class Reminders {
147
152
let sameDay = calendar. compare (
148
153
reminderDueDate, to: dueDate, toGranularity: . day) == . orderedSame
149
154
if sameDay {
150
- matchingReminders. append ( ( reminder, i ) )
155
+ matchingReminders. append ( ( reminder, index ) )
151
156
}
152
157
}
153
158
0 commit comments