23 lines
540 B
Plaintext
23 lines
540 B
Plaintext
ch@(String Character traits) rot13
|
|
[| value |
|
|
upper ::= ch isUppercase.
|
|
value := ch toLowercase as: Integer.
|
|
(value >= 97) /\ [value < 110]
|
|
ifTrue: [value += 13]
|
|
ifFalse: [(value > 109) /\ [value <= 122]
|
|
ifTrue: [value -= 13]].
|
|
upper
|
|
ifTrue: [(value as: String Character) toUppercase]
|
|
ifFalse: [value as: String Character]
|
|
].
|
|
|
|
s@(String traits) rot13
|
|
[
|
|
result ::= s newSameSize.
|
|
s doWithIndex: [| :each :index | result at: index put: each rot13].
|
|
result
|
|
].
|
|
|
|
slate[37]> 'abc123' rot13.
|
|
'nop123'
|