refactor: strip word and from duration (#5412)
Signed-off-by: James Elliott <james-d-elliott@users.noreply.github.com>pull/5411/head^2
parent
41afaa5cc2
commit
998ffe5255
|
@ -28,11 +28,14 @@ If you supply an integer, it is considered a representation of seconds. If you s
|
||||||
blocks of quantities and units (number followed by a unit letter). For example `5h` indicates a quantity of 5 units
|
blocks of quantities and units (number followed by a unit letter). For example `5h` indicates a quantity of 5 units
|
||||||
of `h`.
|
of `h`.
|
||||||
|
|
||||||
The following is ignored:
|
The following is ignored or stripped from the input:
|
||||||
- all spaces
|
- all spaces
|
||||||
- leading zeros
|
- leading zeros
|
||||||
|
- the word `and`
|
||||||
|
|
||||||
While you can use multiple of these blocks in combination, we suggest keeping it simple and use a single value.
|
While you can use multiple of these blocks in combination, we suggest keeping it simple and use a single value. In
|
||||||
|
addition it's important to note that the format while somewhat human readable still requires you closely follow the
|
||||||
|
expected formats.
|
||||||
|
|
||||||
#### Unit Legend
|
#### Unit Legend
|
||||||
|
|
||||||
|
@ -52,11 +55,11 @@ v4.38.0 or newer.
|
||||||
|
|
||||||
#### Examples
|
#### Examples
|
||||||
|
|
||||||
| Desired Value | Configuration Examples |
|
| Desired Value | Configuration Examples (Short) | Configuration Examples (Long) |
|
||||||
|:---------------------:|:-------------------------------------:|
|
|:---------------------:|:-------------------------------------:|:---------------------------------------:|
|
||||||
| 1 hour and 30 minutes | `90m` or `1h30m` or `5400` or `5400s` |
|
| 1 hour and 30 minutes | `90m` or `1h30m` or `5400` or `5400s` | `1 hour and 30 mninutes` |
|
||||||
| 1 day | `1d` or `24h` or `86400` or `86400s` |
|
| 1 day | `1d` or `24h` or `86400` or `86400s` | `1 day` |
|
||||||
| 10 hours | `10h` or `600m` or `9h60m` or `36000` |
|
| 10 hours | `10h` or `600m` or `9h60m` or `36000` | `10 hours` |
|
||||||
|
|
||||||
### Address
|
### Address
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,8 @@ func StandardizeDurationString(input string) (output string, err error) {
|
||||||
return "0s", nil
|
return "0s", nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
input = strings.ReplaceAll(input, "and", "")
|
||||||
|
|
||||||
matches := reDurationStandard.FindAllStringSubmatch(strings.ReplaceAll(input, " ", ""), -1)
|
matches := reDurationStandard.FindAllStringSubmatch(strings.ReplaceAll(input, " ", ""), -1)
|
||||||
|
|
||||||
if len(matches) == 0 {
|
if len(matches) == 0 {
|
||||||
|
|
|
@ -109,6 +109,23 @@ func TestParseDurationString(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestStandardizeDurationString(t *testing.T) {
|
||||||
|
var (
|
||||||
|
actual string
|
||||||
|
err error
|
||||||
|
)
|
||||||
|
|
||||||
|
actual, err = StandardizeDurationString("1 hour and 20 minutes")
|
||||||
|
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, "1h20m", actual)
|
||||||
|
|
||||||
|
actual, err = StandardizeDurationString("1 hour and 20 minutes")
|
||||||
|
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, "1h20m", actual)
|
||||||
|
}
|
||||||
|
|
||||||
func TestParseDurationString_ShouldNotParseDurationStringWithOutOfOrderQuantitiesAndUnits(t *testing.T) {
|
func TestParseDurationString_ShouldNotParseDurationStringWithOutOfOrderQuantitiesAndUnits(t *testing.T) {
|
||||||
duration, err := ParseDurationString("h1")
|
duration, err := ParseDurationString("h1")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue