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'