108 lines
2 KiB
Bash
108 lines
2 KiB
Bash
# Parse data and output simplified format.
|
|
# Usage: parse_simplify <STRING>
|
|
function parse_simplify() {
|
|
echo "${*}" | \
|
|
sed -e "s/ /_/g" \
|
|
-e "s/[^[:alnum:]_-]//g" \
|
|
-e "s/_\+/_/g" -e "s/-\+/-/g" \
|
|
-e "s/_-/_/g" -e "s/-_/_/g" \
|
|
-e "s/_\+/_/g" \
|
|
-e "s/^_//" -e "s/_$//"
|
|
}
|
|
|
|
# Parse to PascalCase.
|
|
# Usage: parse_pascal <STRING>
|
|
function parse_pascal() {
|
|
local IFS=${IFS}_-
|
|
local parts=($(parse_simplify ${1}))
|
|
local result
|
|
|
|
# If already in Pascal.
|
|
if [[ "${#parts[@]}" = 1 ]]; then
|
|
echo "${parts[*]^}"
|
|
return 0
|
|
fi
|
|
|
|
for part in "${parts[@]}"; do
|
|
local word="${part,,}"
|
|
word="${word^}"
|
|
result="${result}${word}"
|
|
done
|
|
|
|
echo "${result}"
|
|
}
|
|
|
|
# Parse to snake_case.
|
|
# Usage: parse_snake <STRING>
|
|
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 to kebab-case.
|
|
# Usage: parse_kebab <STRING>
|
|
function parse_kebab() {
|
|
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 to camelCase.
|
|
# Usage: parse_camel <STRING>
|
|
function parse_camel() {
|
|
local IFS=${IFS}_-
|
|
local parts=($(parse_simplify ${1}))
|
|
local result
|
|
|
|
# If already in camel.
|
|
if [[ "${#parts[@]}" = 1 ]]; then
|
|
echo "${parts[*],}"
|
|
return 0
|
|
fi
|
|
|
|
for part in "${parts[@]}"; do
|
|
local word="${part,,}"
|
|
word="${word^}"
|
|
result="${result}${word}"
|
|
done
|
|
|
|
echo "${result,}"
|
|
}
|
|
|
|
# Parse to SNAKE_CASE_UPPERCASE.
|
|
# Usage: parse_snake_uppercase <STRING>
|
|
function parse_snake_uppercase() {
|
|
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 <STRING>
|
|
function parse_alnum() {
|
|
echo "${*}" | \
|
|
sed -e "s/[^[:alnum:]]//g"
|
|
}
|