fish-shell/share/functions/contains_seq.fish
ridiculousfish a5fd0b317e Revert "Switch to bare vars in our math invocations"
This reverts commit bd18736ee5.

Bare variables should only be used in commands that must
manipulate the variable stack, such as `set`.
2017-09-09 23:35:47 -07:00

47 lines
1.0 KiB
Fish

function contains_seq --description 'Return true if array contains a sequence'
set -l printnext
switch $argv[1]
case --printnext
set printnext[1] 1
set -e argv[1]
end
set -l pattern
set -l string
set -l dest pattern
for i in $argv
if test "$i" = --
set dest string
continue
end
set $dest $$dest $i
end
set -l nomatch 1
set -l i 1
for s in $string
if set -q printnext[2]
return 0
end
if test "$s" = "$pattern[$i]"
set -e nomatch[1]
set i (math $i + 1)
if not set -q pattern[$i]
if set -q printnext[1]
set printnext[2] 1
continue
end
return 0
end
else
if not set -q nomatch[1]
set nomatch 1
set i 1
end
end
end
if set -q printnext[1]
echo ''
end
set -q printnext[2]
end