91 lines
5.2 KiB
Plaintext
91 lines
5.2 KiB
Plaintext
The use of abbreviations (also sometimes called synonyms, nicknames, AKAs, or aliases) can be an
|
|
<br>easy way to add flexibility when specifying or using commands, sub─commands, options, etc.
|
|
|
|
<!--
|
|
(AKA = also known as)
|
|
!-->
|
|
|
|
For this task, the following ''command table'' will be used:
|
|
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
|
|
|
|
<!--
|
|
The unsorted list (above) was constructed to help ensure that program entries don't get tripped up by performing a straight left-to-right string comparison.
|
|
!-->
|
|
|
|
<!--
|
|
For the curious amongst you (and pack-rats of old publications, this is an old XEDIT command table; the sub-commands were extracted from:
|
|
Virtual Machine/
|
|
System Product
|
|
|
|
System Product
|
|
SP Editor
|
|
Command
|
|
Language
|
|
Reference
|
|
Summary
|
|
|
|
Release 4
|
|
|
|
SX24-5122-3
|
|
|
|
|
|
|
|
Fourth Edition (December 1984)
|
|
|
|
Information herein is extracted from
|
|
Virtual Machine/System Product System Product Editor Command and Macro Reference, SC24-5221.
|
|
|
|
|
|
This old version does not have some of the newer commands like QQuit and PQUIT, for instance,
|
|
and those commands that deal with DBCS (double-byte character set).
|
|
!-->
|
|
|
|
Notes concerning the above ''command table'':
|
|
::* it can be thought of as one long literal string (with blanks at end-of-lines)
|
|
::* it may have superfluous blanks
|
|
::* it may be in any case (lower/upper/mixed)
|
|
::* the order of the words in the ''command table'' must be preserved as shown
|
|
::* the user input(s) may be in any case (upper/lower/mixed)
|
|
::* commands will be restricted to the Latin alphabet (A ──► Z, a ──► z)
|
|
::* a command is followed by an optional number, which indicates the minimum abbreviation
|
|
::* A valid abbreviation is a word that has:
|
|
:::* at least the minimum length of the word's minimum number in the ''command table''
|
|
:::* compares equal (regardless of case) to the leading characters of the word in the ''command table''
|
|
:::* a length <u>not</u> longer than the word in the ''command table''
|
|
::::* '''ALT''', '''aLt''', '''ALTE''', and '''ALTER''' are all abbreviations of '''ALTER 3'''
|
|
::::* '''AL''', '''ALF''', '''ALTERS''', '''TER''', and '''A''' <u>aren't</u> valid abbreviations of '''ALTER 3'''
|
|
::::* The '''3''' indicates that any abbreviation for '''ALTER''' must be at least three characters
|
|
::::* Any word longer than five characters <u>can't</u> be an abbreviation for '''ALTER'''
|
|
::::* '''o''', '''ov''', '''oVe''', '''over''', '''overL''', '''overla''' are all acceptable abbreviations for '''overlay 1'''
|
|
::* if there isn't a number after the command, then there isn't an abbreviation permitted
|
|
|
|
<!--
|
|
::* a Latin alphabet is used for this Rosetta Code task because it behaves well when letters are uppercased
|
|
!-->
|
|
|
|
;Task:
|
|
::* The command table needn't be verified/validated.
|
|
::* Write a function to validate if the user "words" (given as input) are valid (in the ''command table'').
|
|
::* If the word is valid, then return the full uppercase version of that "word".
|
|
::* If the word isn't valid, then return the lowercase string: <big> '''*error*''' </big> (7 characters).
|
|
::* A blank input (or a null input) should return a null string.
|
|
::* Show all output here.
|
|
|
|
|
|
;An example test case to be used for this task:
|
|
For a user string of:
|
|
riG rePEAT copies put mo rest types fup. 6 poweRin
|
|
the computer program should return the string:
|
|
RIGHT REPEAT *error* PUT MOVE RESTORE *error* *error* *error* POWERINPUT
|
|
|
|
{{Template:Strings}}
|
|
<br><br>
|
|
|