summaryrefslogtreecommitdiffhomepage
path: root/subr.rtl/rtl_string.subr
diff options
context:
space:
mode:
Diffstat (limited to 'subr.rtl/rtl_string.subr')
-rw-r--r--subr.rtl/rtl_string.subr122
1 files changed, 122 insertions, 0 deletions
diff --git a/subr.rtl/rtl_string.subr b/subr.rtl/rtl_string.subr
new file mode 100644
index 00000000..e642bebe
--- /dev/null
+++ b/subr.rtl/rtl_string.subr
@@ -0,0 +1,122 @@
+#
+# 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