leet.ss
;;;
;;; Time-stamp: <06/01/12 13:43:20 nhw>
;;;
;;; Copyright (C) 2005 by Noel Welsh.
;;;

;;; This library is free software; you can redistribute it
;;; and/or modify it under the terms of the GNU Lesser
;;; General Public License as published by the Free Software
;;; Foundation; either version 2.1 of the License, or (at
;;; your option) any later version.

;;; This library is distributed in the hope that it will be
;;; useful, but WITHOUT ANY WARRANTY; without even the
;;; implied warranty of MERCHANTABILITY or FITNESS FOR A
;;; PARTICULAR PURPOSE.  See the GNU Lesser General Public
;;; License for more details.

;;; You should have received a copy of the GNU Lesser
;;; General Public License along with this library; if not,
;;; write to the Free Software Foundation, Inc., 59 Temple
;;; Place, Suite 330, Boston, MA 02111-1307 USA

;;; Author: Noel Welsh <noelwelsh@yahoo.com>
;;
;;
;; Commentary:

(module leet mzscheme

  (require (lib "string.ss" "srfi" "13"))

  (provide string->leet
           char->leet)

  ;; Clearly there could be more 1337 translations, but
  ;; this will do
  (define (char->leet char)
    (case char
      ((#\A) #\4)
      ((#\c) #\x)
      ((#\C) #\X)
      ((#\e) #\3)
      ((#\I) #\!)
      ((#\i) #\1)
      ((#\o) #\0)
      ((#\s) #\5)
      ((#\S) #\5)
      ((#\t) #\7)
      ((#\u) #\V)
      ((#\y) #\j)
      (else char)))
  
  (define (string->leet input)
    (string-map
     char->leet
     input))

  )