summaryrefslogtreecommitdiffhomepage
path: root/subr/ex_rtl.subr
diff options
context:
space:
mode:
Diffstat (limited to 'subr/ex_rtl.subr')
-rw-r--r--subr/ex_rtl.subr32
1 files changed, 17 insertions, 15 deletions
diff --git a/subr/ex_rtl.subr b/subr/ex_rtl.subr
index ac5632ca..3f5e8c70 100644
--- a/subr/ex_rtl.subr
+++ b/subr/ex_rtl.subr
@@ -14,24 +14,10 @@ ex_rtl_try_run() { if ex_rtl_test_cmd "${1}"; then "${@}"; fi; };
ex_rtl_set_var_unsafe() { [ -n "${2}" ] && eval ${1}=\"${2}\" || return 0; };
ex_rtl_test_cmd() { command -v "${1}" >/dev/null; };
ex_rtl_toupper() { echo "${1}" | tr a-z A-Z; };
+ex_rtl_uniq() { echo "${@}" | sed 's/ /\n/g' | awk '!x[$0]++' | paste -s -d" "; };
ex_rtl_unset_vars() { while [ ${#} -gt 0 ]; do unset "${1}"; shift; done; };
ex_rtl_lfilter() {
- local _list="${1}" _filter="${2}" _lnew="" _litem="" _litem_filter="";
- 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} }${_litem}";
- break;
- fi;
- done;
- done; fi;
- echo "${_lnew}";
-};
-
-ex_rtl_lfilter_not() {
local _list="${1}" _filter="${2}" _lnew="" _litem="" _litem_filter="" _filterfl="";
if [ -z "${_filter}" ]; then
echo "${_list}"; return 0;
@@ -58,6 +44,22 @@ ex_rtl_lmatch() {
done; return 1;
};
+
+ex_rtl_lsearch() {
+ local _list="${1}" _filter="${2}" _lnew="" _litem="" _litem_filter="";
+ 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} }${_litem}";
+ break;
+ fi;
+ done;
+ done; fi;
+ echo "${_lnew}";
+};
+
ex_rtl_run_cmd_unsplit() {
local _cmd="${1}" _cmdline="" _rc="" IFS; shift;
while [ ${#} -gt 0 ]; do