@q
@prog def-pmatch
1 9999 d
1 i
: partial-match-loop (onlinerange name dbref -- dbref)
3 pick not if rot rot pop pop exit then
4 rotate dup name
4 pick strlen strcut pop
4 pick stringcmp not if
over if
over over dbcmp not
if pop #-2 then
then swap
then
pop rot 1 - rot rot
partial-match-loop
;
: partial-match (name -- dbref)
online dup 2 + rotate #-1
partial-match-loop
dup #-2 dbcmp if pop #-1 then
;
: def-pmatch (name -- dbref)
dup "me" stringcmp not if
pop "me" match exit
then
dup "#" 1 strncmp not if
1 strcut swap pop
dup number? if
atoi dbref
dup player? not if pop #-1 then
else
pop #-1
then
else
"*" over strcat match
dup not if
pop partial-match
else swap pop
then
then
dup #-2 dbcmp if pop #-1 then
;
.
c
q
@set def-pmatch=link_ok
@set def-pmatch=wizard