Parse : Fix parse splitting.
This commit is contained in:
parent
32f6ae74d4
commit
0587a9404a
|
@ -88,8 +88,7 @@ function parse_snake_uppercase() {
|
|||
# Parse data keeping only alphanumeric characters.
|
||||
# Usage: parse_alnum <STRING>
|
||||
function parse_alnum() {
|
||||
echo "${*}" | \
|
||||
sed -e "s/[^[:alnum:]]//g"
|
||||
echo "${*}" | sed -e "s/[^[:alnum:]]//g"
|
||||
}
|
||||
|
||||
# Parse integers from mixed string.
|
||||
|
@ -114,8 +113,8 @@ function parse_uppercase() {
|
|||
# Usage: parse_titlecase <STRING>
|
||||
function parse_titlecase() {
|
||||
local IFS=$'\n'
|
||||
local parts=$(_get_parts ${*})
|
||||
local minors=("is" "at" "of" "to" "in" "for" "the" "a" "an" "and" "but" "or" "on" "was" "were" "been" "be" "do" "did" "does" "")
|
||||
local parts=$(_parse_split ${*})
|
||||
local minors=("is" "at" "of" "to" "in" "for" "the" "a" "an" "and" "but" "or" "on" "was" "were" "been" "be" "do" "did" "does")
|
||||
local is_first=true
|
||||
|
||||
for part in ${parts[@]}; do
|
||||
|
@ -125,7 +124,7 @@ function parse_titlecase() {
|
|||
continue
|
||||
fi
|
||||
|
||||
if [[ "${minors[@]}" =~ "${part,,}" ]]; then
|
||||
if [[ "${minors[@]}" =~ $(echo ${part} | sed -e "s/[${_PARSE_SPLIT_CHARS}]//g") ]]; then
|
||||
echo -n "${part}"
|
||||
else
|
||||
echo -n "${part^}"
|
||||
|
@ -146,7 +145,7 @@ function parse_sentencecase() {
|
|||
# Usage: parse_startcase <STRING>
|
||||
function parse_startcase() {
|
||||
local IFS=$'\n'
|
||||
local parts=$(_get_parts ${*})
|
||||
local parts=$(_parse_split ${*})
|
||||
|
||||
for part in ${parts[@]}; do
|
||||
echo -n "${part^}"
|
||||
|
@ -159,8 +158,14 @@ function parse_json() {
|
|||
echo "${*}" | jq
|
||||
}
|
||||
|
||||
# Split string by separators.
|
||||
# Usage: _parse_split <STRING>
|
||||
function _parse_split() {
|
||||
echo "${*}" | sed -e "s/[A-Z]/\n&/g" -e "s/[0-9]\+/\n&\n/g" -e "s/[${_PARSE_SPLIT_CHARS}]/&\n/g" | sed -e "/^$/d"
|
||||
}
|
||||
|
||||
# Get name parts.
|
||||
# Usage: _get_parts <STRING>
|
||||
function _get_parts() {
|
||||
echo "${*}" | sed -e "s/[A-Z]/\n&/g" -e "s/[0-9]\+/\n&/g" -e "s/[${_PARSE_SPLIT_CHARS}]/&\n/g" | sed -e "/^$/d"
|
||||
_parse_split "${*}" | sed -e "s/[${_PARSE_SPLIT_CHARS}]//g" | sed -e "/^$/d"
|
||||
}
|
||||
|
|
Reference in a new issue