@@ -171,7 +171,7 @@ func (p *parser) unexpectedTail(tailStart int) error {
171171// go 1.20 allows us to convert a byte slice to a string without a memory allocation.
172172// See https://github.com/golang/go/issues/53003#issuecomment-1140276077.
173173func bytesToString (b []byte ) string {
174- if b == nil || len (b ) <= 0 {
174+ if len (b ) <= 0 {
175175 return ""
176176 } else {
177177 return unsafe .String (& b [0 ], len (b ))
@@ -494,17 +494,18 @@ iterRunes:
494494 // 12 Feb 2006, 19:17
495495 // 12 Feb 2006, 19:17:22
496496 // 2013 Jan 06 15:04:05
497- if adjustedI == 4 {
497+ switch adjustedI {
498+ case 4 :
498499 p .yeari = p .skip
499500 p .yearlen = i - p .skip
500501 p .moi = i + 1
501502 if ! p .setYear () {
502503 return p , p .unknownErr (datestr )
503504 }
504505 p .stateDate = dateYearWs
505- } else if adjustedI == 6 {
506+ case 6 :
506507 p .stateDate = dateDigitSt
507- } else {
508+ default :
508509 p .stateDate = dateDigitWs
509510 p .dayi = p .skip
510511 p .daylen = i - p .skip
@@ -743,7 +744,8 @@ iterRunes:
743744 sepLen = 1
744745 }
745746 length := i - (p .moi + p .molen + sepLen )
746- if length == 4 {
747+ switch length {
748+ case 4 :
747749 p .yearlen = 4
748750 p .set (p .yeari , "2006" )
749751 // We now also know that part1 was the day
@@ -752,7 +754,7 @@ iterRunes:
752754 if ! p .setDay () {
753755 return p , p .unknownErr (datestr )
754756 }
755- } else if length == 2 {
757+ case 2 :
756758 // We have no idea if this is
757759 // yy-mon-dd OR dd-mon-yy
758760 // (or for dateDigitDashDigitDash, yy-mm-dd OR dd-mm-yy)
@@ -769,7 +771,7 @@ iterRunes:
769771 if ! p .setDay () {
770772 return p , p .unknownErr (datestr )
771773 }
772- } else {
774+ default :
773775 return p , p .unknownErr (datestr )
774776 }
775777 p .stateTime = timeStart
@@ -1257,8 +1259,8 @@ iterRunes:
12571259 // Oct/07/1970
12581260 // February/ 7/1970
12591261 // February/07/1970
1260- switch {
1261- case r == ' ' :
1262+ switch r {
1263+ case ' ' :
12621264 // This could be a weekday or a month, detect and parse both cases.
12631265 // skip & return to dateStart
12641266 // Tue 05 May 2020, 05:05:05
@@ -1296,7 +1298,7 @@ iterRunes:
12961298 return p , p .unknownErr (datestr )
12971299 }
12981300
1299- case r == ',' :
1301+ case ',' :
13001302 // Mon, 02 Jan 2006
13011303 // Monday, 02 Jan 2006
13021304 if adjustedI >= 3 && p .nextIs (i , ' ' ) {
@@ -1310,23 +1312,24 @@ iterRunes:
13101312 return p , p .unknownErr (datestr )
13111313 }
13121314 }
1313- case r == '.' :
1315+ case '.' :
13141316 // sept. 28, 2017
13151317 // jan. 28, 2017
13161318 p .stateDate = dateAlphaPeriodWsDigit
1317- if adjustedI == 3 {
1319+ switch adjustedI {
1320+ case 3 :
13181321 p .moi = p .skip
13191322 p .molen = i - p .skip
13201323 p .set (p .skip , "Jan" )
1321- } else if adjustedI == 4 {
1324+ case 4 :
13221325 // gross
13231326 newDateStr := p .datestr [p .skip :i - 1 ] + p .datestr [i :]
13241327 putBackParser (p )
13251328 return parseTime (newDateStr , loc , opts ... )
1326- } else {
1329+ default :
13271330 return p , p .unknownErr (datestr )
13281331 }
1329- case r == '/' :
1332+ case '/' :
13301333 // X
13311334 // Oct/ 7/1970
13321335 // Oct/07/1970
@@ -2032,9 +2035,10 @@ iterRunes:
20322035 // timeWsAlphaZoneOffsetWsExtra
20332036 // 18:04:07 GMT+0100 (GMT Daylight Time)
20342037 // 18:04:07 GMT+01:00 (GMT Daylight Time)
2035- if r == '(' {
2038+ switch r {
2039+ case '(' :
20362040 return p , p .unknownErr (datestr )
2037- } else if r == ')' {
2041+ case ')' :
20382042 // must be the end
20392043 if i != len (p .datestr )- 1 {
20402044 return p , p .unknownErr (datestr )
@@ -2076,11 +2080,12 @@ iterRunes:
20762080 p .set (i - 1 , "PM" )
20772081 }
20782082 p .parsedAMPM = true
2079- if p .hourlen == 2 {
2083+ switch p .hourlen {
2084+ case 2 :
20802085 p .set (p .houri , "03" )
2081- } else if p . hourlen == 1 {
2086+ case 1 :
20822087 p .set (p .houri , "3" )
2083- } else {
2088+ default :
20842089 return p , p .unknownErr (datestr )
20852090 }
20862091 } else {
@@ -2519,7 +2524,8 @@ iterRunes:
25192524 // dateDigitDashDigitDash:
25202525 // 29-06-2026
25212526 length := len (p .datestr ) - (p .moi + p .molen + 1 )
2522- if length == 4 {
2527+ switch length {
2528+ case 4 :
25232529 p .yearlen = 4
25242530 p .set (p .yeari , "2006" )
25252531 // We now also know that part1 was the day
@@ -2528,7 +2534,7 @@ iterRunes:
25282534 if ! p .setDay () {
25292535 return p , p .unknownErr (datestr )
25302536 }
2531- } else if length == 2 {
2537+ case 2 :
25322538 // We have no idea if this is
25332539 // yy-mon-dd OR dd-mon-yy
25342540 // (or for dateDigitDashDigitDash, yy-mm-dd OR dd-mm-yy)
@@ -2545,7 +2551,7 @@ iterRunes:
25452551 if ! p .setDay () {
25462552 return p , p .unknownErr (datestr )
25472553 }
2548- } else {
2554+ default :
25492555 return p , p .unknownErr (datestr )
25502556 }
25512557 }
@@ -2865,37 +2871,40 @@ func (p *parser) set(start int, val string) {
28652871}
28662872
28672873func (p * parser ) setMonth () bool {
2868- if p .molen == 2 {
2874+ switch p .molen {
2875+ case 2 :
28692876 p .set (p .moi , "01" )
28702877 return true
2871- } else if p . molen == 1 {
2878+ case 1 :
28722879 p .set (p .moi , "1" )
28732880 return true
2874- } else {
2881+ default :
28752882 return false
28762883 }
28772884}
28782885
28792886func (p * parser ) setDay () bool {
2880- if p .daylen == 2 {
2887+ switch p .daylen {
2888+ case 2 :
28812889 p .set (p .dayi , "02" )
28822890 return true
2883- } else if p . daylen == 1 {
2891+ case 1 :
28842892 p .set (p .dayi , "2" )
28852893 return true
2886- } else {
2894+ default :
28872895 return false
28882896 }
28892897}
28902898
28912899func (p * parser ) setYear () bool {
2892- if p .yearlen == 2 {
2900+ switch p .yearlen {
2901+ case 2 :
28932902 p .set (p .yeari , "06" )
28942903 return true
2895- } else if p . yearlen == 4 {
2904+ case 4 :
28962905 p .set (p .yeari , "2006" )
28972906 return true
2898- } else {
2907+ default :
28992908 return false
29002909 }
29012910}
@@ -3016,35 +3025,38 @@ func (p *parser) coalesceTime(end int) bool {
30163025 // 3:4:5
30173026 // 15:04:05.00
30183027 if p .houri > 0 {
3019- if p .hourlen == 2 {
3028+ switch p .hourlen {
3029+ case 2 :
30203030 p .set (p .houri , "15" )
3021- } else if p . hourlen == 1 {
3031+ case 1 :
30223032 p .set (p .houri , "3" )
3023- } else {
3033+ default :
30243034 return false
30253035 }
30263036 }
30273037 if p .mini > 0 {
30283038 if p .minlen == 0 {
30293039 p .minlen = end - p .mini
30303040 }
3031- if p .minlen == 2 {
3041+ switch p .minlen {
3042+ case 2 :
30323043 p .set (p .mini , "04" )
3033- } else if p . minlen == 1 {
3044+ case 1 :
30343045 p .set (p .mini , "4" )
3035- } else {
3046+ default :
30363047 return false
30373048 }
30383049 }
30393050 if p .seci > 0 {
30403051 if p .seclen == 0 {
30413052 p .seclen = end - p .seci
30423053 }
3043- if p .seclen == 2 {
3054+ switch p .seclen {
3055+ case 2 :
30443056 p .set (p .seci , "05" )
3045- } else if p . seclen == 1 {
3057+ case 1 :
30463058 p .set (p .seci , "5" )
3047- } else {
3059+ default :
30483060 return false
30493061 }
30503062 }
0 commit comments