From 187e5a1ecae4e926e63b089809c4cfc69d03b8bb Mon Sep 17 00:00:00 2001 From: Cuttlerat Date: Sun, 9 Jun 2019 13:28:29 +0300 Subject: [PATCH] Add reverse case function --- README.md | 28 ++++++++++++++++++++++++++++ manuscript/chapter1.txt | 26 ++++++++++++++++++++++++++ manuscript/chapter8.txt | 2 ++ test.sh | 5 +++++ 4 files changed, 61 insertions(+) diff --git a/README.md b/README.md index 05d23a8..68aa428 100644 --- a/README.md +++ b/README.md @@ -386,6 +386,32 @@ $ upper "HELLO" HELLO ``` +## Reverse a string case + +**CAVEAT:** Requires `bash` 4+ + +**Example Function:** + +```sh +reverse_case() { + # Usage: reverse_case "string" + printf '%s\n' "${1~~}" +} +``` + +**Example Usage:** + +```shell +$ reverse_case "hello" +HELLO + +$ reverse_case "HeLlO" +hElLo + +$ reverse_case "HELLO" +hello +``` + ## Trim quotes from a string **Example Function:** @@ -1221,6 +1247,8 @@ Contrary to popular belief, there is no issue in utilizing raw escape sequences. | `${VAR^^}` | Uppercase all characters. | `bash 4+` | | `${VAR,}` | Lowercase first character. | `bash 4+` | | `${VAR,,}` | Lowercase all characters. | `bash 4+` | +| `${VAR~}` | Reverse case of first character. | `bash 4+` | +| `${VAR~~}` | Reverse case of all characters. | `bash 4+` | ## Default Value diff --git a/manuscript/chapter1.txt b/manuscript/chapter1.txt index 386ca2f..13133ac 100644 --- a/manuscript/chapter1.txt +++ b/manuscript/chapter1.txt @@ -209,6 +209,32 @@ $ upper "HELLO" HELLO ``` +## Reverse a string case + +**CAVEAT:** Requires `bash` 4+ + +**Example Function:** + +```sh +reverse_case() { + # Usage: reverse_case "string" + printf '%s\n' "${1~~}" +} +``` + +**Example Usage:** + +```shell +$ reverse_case "hello" +HELLO + +$ reverse_case "HeLlO" +hElLo + +$ reverse_case "HELLO" +hello +``` + ## Trim quotes from a string **Example Function:** diff --git a/manuscript/chapter8.txt b/manuscript/chapter8.txt index a4f4efb..8145fe4 100644 --- a/manuscript/chapter8.txt +++ b/manuscript/chapter8.txt @@ -48,6 +48,8 @@ | `${VAR^^}` | Uppercase all characters. | `bash 4+` | | `${VAR,}` | Lowercase first character. | `bash 4+` | | `${VAR,,}` | Lowercase all characters. | `bash 4+` | +| `${VAR~}` | Reverse case of first character. | `bash 4+` | +| `${VAR~~}` | Reverse case of all characters. | `bash 4+` | ## Default Value diff --git a/test.sh b/test.sh index 90e865e..94da32e 100755 --- a/test.sh +++ b/test.sh @@ -28,6 +28,11 @@ test_upper() { assert_equals "$result" "HELLO" } +test_reverse_case() { + result="$(reverse_case "HeLlO")" + assert_equals "$result" "hElLo" +} + test_trim_quotes() { result="$(trim_quotes "\"te'st' 'str'ing\"")" assert_equals "$result" "test string"