File tree Expand file tree Collapse file tree 3 files changed +31
-10
lines changed
Expand file tree Collapse file tree 3 files changed +31
-10
lines changed Original file line number Diff line number Diff line change @@ -23,12 +23,11 @@ struct Hours: ParsableCommand {
2323 var expression : String
2424
2525 mutating func run( ) throws {
26- let parser = DateParser ( rules: EN . all + Common. all)
2726 var userDate : Date
28- do {
29- let result = try parser . parse ( text : expression , base : Date ( ) )
30- userDate = result . date
31- } catch {
27+ if let date = DateArgument . parse ( s : expression ) {
28+ userDate = date
29+ } else {
30+ // try natural date parsing
3231 StdErr . print ( " Can't parse date " )
3332 throw ExitCode . failure
3433 }
Original file line number Diff line number Diff line change @@ -25,12 +25,11 @@ struct On: ParsableCommand {
2525 var expression : String
2626
2727 mutating func run( ) throws {
28- let parser = DateParser ( rules: EN . all + Common. all)
2928 var userDate : Date
30- do {
31- let result = try parser . parse ( text : expression , base : Date ( ) )
32- userDate = result . date
33- } catch {
29+ if let date = DateArgument . parse ( s : expression ) {
30+ userDate = date
31+ } else {
32+ // try natural date parsing
3433 StdErr . print ( " Can't parse date " )
3534 throw ExitCode . failure
3635 }
Original file line number Diff line number Diff line change 1+ import Foundation
2+ import when
3+
4+ enum DateArgument {
5+ static func parse( s: String ) -> Date ? {
6+ let parser = DateParser ( rules: EN . all + Common. all)
7+ do {
8+ let formatter = DateFormatter ( )
9+ formatter. dateFormat = " yyyy-MM-dd "
10+ // try iso date formatting manually
11+ // until swift-when supports iso dates/time
12+ if let date = formatter. date ( from: s) {
13+ return date
14+ } else {
15+ // try natural date parsing
16+ let result = try parser. parse ( text: s, base: Date ( ) )
17+ return result. date
18+ }
19+ } catch {
20+ return nil
21+ }
22+ }
23+ }
You can’t perform that action at this time.
0 commit comments