fluent predicates for filtering

This commit is contained in:
tpoindex 2019-09-11 23:46:47 -06:00
parent 912b3f2491
commit 7b6531a74e
2 changed files with 89 additions and 0 deletions

View file

@ -398,3 +398,40 @@ maybevalue() {
fi
}
# commonly used predicates for filter
# e.g. list 1 a 2 b 3 c | filter lambda x . 'isint $x'
# inverse another test, e.g. "not isint $x"
not() {
local r=$("$@" 2>/dev/null)
$r && ret false || ret true
}
isint() {
[ "$1" -eq "$1" ] 2>/dev/null && ret true || ret false
}
isempty() {
[ -z "$1" ] && ret true || ret false
}
isfile() {
[ -f "$1" ] && ret true || ret false
}
isnonzerofile() {
[ -s "$1" ] && ret true || ret false
}
isreadable() {
[ -r "$1" ] && ret true || ret false
}
iswritable() {
[ -w "$1" ] && ret true || ret false
}
isdir() {
[ -d "$1" ] && ret true || ret false
}