Update Vendors (#337)
* update & migrate gitea sdk (Fix Delete Tag Issue) * upgraded github.com/AlecAivazis/survey v2.2.7 => v2.2.8 * upgraded github.com/adrg/xdg v0.2.3 => v0.3.1 * upgraded github.com/araddon/dateparse * upgraded github.com/olekukonko/tablewriter v0.0.4 => v0.0.5 * upgraded gopkg.in/yaml.v2 v2.3.0 => v2.4.0 Reviewed-on: https://gitea.com/gitea/tea/pulls/337 Reviewed-by: Norwin <noerw@noreply.gitea.io> Reviewed-by: khmarbaise <khmarbaise@noreply.gitea.io> Co-authored-by: 6543 <6543@obermui.de> Co-committed-by: 6543 <6543@obermui.de>
This commit is contained in:
31
vendor/github.com/araddon/dateparse/README.md
generated
vendored
31
vendor/github.com/araddon/dateparse/README.md
generated
vendored
@@ -65,11 +65,11 @@ var examples = []string{
|
||||
"Mon, 02 Jan 2006 15:04:05 MST",
|
||||
"Tue, 11 Jul 2017 16:28:13 +0200 (CEST)",
|
||||
"Mon, 02 Jan 2006 15:04:05 -0700",
|
||||
"Thu, 4 Jan 2018 17:53:36 +0000",
|
||||
"Mon 30 Sep 2018 09:09:09 PM UTC",
|
||||
"Mon Aug 10 15:44:11 UTC+0100 2015",
|
||||
"Thu, 4 Jan 2018 17:53:36 +0000",
|
||||
"Fri Jul 03 2015 18:04:07 GMT+0100 (GMT Daylight Time)",
|
||||
"Sun, 3 Jan 2021 00:12:23 +0800 (GMT+08:00)",
|
||||
"September 17, 2012 10:09am",
|
||||
"September 17, 2012 at 10:09am PST-08",
|
||||
"September 17, 2012, 10:10:09",
|
||||
@@ -77,11 +77,15 @@ var examples = []string{
|
||||
"October 7th, 1970",
|
||||
"12 Feb 2006, 19:17",
|
||||
"12 Feb 2006 19:17",
|
||||
"14 May 2019 19:11:40.164",
|
||||
"7 oct 70",
|
||||
"7 oct 1970",
|
||||
"03 February 2013",
|
||||
"1 July 2013",
|
||||
"2013-Feb-03",
|
||||
// dd/Mon/yyy alpha Months
|
||||
"06/Jan/2008:15:04:05 -0700",
|
||||
"06/Jan/2008 15:04:05 -0700",
|
||||
// mm/dd/yy
|
||||
"3/31/2014",
|
||||
"03/31/2014",
|
||||
@@ -123,7 +127,10 @@ var examples = []string{
|
||||
"2006-01-02T15:04:05+0000",
|
||||
"2009-08-12T22:15:09-07:00",
|
||||
"2009-08-12T22:15:09",
|
||||
"2009-08-12T22:15:09.988",
|
||||
"2009-08-12T22:15:09Z",
|
||||
"2017-07-19T03:21:51:897+0100",
|
||||
"2019-05-29T08:41-04", // no seconds, 2 digit TZ offset
|
||||
// yyyy-mm-dd hh:mm:ss
|
||||
"2014-04-26 17:24:37.3186369",
|
||||
"2012-08-03 18:31:59.257000000",
|
||||
@@ -147,6 +154,8 @@ var examples = []string{
|
||||
"2014-04",
|
||||
"2014",
|
||||
"2014-05-11 08:20:13,787",
|
||||
// yyyy-mm-dd-07:00
|
||||
"2020-07-20+08:00",
|
||||
// mm.dd.yy
|
||||
"3.31.2014",
|
||||
"03.31.2014",
|
||||
@@ -156,6 +165,9 @@ var examples = []string{
|
||||
// yyyymmdd and similar
|
||||
"20140601",
|
||||
"20140722105203",
|
||||
// yymmdd hh:mm:yy mysql log
|
||||
// 080313 05:21:55 mysqld started
|
||||
"171113 14:14:20",
|
||||
// unix seconds, ms, micro, nano
|
||||
"1332151919",
|
||||
"1384216367189",
|
||||
@@ -214,6 +226,7 @@ func main() {
|
||||
| Mon Aug 10 15:44:11 UTC+0100 2015 | 2015-08-10 15:44:11 +0000 UTC |
|
||||
| Thu, 4 Jan 2018 17:53:36 +0000 | 2018-01-04 17:53:36 +0000 UTC |
|
||||
| Fri Jul 03 2015 18:04:07 GMT+0100 (GMT Daylight Time) | 2015-07-03 18:04:07 +0100 GMT |
|
||||
| Sun, 3 Jan 2021 00:12:23 +0800 (GMT+08:00) | 2021-01-03 00:12:23 +0800 +0800 |
|
||||
| September 17, 2012 10:09am | 2012-09-17 10:09:00 +0000 UTC |
|
||||
| September 17, 2012 at 10:09am PST-08 | 2012-09-17 10:09:00 -0800 PST |
|
||||
| September 17, 2012, 10:10:09 | 2012-09-17 10:10:09 +0000 UTC |
|
||||
@@ -221,11 +234,14 @@ func main() {
|
||||
| October 7th, 1970 | 1970-10-07 00:00:00 +0000 UTC |
|
||||
| 12 Feb 2006, 19:17 | 2006-02-12 19:17:00 +0000 UTC |
|
||||
| 12 Feb 2006 19:17 | 2006-02-12 19:17:00 +0000 UTC |
|
||||
| 14 May 2019 19:11:40.164 | 2019-05-14 19:11:40.164 +0000 UTC |
|
||||
| 7 oct 70 | 1970-10-07 00:00:00 +0000 UTC |
|
||||
| 7 oct 1970 | 1970-10-07 00:00:00 +0000 UTC |
|
||||
| 03 February 2013 | 2013-02-03 00:00:00 +0000 UTC |
|
||||
| 1 July 2013 | 2013-07-01 00:00:00 +0000 UTC |
|
||||
| 2013-Feb-03 | 2013-02-03 00:00:00 +0000 UTC |
|
||||
| 06/Jan/2008:15:04:05 -0700 | 2008-01-06 15:04:05 -0700 -0700 |
|
||||
| 06/Jan/2008 15:04:05 -0700 | 2008-01-06 15:04:05 -0700 -0700 |
|
||||
| 3/31/2014 | 2014-03-31 00:00:00 +0000 UTC |
|
||||
| 03/31/2014 | 2014-03-31 00:00:00 +0000 UTC |
|
||||
| 08/21/71 | 1971-08-21 00:00:00 +0000 UTC |
|
||||
@@ -250,11 +266,22 @@ func main() {
|
||||
| 2014/4/02 03:00:51 | 2014-04-02 03:00:51 +0000 UTC |
|
||||
| 2012/03/19 10:11:59 | 2012-03-19 10:11:59 +0000 UTC |
|
||||
| 2012/03/19 10:11:59.3186369 | 2012-03-19 10:11:59.3186369 +0000 UTC |
|
||||
| 2014:3:31 | 2014-03-31 00:00:00 +0000 UTC |
|
||||
| 2014:03:31 | 2014-03-31 00:00:00 +0000 UTC |
|
||||
| 2014:4:8 22:05 | 2014-04-08 22:05:00 +0000 UTC |
|
||||
| 2014:04:08 22:05 | 2014-04-08 22:05:00 +0000 UTC |
|
||||
| 2014:04:2 03:00:51 | 2014-04-02 03:00:51 +0000 UTC |
|
||||
| 2014:4:02 03:00:51 | 2014-04-02 03:00:51 +0000 UTC |
|
||||
| 2012:03:19 10:11:59 | 2012-03-19 10:11:59 +0000 UTC |
|
||||
| 2012:03:19 10:11:59.3186369 | 2012-03-19 10:11:59.3186369 +0000 UTC |
|
||||
| 2014年04月08日 | 2014-04-08 00:00:00 +0000 UTC |
|
||||
| 2006-01-02T15:04:05+0000 | 2006-01-02 15:04:05 +0000 UTC |
|
||||
| 2009-08-12T22:15:09-07:00 | 2009-08-12 22:15:09 -0700 -0700 |
|
||||
| 2009-08-12T22:15:09 | 2009-08-12 22:15:09 +0000 UTC |
|
||||
| 2009-08-12T22:15:09.988 | 2009-08-12 22:15:09.988 +0000 UTC |
|
||||
| 2009-08-12T22:15:09Z | 2009-08-12 22:15:09 +0000 UTC |
|
||||
| 2017-07-19T03:21:51:897+0100 | 2017-07-19 03:21:51.897 +0100 +0100 |
|
||||
| 2019-05-29T08:41-04 | 2019-05-29 08:41:00 -0400 -0400 |
|
||||
| 2014-04-26 17:24:37.3186369 | 2014-04-26 17:24:37.3186369 +0000 UTC |
|
||||
| 2012-08-03 18:31:59.257000000 | 2012-08-03 18:31:59.257 +0000 UTC |
|
||||
| 2014-04-26 17:24:37.123 | 2014-04-26 17:24:37.123 +0000 UTC |
|
||||
@@ -277,6 +304,7 @@ func main() {
|
||||
| 2014-04 | 2014-04-01 00:00:00 +0000 UTC |
|
||||
| 2014 | 2014-01-01 00:00:00 +0000 UTC |
|
||||
| 2014-05-11 08:20:13,787 | 2014-05-11 08:20:13.787 +0000 UTC |
|
||||
| 2020-07-20+08:00 | 2020-07-20 00:00:00 +0800 +0800 |
|
||||
| 3.31.2014 | 2014-03-31 00:00:00 +0000 UTC |
|
||||
| 03.31.2014 | 2014-03-31 00:00:00 +0000 UTC |
|
||||
| 08.21.71 | 1971-08-21 00:00:00 +0000 UTC |
|
||||
@@ -284,6 +312,7 @@ func main() {
|
||||
| 2014.03.30 | 2014-03-30 00:00:00 +0000 UTC |
|
||||
| 20140601 | 2014-06-01 00:00:00 +0000 UTC |
|
||||
| 20140722105203 | 2014-07-22 10:52:03 +0000 UTC |
|
||||
| 171113 14:14:20 | 2017-11-13 14:14:20 +0000 UTC |
|
||||
| 1332151919 | 2012-03-19 10:11:59 +0000 UTC |
|
||||
| 1384216367189 | 2013-11-12 00:32:47.189 +0000 UTC |
|
||||
| 1384216367111222 | 2013-11-12 00:32:47.111222 +0000 UTC |
|
||||
|
||||
4
vendor/github.com/araddon/dateparse/go.mod
generated
vendored
4
vendor/github.com/araddon/dateparse/go.mod
generated
vendored
@@ -3,7 +3,7 @@ module github.com/araddon/dateparse
|
||||
go 1.12
|
||||
|
||||
require (
|
||||
github.com/mattn/go-runewidth v0.0.9 // indirect
|
||||
github.com/mattn/go-runewidth v0.0.10 // indirect
|
||||
github.com/scylladb/termtables v0.0.0-20191203121021-c4c0b6d42ff4
|
||||
github.com/stretchr/testify v1.6.1
|
||||
github.com/stretchr/testify v1.7.0
|
||||
)
|
||||
|
||||
11
vendor/github.com/araddon/dateparse/go.sum
generated
vendored
11
vendor/github.com/araddon/dateparse/go.sum
generated
vendored
@@ -1,14 +1,17 @@
|
||||
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
|
||||
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
|
||||
github.com/mattn/go-runewidth v0.0.10 h1:CoZ3S2P7pvtP45xOtBw+/mDL2z0RKI576gSkzRRpdGg=
|
||||
github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/rivo/uniseg v0.1.0 h1:+2KBaVoUmb9XzDsrx/Ct0W/EYOSFf/nWTauy++DprtY=
|
||||
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||
github.com/scylladb/termtables v0.0.0-20191203121021-c4c0b6d42ff4 h1:8qmTC5ByIXO3GP/IzBkxcZ/99VITvnIETDhdFz/om7A=
|
||||
github.com/scylladb/termtables v0.0.0-20191203121021-c4c0b6d42ff4/go.mod h1:C1a7PQSMz9NShzorzCiG2fk9+xuCgLkPeCvMHYR2OWg=
|
||||
github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
|
||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
||||
|
||||
249
vendor/github.com/araddon/dateparse/parseany.go
generated
vendored
249
vendor/github.com/araddon/dateparse/parseany.go
generated
vendored
@@ -55,37 +55,41 @@ type timeState uint8
|
||||
const (
|
||||
dateStart dateState = iota // 0
|
||||
dateDigit
|
||||
dateDigitSt
|
||||
dateYearDash
|
||||
dateYearDashAlphaDash
|
||||
dateYearDashDash
|
||||
dateYearDashDashWs // 5
|
||||
dateYearDashDashT
|
||||
dateYearDashDashOffset
|
||||
dateDigitDash
|
||||
dateDigitDashAlpha
|
||||
dateDigitDashAlphaDash
|
||||
dateDigitDot // 10
|
||||
dateDigitDashAlphaDash // 10
|
||||
dateDigitDot
|
||||
dateDigitDotDot
|
||||
dateDigitSlash
|
||||
dateDigitYearSlash
|
||||
dateDigitSlashAlpha // 15
|
||||
dateDigitColon
|
||||
dateDigitChineseYear
|
||||
dateDigitChineseYearWs // 15
|
||||
dateDigitChineseYearWs
|
||||
dateDigitWs
|
||||
dateDigitWsMoYear
|
||||
dateDigitWsMoYear // 20
|
||||
dateDigitWsMolong
|
||||
dateAlpha
|
||||
dateAlphaWs // 20
|
||||
dateAlphaWs
|
||||
dateAlphaWsDigit
|
||||
dateAlphaWsDigitMore
|
||||
dateAlphaWsDigitMore // 25
|
||||
dateAlphaWsDigitMoreWs
|
||||
dateAlphaWsDigitMoreWsYear
|
||||
dateAlphaWsMonth // 25
|
||||
dateAlphaWsMonth
|
||||
dateAlphaWsDigitYearmaybe
|
||||
dateAlphaWsMonthMore
|
||||
dateAlphaWsMonthSuffix
|
||||
dateAlphaWsMore
|
||||
dateAlphaWsAtTime // 30
|
||||
dateAlphaWsAtTime
|
||||
dateAlphaWsAlpha
|
||||
dateAlphaWsAlphaYearmaybe
|
||||
dateAlphaWsAlphaYearmaybe // 35
|
||||
dateAlphaPeriodWsDigit
|
||||
dateWeekdayComma
|
||||
dateWeekdayAbbrevComma
|
||||
@@ -267,7 +271,7 @@ iterRunes:
|
||||
i += (bytesConsumed - 1)
|
||||
}
|
||||
|
||||
//gou.Debugf("i=%d r=%s state=%d %s", i, string(r), p.stateDate, datestr)
|
||||
// gou.Debugf("i=%d r=%s state=%d %s", i, string(r), p.stateDate, datestr)
|
||||
switch p.stateDate {
|
||||
case dateStart:
|
||||
if unicode.IsDigit(r) {
|
||||
@@ -295,17 +299,37 @@ iterRunes:
|
||||
p.stateDate = dateDigitDash
|
||||
}
|
||||
case '/':
|
||||
// 08/May/2005
|
||||
// 03/31/2005
|
||||
// 2014/02/24
|
||||
p.stateDate = dateDigitSlash
|
||||
if i == 4 {
|
||||
p.yearlen = i
|
||||
// 2014/02/24 - Year first /
|
||||
p.yearlen = i // since it was start of datestr, i=len
|
||||
p.moi = i + 1
|
||||
p.setYear()
|
||||
p.stateDate = dateDigitYearSlash
|
||||
} else {
|
||||
// Either Ambiguous dd/mm vs mm/dd OR dd/month/yy
|
||||
// 08/May/2005
|
||||
// 03/31/2005
|
||||
// 31/03/2005
|
||||
if i+2 < len(p.datestr) && unicode.IsLetter(rune(datestr[i+1])) {
|
||||
// 08/May/2005
|
||||
p.stateDate = dateDigitSlashAlpha
|
||||
p.moi = i + 1
|
||||
p.daylen = 2
|
||||
p.dayi = 0
|
||||
p.setDay()
|
||||
continue
|
||||
}
|
||||
// Ambiguous dd/mm vs mm/dd the bane of date-parsing
|
||||
// 03/31/2005
|
||||
// 31/03/2005
|
||||
p.ambiguousMD = true
|
||||
if p.preferMonthFirst {
|
||||
if p.molen == 0 {
|
||||
// 03/31/2005
|
||||
p.molen = i
|
||||
p.setMonth()
|
||||
p.dayi = i + 1
|
||||
@@ -317,6 +341,7 @@ iterRunes:
|
||||
p.moi = i + 1
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
case ':':
|
||||
@@ -363,9 +388,13 @@ iterRunes:
|
||||
// 02 Jan 2018 23:59:34
|
||||
// 12 Feb 2006, 19:17
|
||||
// 12 Feb 2006, 19:17:22
|
||||
p.stateDate = dateDigitWs
|
||||
p.dayi = 0
|
||||
p.daylen = i
|
||||
if i == 6 {
|
||||
p.stateDate = dateDigitSt
|
||||
} else {
|
||||
p.stateDate = dateDigitWs
|
||||
p.dayi = 0
|
||||
p.daylen = i
|
||||
}
|
||||
case '年':
|
||||
// Chinese Year
|
||||
p.stateDate = dateDigitChineseYear
|
||||
@@ -376,9 +405,15 @@ iterRunes:
|
||||
}
|
||||
p.part1Len = i
|
||||
|
||||
case dateDigitSt:
|
||||
p.set(0, "060102")
|
||||
i = i - 1
|
||||
p.stateTime = timeStart
|
||||
break iterRunes
|
||||
case dateYearDash:
|
||||
// dateYearDashDashT
|
||||
// 2006-01-02T15:04:05Z07:00
|
||||
// 2020-08-17T17:00:00:000+0100
|
||||
// dateYearDashDashWs
|
||||
// 2013-04-01 22:43:22
|
||||
// dateYearDashAlphaDash
|
||||
@@ -400,7 +435,14 @@ iterRunes:
|
||||
// 2006-01-02T15:04:05Z07:00
|
||||
// dateYearDashDashWs
|
||||
// 2013-04-01 22:43:22
|
||||
// dateYearDashDashOffset
|
||||
// 2020-07-20+00:00
|
||||
switch r {
|
||||
case '+', '-':
|
||||
p.offseti = i
|
||||
p.daylen = i - p.dayi
|
||||
p.stateDate = dateYearDashDashOffset
|
||||
p.setDay()
|
||||
case ' ':
|
||||
p.daylen = i - p.dayi
|
||||
p.stateDate = dateYearDashDashWs
|
||||
@@ -414,6 +456,21 @@ iterRunes:
|
||||
p.setDay()
|
||||
break iterRunes
|
||||
}
|
||||
|
||||
case dateYearDashDashT:
|
||||
// dateYearDashDashT
|
||||
// 2006-01-02T15:04:05Z07:00
|
||||
// 2020-08-17T17:00:00:000+0100
|
||||
|
||||
case dateYearDashDashOffset:
|
||||
// 2020-07-20+00:00
|
||||
switch r {
|
||||
case ':':
|
||||
p.set(p.offseti, "-07:00")
|
||||
// case ' ':
|
||||
// return nil, unknownErr(datestr)
|
||||
}
|
||||
|
||||
case dateYearDashAlphaDash:
|
||||
// 2013-Feb-03
|
||||
switch r {
|
||||
@@ -446,7 +503,7 @@ iterRunes:
|
||||
case dateDigitDashAlphaDash:
|
||||
// 13-Feb-03 ambiguous
|
||||
// 28-Feb-03 ambiguous
|
||||
// 29-Jun-2016
|
||||
// 29-Jun-2016 dd-month(alpha)-yyyy
|
||||
switch r {
|
||||
case ' ':
|
||||
// we need to find if this was 4 digits, aka year
|
||||
@@ -476,8 +533,49 @@ iterRunes:
|
||||
break iterRunes
|
||||
}
|
||||
|
||||
case dateDigitSlash:
|
||||
case dateDigitYearSlash:
|
||||
// 2014/07/10 06:55:38.156283
|
||||
// I honestly don't know if this format ever shows up as yyyy/
|
||||
|
||||
switch r {
|
||||
case ' ', ':':
|
||||
p.stateTime = timeStart
|
||||
if p.daylen == 0 {
|
||||
p.daylen = i - p.dayi
|
||||
p.setDay()
|
||||
}
|
||||
break iterRunes
|
||||
case '/':
|
||||
if p.molen == 0 {
|
||||
p.molen = i - p.moi
|
||||
p.setMonth()
|
||||
p.dayi = i + 1
|
||||
}
|
||||
}
|
||||
|
||||
case dateDigitSlashAlpha:
|
||||
// 06/May/2008
|
||||
|
||||
switch r {
|
||||
case '/':
|
||||
// |
|
||||
// 06/May/2008
|
||||
if p.molen == 0 {
|
||||
p.set(p.moi, "Jan")
|
||||
p.yeari = i + 1
|
||||
}
|
||||
// We aren't breaking because we are going to re-use this case
|
||||
// to find where the date starts, and possible time begins
|
||||
case ' ', ':':
|
||||
p.stateTime = timeStart
|
||||
if p.yearlen == 0 {
|
||||
p.yearlen = i - p.yeari
|
||||
p.setYear()
|
||||
}
|
||||
break iterRunes
|
||||
}
|
||||
|
||||
case dateDigitSlash:
|
||||
// 03/19/2012 10:11:59
|
||||
// 04/2/2014 03:00:37
|
||||
// 3/1/2012 10:11:59
|
||||
@@ -488,25 +586,9 @@ iterRunes:
|
||||
// 1/2/06
|
||||
|
||||
switch r {
|
||||
case ' ':
|
||||
p.stateTime = timeStart
|
||||
if p.yearlen == 0 {
|
||||
p.yearlen = i - p.yeari
|
||||
p.setYear()
|
||||
} else if p.daylen == 0 {
|
||||
p.daylen = i - p.dayi
|
||||
p.setDay()
|
||||
}
|
||||
break iterRunes
|
||||
case '/':
|
||||
if p.yearlen > 0 {
|
||||
// 2014/07/10 06:55:38.156283
|
||||
if p.molen == 0 {
|
||||
p.molen = i - p.moi
|
||||
p.setMonth()
|
||||
p.dayi = i + 1
|
||||
}
|
||||
} else if p.preferMonthFirst {
|
||||
// This is the 2nd / so now we should know start pts of all of the dd, mm, yy
|
||||
if p.preferMonthFirst {
|
||||
if p.daylen == 0 {
|
||||
p.daylen = i - p.dayi
|
||||
p.setDay()
|
||||
@@ -519,6 +601,15 @@ iterRunes:
|
||||
p.yeari = i + 1
|
||||
}
|
||||
}
|
||||
// Note no break, we are going to pass by and re-enter this dateDigitSlash
|
||||
// and look for ending (space) or not (just date)
|
||||
case ' ':
|
||||
p.stateTime = timeStart
|
||||
if p.yearlen == 0 {
|
||||
p.yearlen = i - p.yeari
|
||||
p.setYear()
|
||||
}
|
||||
break iterRunes
|
||||
}
|
||||
|
||||
case dateDigitColon:
|
||||
@@ -718,8 +809,7 @@ iterRunes:
|
||||
|
||||
case r == ',':
|
||||
// Mon, 02 Jan 2006
|
||||
// p.moi = 0
|
||||
// p.molen = i
|
||||
|
||||
if i == 3 {
|
||||
p.stateDate = dateWeekdayAbbrevComma
|
||||
p.set(0, "Mon")
|
||||
@@ -1039,7 +1129,7 @@ iterRunes:
|
||||
for ; i < len(datestr); i++ {
|
||||
r := rune(datestr[i])
|
||||
|
||||
//gou.Debugf("%d %s %d iterTimeRunes %s %s", i, string(r), p.stateTime, p.ds(), p.ts())
|
||||
// gou.Debugf("i=%d r=%s state=%d iterTimeRunes %s %s", i, string(r), p.stateTime, p.ds(), p.ts())
|
||||
|
||||
switch p.stateTime {
|
||||
case timeStart:
|
||||
@@ -1096,7 +1186,12 @@ iterRunes:
|
||||
// 22:18+0530
|
||||
p.minlen = i - p.mini
|
||||
} else {
|
||||
p.seclen = i - p.seci
|
||||
if p.seclen == 0 {
|
||||
p.seclen = i - p.seci
|
||||
}
|
||||
if p.msi > 0 && p.mslen == 0 {
|
||||
p.mslen = i - p.msi
|
||||
}
|
||||
}
|
||||
p.offseti = i
|
||||
case '.':
|
||||
@@ -1154,6 +1249,19 @@ iterRunes:
|
||||
} else if p.seci == 0 {
|
||||
p.seci = i + 1
|
||||
p.minlen = i - p.mini
|
||||
} else if p.seci > 0 {
|
||||
// 18:31:59:257 ms uses colon, wtf
|
||||
p.seclen = i - p.seci
|
||||
p.set(p.seci, "05")
|
||||
p.msi = i + 1
|
||||
|
||||
// gross, gross, gross. manipulating the datestr is horrible.
|
||||
// https://github.com/araddon/dateparse/issues/117
|
||||
// Could not get the parsing to work using golang time.Parse() without
|
||||
// replacing that colon with period.
|
||||
p.set(i, ".")
|
||||
datestr = datestr[0:i] + "." + datestr[i+1:]
|
||||
p.datestr = datestr
|
||||
}
|
||||
}
|
||||
case timeOffset:
|
||||
@@ -1201,7 +1309,6 @@ iterRunes:
|
||||
// 17:57:51 MST 2009
|
||||
p.tzi = i
|
||||
p.stateTime = timeWsAlpha
|
||||
//break iterTimeRunes
|
||||
} else if unicode.IsDigit(r) {
|
||||
// 00:12:00 2008
|
||||
p.stateTime = timeWsYear
|
||||
@@ -1231,6 +1338,7 @@ iterRunes:
|
||||
p.offseti = i
|
||||
case ' ':
|
||||
// 17:57:51 MST 2009
|
||||
// 17:57:51 MST
|
||||
p.tzlen = i - p.tzi
|
||||
if p.tzlen == 4 {
|
||||
p.set(p.tzi, " MST")
|
||||
@@ -1333,7 +1441,7 @@ iterRunes:
|
||||
p.trimExtra()
|
||||
break
|
||||
}
|
||||
case '+', '-':
|
||||
case '+', '-', '(':
|
||||
// This really doesn't seem valid, but for some reason when round-tripping a go date
|
||||
// their is an extra +03 printed out. seems like go bug to me, but, parsing anyway.
|
||||
// 00:00:00 +0300 +03
|
||||
@@ -1350,6 +1458,7 @@ iterRunes:
|
||||
p.setYear()
|
||||
}
|
||||
case unicode.IsLetter(r):
|
||||
// 15:04:05 -0700 MST
|
||||
if p.tzi == 0 {
|
||||
p.tzi = i
|
||||
}
|
||||
@@ -1535,6 +1644,17 @@ iterRunes:
|
||||
}
|
||||
|
||||
switch p.stateTime {
|
||||
case timeWsAlpha:
|
||||
switch len(p.datestr) - p.tzi {
|
||||
case 3:
|
||||
// 13:31:51.999 +01:00 CET
|
||||
p.set(p.tzi, "MST")
|
||||
case 4:
|
||||
p.set(p.tzi, "MST")
|
||||
p.extra = len(p.datestr) - 1
|
||||
p.trimExtra()
|
||||
}
|
||||
|
||||
case timeWsAlphaWs:
|
||||
p.yearlen = i - p.yeari
|
||||
p.setYear()
|
||||
@@ -1554,13 +1674,34 @@ iterRunes:
|
||||
case timePeriod:
|
||||
p.mslen = i - p.msi
|
||||
case timeOffset:
|
||||
// 19:55:00+0100
|
||||
p.set(p.offseti, "-0700")
|
||||
|
||||
switch len(p.datestr) - p.offseti {
|
||||
case 0, 1, 2, 4:
|
||||
return p, fmt.Errorf("TZ offset not recognized %q near %q (must be 2 or 4 digits optional colon)", datestr, string(datestr[p.offseti:]))
|
||||
case 3:
|
||||
// 19:55:00+01
|
||||
p.set(p.offseti, "-07")
|
||||
case 5:
|
||||
// 19:55:00+0100
|
||||
p.set(p.offseti, "-0700")
|
||||
}
|
||||
|
||||
case timeWsOffset:
|
||||
p.set(p.offseti, "-0700")
|
||||
case timeWsOffsetWs:
|
||||
// 17:57:51 -0700 2009
|
||||
// 00:12:00 +0000 UTC
|
||||
if p.tzi > 0 {
|
||||
switch len(p.datestr) - p.tzi {
|
||||
case 3:
|
||||
// 13:31:51.999 +01:00 CET
|
||||
p.set(p.tzi, "MST")
|
||||
case 4:
|
||||
// 13:31:51.999 +01:00 CEST
|
||||
p.set(p.tzi, "MST ")
|
||||
}
|
||||
|
||||
}
|
||||
case timeWsOffsetColon:
|
||||
// 17:57:51 -07:00
|
||||
p.set(p.offseti, "-07:00")
|
||||
@@ -1638,6 +1779,9 @@ iterRunes:
|
||||
p.t = &t
|
||||
return p, nil
|
||||
}
|
||||
case dateDigitSt:
|
||||
// 171113 14:14:20
|
||||
return p, nil
|
||||
|
||||
case dateYearDash:
|
||||
// 2006-01
|
||||
@@ -1650,6 +1794,16 @@ iterRunes:
|
||||
// 2006-01-2
|
||||
return p, nil
|
||||
|
||||
case dateYearDashDashOffset:
|
||||
/// 2020-07-20+00:00
|
||||
switch len(p.datestr) - p.offseti {
|
||||
case 5:
|
||||
p.set(p.offseti, "-0700")
|
||||
case 6:
|
||||
p.set(p.offseti, "-07:00")
|
||||
}
|
||||
return p, nil
|
||||
|
||||
case dateYearDashAlphaDash:
|
||||
// 2013-Feb-03
|
||||
// 2013-Feb-3
|
||||
@@ -1757,6 +1911,13 @@ iterRunes:
|
||||
// 3/1/2014
|
||||
// 10/13/2014
|
||||
// 01/02/2006
|
||||
return p, nil
|
||||
|
||||
case dateDigitSlashAlpha:
|
||||
// 03/Jun/2014
|
||||
return p, nil
|
||||
|
||||
case dateDigitYearSlash:
|
||||
// 2014/10/13
|
||||
return p, nil
|
||||
|
||||
@@ -2002,10 +2163,12 @@ func (p *parser) parse() (time.Time, error) {
|
||||
p.format = p.format[p.skip:]
|
||||
p.datestr = p.datestr[p.skip:]
|
||||
}
|
||||
//gou.Debugf("parse %q AS %q", p.datestr, string(p.format))
|
||||
|
||||
if p.loc == nil {
|
||||
// gou.Debugf("parse layout=%q input=%q \ntx, err := time.Parse(%q, %q)", string(p.format), p.datestr, string(p.format), p.datestr)
|
||||
return time.Parse(string(p.format), p.datestr)
|
||||
}
|
||||
//gou.Debugf("parse layout=%q input=%q \ntx, err := time.ParseInLocation(%q, %q, %v)", string(p.format), p.datestr, string(p.format), p.datestr, p.loc)
|
||||
return time.ParseInLocation(string(p.format), p.datestr, p.loc)
|
||||
}
|
||||
func isDay(alpha string) bool {
|
||||
|
||||
Reference in New Issue
Block a user