33 lines
1.4 KiB
Text
33 lines
1.4 KiB
Text
ClearAll[ct, FunctionMatchQ, ValidFunctionQ, ProcessString]
|
|
ct = "Add ALTer BAckup Bottom CAppend Change SCHANGE CInsert CLAst COMPress COpy
|
|
COUnt COVerlay CURsor DELete CDelete Down DUPlicate Xedit EXPand EXTract Find
|
|
NFind NFINDUp NFUp CFind FINdup FUp FOrward GET Help HEXType Input POWerinput
|
|
Join SPlit SPLTJOIN LOAD Locate CLocate LOWercase UPPercase LPrefix MACRO
|
|
MErge MODify MOve MSG Next Overlay PARSE PREServe PURge PUT PUTD Query QUIT
|
|
READ RECover REFRESH RENum REPeat Replace CReplace RESet RESTore RGTLEFT
|
|
RIght LEft SAVE SET SHift SI SORT SOS STAck STATus TOP TRAnsfer Type Up";
|
|
ct = FixedPoint[StringReplace[{"\n" -> "", Longest[" " ..] -> " "}], ct];
|
|
ct = StringSplit[ct, " "];
|
|
FunctionMatchQ[func_String, test_String] := Module[{min, max, l},
|
|
min = StringCount[func, Alternatives @@ CharacterRange["A", "Z"]];
|
|
max = StringLength[func];
|
|
l = StringLength[test];
|
|
If[min <= l <= max,
|
|
If[StringStartsQ[func, test, IgnoreCase -> True],
|
|
True
|
|
,
|
|
False
|
|
]
|
|
,
|
|
False
|
|
]
|
|
]
|
|
ValidFunctionQ[test_String] := Module[{val},
|
|
val = SelectFirst[ct, FunctionMatchQ[#, test] &, Missing[]];
|
|
If[MissingQ[val], "*error*", ToUpperCase[val]]
|
|
]
|
|
ProcessString[test_String] := Module[{parts},
|
|
parts = StringSplit[test];
|
|
StringRiffle[ValidFunctionQ /@ parts, " "]
|
|
]
|
|
ProcessString["riG rePEAT copies put mo rest types fup. 6 poweRin"]
|