diff --git a/lib/bash/str/README.md b/lib/bash/str/README.md index d268069..6894980 100644 --- a/lib/bash/str/README.md +++ b/lib/bash/str/README.md @@ -71,6 +71,8 @@ base_str_join joined "|" parts - Predicate helpers require exactly two arguments, return shell status, and do not print output. - `base_str_split` preserves empty fields between repeated delimiters. +- `base_str_split` preserves an empty first field when the input begins with the + separator. - `base_str_split` preserves a trailing empty field when the input ends with the separator. - `base_str_join` preserves empty array elements, including trailing empty elements. diff --git a/lib/bash/str/tests/lib_str.bats b/lib/bash/str/tests/lib_str.bats index 145f316..76720f7 100644 --- a/lib/bash/str/tests/lib_str.bats +++ b/lib/bash/str/tests/lib_str.bats @@ -248,6 +248,17 @@ EOF [ "${parts[2]}" = "" ] } +@test "base_str_split preserves a leading empty field before the first separator" { + local -a parts=() + + base_str_split parts ",alpha,beta" "," + + [ "${#parts[@]}" -eq 3 ] + [ "${parts[0]}" = "" ] + [ "${parts[1]}" = "alpha" ] + [ "${parts[2]}" = "beta" ] +} + @test "base_str_split can store results in an array named fields" { local -a fields=()