CmdLineOption.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 17 Jun 2009 12:47:57 +0100
branchjv
changeset 17714 0d64723fe7f5
child 17766 0acf634e6550
permissions -rw-r--r--
Added classes for command line parsing
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
17714
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:libbasic' }"
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
Object subclass:#CmdLineOption
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
	instanceVariableNames:'action description short long'
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
	classVariableNames:''
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	poolDictionaries:''
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	category:'System-Support-Command line'
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
!
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
!CmdLineOption methodsFor:'accessing'!
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
action
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
    ^ action
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
    "Created: / 28-01-2009 / 11:49:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
!
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
action:aBlockOrMessageSend
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
    aBlockOrMessageSend numArgs > 1 ifTrue:
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
        [CmdLineOptionError raiseErrorString: 'Action must be zero-or-one arg block/message send'].    
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
    action := aBlockOrMessageSend.
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
    "Created: / 28-01-2009 / 11:49:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
    "Modified: / 16-06-2009 / 15:46:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
!
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
description
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
    ^ description
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
    "Created: / 28-01-2009 / 11:49:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
!
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
description:aString
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
    description := aString.
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
    "Created: / 28-01-2009 / 11:49:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
!
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
long
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
    ^ long
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
!
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
long:aString
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
    long := aString.
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
!
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
short
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
    ^ short
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
!
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
short:aCharacterOrString
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
    (aCharacterOrString isCharacter 
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
        and:[aCharacterOrString isAlphaNumeric])
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
            ifTrue:[short := aCharacterOrString]
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
            ifFalse:[self error: 'short option name should be alphanumeric character']
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
    "Modified: / 29-05-2009 / 16:05:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
! !
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
!CmdLineOption methodsFor:'printing & storing'!
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
printOn: stream
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    super printOn: stream.
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
    stream nextPut:$(.
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
    short ifNotNil:[stream nextPut: $-; nextPut: short].
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
    (short notNil and: [long notNil]) ifTrue:[stream nextPut:$|].
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
    long ifNotNil:[stream nextPut: $-;  nextPut: $-; nextPutAll: long].
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
    stream nextPut:$)
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
    "Created: / 08-06-2009 / 14:48:59 / Jan Vrany <vranyj1@fel.cvut.cz>"
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
! !
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
!CmdLineOption methodsFor:'processing'!
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
process
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
    action value
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
    "Created: / 08-06-2009 / 14:35:01 / Jan Vrany <vranyj1@fel.cvut.cz>"
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
!
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
process: value
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
    action value: value
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
    "Created: / 08-06-2009 / 14:35:08 / Jan Vrany <vranyj1@fel.cvut.cz>"
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
! !
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
!CmdLineOption methodsFor:'queries'!
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
hasParam
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
    ^action numArgs = 1
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
    "Created: / 08-06-2009 / 13:45:41 / Jan Vrany <vranyj1@fel.cvut.cz>"
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
! !
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
!CmdLineOption class methodsFor:'documentation'!
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
version
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
    ^'$Id: CmdLineOption.st 10452 2009-06-17 11:47:57Z vranyj1 $'
0d64723fe7f5 Added classes for command line parsing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
! !