# # set +o errexit -o noglob -o nounset is assumed. # rtl_isnumber() { local _s="${1}" _rc=0; while [ -n "${_s}" ]; do case "${_s}" in [0-9]*) _s="${_s#[0-9]}"; ;; *) _rc=1; break; ;; esac; done; return "${_rc}"; }; rtl_match() { local _s="${1}" _find="${2}"; if [ "${_s#${_find}}" != "${_s}" ]; then return 0; else return 1; fi; }; rtl_matchr() { local _s="${1}" _find="${2}"; if [ "${_s%${_find}}" != "${_s}" ]; then return 0; else return 1; fi; }; rtl_subst() { local _s="${1}" _find="${2}" _replace="${3}" _prefix="" _s_new=""; while [ -n "${_s}" ]; do case "${_s}" in *${_find}*) _prefix="${_s%%${_find}*}"; _s="${_s#*${_find}}"; _s_new="${_s_new:+${_s_new}}${_prefix}${_replace}"; ;; *) _s_new="${_s_new:+${_s_new}}${_s}"; _s=""; ;; esac; done; printf "%s" "${_s_new}"; }; rtl_tolower() { local _s="${1}" _s_new=""; while [ -n "${_s}" ]; do case "${_s}" in A*) _s_new="${_s_new:+${_s_new}}a"; _s="${_s#A}"; ;; B*) _s_new="${_s_new:+${_s_new}}b"; _s="${_s#B}"; ;; C*) _s_new="${_s_new:+${_s_new}}c"; _s="${_s#C}"; ;; D*) _s_new="${_s_new:+${_s_new}}d"; _s="${_s#D}"; ;; E*) _s_new="${_s_new:+${_s_new}}e"; _s="${_s#E}"; ;; F*) _s_new="${_s_new:+${_s_new}}f"; _s="${_s#F}"; ;; G*) _s_new="${_s_new:+${_s_new}}g"; _s="${_s#G}"; ;; H*) _s_new="${_s_new:+${_s_new}}h"; _s="${_s#H}"; ;; I*) _s_new="${_s_new:+${_s_new}}i"; _s="${_s#I}"; ;; J*) _s_new="${_s_new:+${_s_new}}j"; _s="${_s#J}"; ;; K*) _s_new="${_s_new:+${_s_new}}k"; _s="${_s#K}"; ;; L*) _s_new="${_s_new:+${_s_new}}l"; _s="${_s#L}"; ;; M*) _s_new="${_s_new:+${_s_new}}m"; _s="${_s#M}"; ;; N*) _s_new="${_s_new:+${_s_new}}n"; _s="${_s#N}"; ;; O*) _s_new="${_s_new:+${_s_new}}o"; _s="${_s#O}"; ;; P*) _s_new="${_s_new:+${_s_new}}p"; _s="${_s#P}"; ;; Q*) _s_new="${_s_new:+${_s_new}}q"; _s="${_s#Q}"; ;; R*) _s_new="${_s_new:+${_s_new}}r"; _s="${_s#R}"; ;; S*) _s_new="${_s_new:+${_s_new}}s"; _s="${_s#S}"; ;; T*) _s_new="${_s_new:+${_s_new}}t"; _s="${_s#T}"; ;; U*) _s_new="${_s_new:+${_s_new}}u"; _s="${_s#U}"; ;; V*) _s_new="${_s_new:+${_s_new}}v"; _s="${_s#V}"; ;; W*) _s_new="${_s_new:+${_s_new}}w"; _s="${_s#W}"; ;; X*) _s_new="${_s_new:+${_s_new}}x"; _s="${_s#X}"; ;; Y*) _s_new="${_s_new:+${_s_new}}y"; _s="${_s#Y}"; ;; Z*) _s_new="${_s_new:+${_s_new}}z"; _s="${_s#Z}"; ;; [!ABCDEFGHIJKLMNOPQRSTUVWXYZ]*) _s_new="${_s_new:+${_s_new}}${_s%%[ABCDEFGHIJKLMNOPQRSTUVWXYZ]*}"; while [ "${_s#[!ABCDEFGHIJKLMNOPQRSTUVWXYZ]}" != "${_s}" ]; do _s="${_s#[!ABCDEFGHIJKLMNOPQRSTUVWXYZ]}"; done; ;; esac; done; printf "%s" "${_s_new}"; }; rtl_toupper() { local _s="${1}" _s_new=""; while [ -n "${_s}" ]; do case "${_s}" in a*) _s_new="${_s_new:+${_s_new}}A"; _s="${_s#a}"; ;; b*) _s_new="${_s_new:+${_s_new}}B"; _s="${_s#b}"; ;; c*) _s_new="${_s_new:+${_s_new}}C"; _s="${_s#c}"; ;; d*) _s_new="${_s_new:+${_s_new}}D"; _s="${_s#d}"; ;; e*) _s_new="${_s_new:+${_s_new}}E"; _s="${_s#e}"; ;; f*) _s_new="${_s_new:+${_s_new}}F"; _s="${_s#f}"; ;; g*) _s_new="${_s_new:+${_s_new}}G"; _s="${_s#g}"; ;; h*) _s_new="${_s_new:+${_s_new}}H"; _s="${_s#h}"; ;; i*) _s_new="${_s_new:+${_s_new}}I"; _s="${_s#i}"; ;; j*) _s_new="${_s_new:+${_s_new}}J"; _s="${_s#j}"; ;; k*) _s_new="${_s_new:+${_s_new}}K"; _s="${_s#k}"; ;; l*) _s_new="${_s_new:+${_s_new}}L"; _s="${_s#l}"; ;; m*) _s_new="${_s_new:+${_s_new}}M"; _s="${_s#m}"; ;; n*) _s_new="${_s_new:+${_s_new}}N"; _s="${_s#n}"; ;; o*) _s_new="${_s_new:+${_s_new}}O"; _s="${_s#o}"; ;; p*) _s_new="${_s_new:+${_s_new}}P"; _s="${_s#p}"; ;; q*) _s_new="${_s_new:+${_s_new}}Q"; _s="${_s#q}"; ;; r*) _s_new="${_s_new:+${_s_new}}R"; _s="${_s#r}"; ;; s*) _s_new="${_s_new:+${_s_new}}S"; _s="${_s#s}"; ;; t*) _s_new="${_s_new:+${_s_new}}T"; _s="${_s#t}"; ;; u*) _s_new="${_s_new:+${_s_new}}U"; _s="${_s#u}"; ;; v*) _s_new="${_s_new:+${_s_new}}V"; _s="${_s#v}"; ;; w*) _s_new="${_s_new:+${_s_new}}W"; _s="${_s#w}"; ;; x*) _s_new="${_s_new:+${_s_new}}X"; _s="${_s#x}"; ;; y*) _s_new="${_s_new:+${_s_new}}Y"; _s="${_s#y}"; ;; z*) _s_new="${_s_new:+${_s_new}}Z"; _s="${_s#z}"; ;; [!abcdefghijklmnopqrstuvwxyz]*) _s_new="${_s_new:+${_s_new}}${_s%%[abcdefghijklmnopqrstuvwxyz]*}"; while [ "${_s#[!abcdefghijklmnopqrstuvwxyz]}" != "${_s}" ]; do _s="${_s#[!abcdefghijklmnopqrstuvwxyz]}"; done; ;; esac; done; printf "%s" "${_s_new}"; }; # vim:filetype=sh