89 lines
2.3 KiB
VB.net
89 lines
2.3 KiB
VB.net
option explicit
|
|
|
|
function iif(c,t,f) if c then iif=t else iif=f end if: end function
|
|
function usrin(pr) wscript.stdout.write vbcrlf &pr &": ":usrin= wscript.stdin.readline:end function
|
|
|
|
sub do_abbrev
|
|
dim j, sm,n,n0,a
|
|
for each j in m
|
|
sm=trim(lcase(j.submatches(0)))
|
|
n0=iif (j.submatches(1)="",1, j.submatches(1))
|
|
n=1
|
|
do
|
|
a=left(sm,n)
|
|
if not d.exists(a) then
|
|
d.add a,sm
|
|
else
|
|
if len(a)=len(sm) then
|
|
d(a)=sm
|
|
elseif len(d(a))>len(a) then
|
|
d(a)=null
|
|
end if
|
|
end if
|
|
n=n+1
|
|
loop until n>len(sm)
|
|
next
|
|
end sub
|
|
'output sorted
|
|
|
|
sub display
|
|
dim d2,k,j,kk,mm
|
|
set d2=createobject("Scripting.dictionary")
|
|
for each k in d
|
|
kk=d(k)
|
|
if not isnull(kk) then
|
|
if not d2.exists(kk) then
|
|
d2.add kk,k
|
|
else
|
|
d2(kk)= d2(kk) & " " & k
|
|
end if
|
|
end if
|
|
next
|
|
for each j in m
|
|
mm=trim(lcase(j.submatches(0)))
|
|
wscript.echo left(mm&space(15),15),d2(mm)
|
|
next
|
|
wscript.echo
|
|
set d2=nothing
|
|
end sub
|
|
|
|
sub test
|
|
wscript.echo vbcrlf&"test:"
|
|
dim a,i,k,s1
|
|
do
|
|
s1= lcase(usrin("Command?"))
|
|
if trim(s1)="" then wscript.quit
|
|
a=split(trim(s1)," ")
|
|
for i=0 to ubound(a)
|
|
if a(i)<>"" then
|
|
wscript.stdout.write iif (d.exists(a(i)), ucase(d(a(i)))," **ERROR**")& " "
|
|
end if
|
|
next
|
|
loop
|
|
end sub
|
|
|
|
'main program
|
|
dim s:s=_
|
|
"add 1 alter 3 backup 2 bottom 1 Cappend 2 change 1 Schange Cinsert 2 Clast 3 "&_
|
|
"compress 4 copy 2 count 3 Coverlay 3 cursor 3 delete 3 Cdelete 2 down 1 duplicate "&_
|
|
"3 xEdit 1 expand 3 extract 3 find 1 Nfind 2 Nfindup 6 NfUP 3 Cfind 2 findUP 3 fUP 2 "&_
|
|
"forward 2 get help 1 hexType 4 input 1 powerInput 3 join 1 split 2 spltJOIN load "&_
|
|
"locate 1 Clocate 2 lowerCase 3 upperCase 3 Lprefix 2 macro merge 2 modify 3 move 2 "&_
|
|
"msg next 1 overlay 1 parse preserve 4 purge 3 put putD query 1 quit read recover 3 "&_
|
|
"refresh renum 3 repeat 3 replace 1 Creplace 2 reset 3 restore 4 rgtLEFT right 2 left "&_
|
|
"2 save set shift 2 si sort sos stack 3 status 4 top transfer 3 type 1 up 1 "
|
|
dim m,d
|
|
|
|
'use regexp to separate input
|
|
with new regexp
|
|
.pattern="([a-z]+?)\s+(\d?)"
|
|
.global=true
|
|
.ignorecase=true
|
|
set m=.execute(s)
|
|
end with
|
|
|
|
set d=createobject("Scripting.dictionary")
|
|
do_abbrev
|
|
'display
|
|
test
|