From 2b85d0a1de9ec57aab6293163d9885d76a47035c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucio=20Andr=C3=A9s=20Illanes=20Albornoz?= Date: Tue, 25 Feb 2020 17:26:03 +0000 Subject: General cleanup, pt. I. --- subr/ex_rtl_list.subr | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 subr/ex_rtl_list.subr (limited to 'subr/ex_rtl_list.subr') diff --git a/subr/ex_rtl_list.subr b/subr/ex_rtl_list.subr new file mode 100644 index 00000000..45a641c6 --- /dev/null +++ b/subr/ex_rtl_list.subr @@ -0,0 +1,62 @@ +# +# set +o errexit -o noglob is assumed. +# + +ex_rtl_lconcat() { + local _list="${1}" _litem_new="${2}" _sep="${3:- }" IFS="${3:-${IFS}}"; + if [ -n "${_list}" ]; then + printf "%s%s%s" "${_list}" "${_sep}" "${_litem_new}"; + else + printf "%s" "${_litem_new}"; + fi; +}; + +ex_rtl_lfilter() { + local _list="${1}" _filter="${2}" _sep="${3:- }" IFS="${3:-${IFS}}" \ + _filterfl="" _litem="" _litem_filter="" _lnew=""; + if [ -z "${_filter}" ]; then + echo "${_list}"; return 0; + else for _litem in ${_list}; do + _filterfl=0; + for _litem_filter in ${_filter}; do + if [ "${_litem_filter}" = "${_litem}" ]; then + _filterfl=1; break; + fi; + done; + if [ "${_filterfl:-0}" -eq 0 ]; then + _lnew="${_lnew:+${_lnew}${_sep}}${_litem}"; + fi; + done; fi; + echo "${_lnew}"; +}; + +ex_rtl_llength() { + local _list="${1}" _sep="${2:- }" IFS="${2:-${IFS}}" _litem="" _llength=0; + for _litem in ${_list}; do + : $((_llength+=1)); + done; + echo "${_llength}"; +}; + +ex_rtl_lmatch() { + local _list="${1}" _item="${2}" _sep="${3}"; + [ -n "$(ex_rtl_lsearch "${_list}" "${_item}" "${_sep}")" ]; +}; + +ex_rtl_lsearch() { + local _list="${1}" _filter="${2}" _sep="${3:- }" IFS="${3:-${IFS}}" \ + _litem="" _litem_filter="" _lnew=""; + if [ -z "${_filter}" ]; then + echo "${_list}"; return 0; + else for _litem in ${_list}; do + for _litem_filter in ${_filter}; do + if [ "${_litem_filter}" = "${_litem}" ]; then + _lnew="${_lnew:+${_lnew}${_sep}}${_litem}"; + break; + fi; + done; + done; fi; + echo "${_lnew}"; +}; + +# vim:filetype=sh -- cgit v1.2.3