24 lines
609 B
Plaintext
24 lines
609 B
Plaintext
#!/usr/local/bin/slate
|
|
|
|
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]
|
|
].
|
|
|
|
lobby define: #Rot13Encoder &parents: {Encoder}.
|
|
|
|
c@(Rot13Encoder traits) convert
|
|
[
|
|
[c in isAtEnd] whileFalse: [c out nextPut: c in next rot13].
|
|
].
|
|
|
|
(Rot13Encoder newFrom: Console reader to: Console writer) convert.
|