From 0be039623205d28d2dc6d71be007afedcb84563c Mon Sep 17 00:00:00 2001 From: home Date: Sun, 17 Dec 2023 20:08:31 +0300 Subject: [PATCH] Parse : Add parse_snake. --- .README.md | 6 ++++++ .config/bash/module/parse.sh | 15 +++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/.README.md b/.README.md index 422562f..541f0ea 100644 --- a/.README.md +++ b/.README.md @@ -15,3 +15,9 @@ curl -s https://git.voronind.com/voronind/linux/raw/branch/master/.bootstrap.sh # Load Gnome settings. To load Gnome settings run `dconf_load`. + +# Conventions. + +Directory names are `snake_case` so you don't have to release the Shift key 10 times per second when tabing deep for directory. + +File names are `CamelCase` to differ from directories, also it works nice with things like my archives where underscore and dash separate extra file data. diff --git a/.config/bash/module/parse.sh b/.config/bash/module/parse.sh index 4f3cec9..447c042 100644 --- a/.config/bash/module/parse.sh +++ b/.config/bash/module/parse.sh @@ -26,6 +26,21 @@ function parse_camel() { echo "${result}" } +# Parse to snake_case. +# Usage: parse_snake +function parse_snake() { + local IFS=${IFS}_- + local parts=($(parse_simplify ${1})) + local result + + for part in "${parts[@]}"; do + local word="${part,,}" + result="${result}_${word}" + done + + echo "${result#_}" +} + # Parse data keeping only alphanumeric characters. # Usage: parse_alnum function parse_alnum() {