diff options
author | Simon Josefsson <jas@extundo.com> | 2002-05-25 22:57:08 +0000 |
---|---|---|
committer | Simon Josefsson <jas@extundo.com> | 2002-05-25 22:57:08 +0000 |
commit | 280b8e5990d077b6152965d9f180bdd8ff1c29c0 (patch) | |
tree | 8d1ef679b388340769c74d12dad9a0e30e76824b | |
parent | 3ce79cf5550fd9d616039dfe79ad8b07624f9a5a (diff) | |
download | emacs-280b8e5990d077b6152965d9f180bdd8ff1c29c0.tar.gz |
(rot13-translate-table): New variable.
(rot13, rot13-string, rot13-region): New functions.
-rw-r--r-- | lisp/ChangeLog | 5 | ||||
-rw-r--r-- | lisp/rot13.el | 44 |
2 files changed, 47 insertions, 2 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 97e775e9867..4972523657a 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2002-05-24 Simon Josefsson <jas@extundo.com> + + * rot13.el (rot13-translate-table): New variable. + (rot13, rot13-string, rot13-region): New functions. + 2002-05-25 Martin Stjernholm <bug-cc-mode@gnu.org> * progmodes/cc-engine.el (c-add-stmt-syntax): Fixed some cases diff --git a/lisp/rot13.el b/lisp/rot13.el index fcb349c03e5..2c82a82c226 100644 --- a/lisp/rot13.el +++ b/lisp/rot13.el @@ -1,6 +1,6 @@ ;;; rot13.el --- display a buffer in rot13 -;; Copyright (C) 1988 Free Software Foundation, Inc. +;; Copyright (C) 1988,2002 Free Software Foundation, Inc. ;; Author: Howard Gayle ;; Maintainer: FSF @@ -24,7 +24,7 @@ ;;; Commentary: -;; The single entry point, `rot13-other-window', performs a Caesar cipher +;; The entry point, `rot13-other-window', performs a Caesar cipher ;; encrypt/decrypt on the current buffer and displays the result in another ;; window. Rot13 encryption is sometimes used on USENET as a read-at-your- ;; own-risk wrapper for material some might consider offensive, such as @@ -32,6 +32,10 @@ ;; ;; Written by Howard Gayle. ;; This hack is mainly to show off the char table stuff. +;; +;; New entry points, `rot13', `rot13-string', and `rot13-region' that +;; performs Ceasar cipher encrypt/decrypt on buffers and strings, was +;; added by Simon Josefsson. ;;; Code: @@ -45,6 +49,42 @@ table) "Char table for rot 13 display.") +(defvar rot13-translate-table + (let ((str (make-string 127 0)) + (i 0)) + (while (< i 127) + (aset str i i) + (setq i (1+ i))) + (setq i 0) + (while (< i 26) + (aset str (+ i ?a) (+ (% (+ i 13) 26) ?a)) + (aset str (+ i ?A) (+ (% (+ i 13) 26) ?A)) + (setq i (1+ i))) + str) + "String table for rot 13 translation.") + +;;;###autoload +(defun rot13 (object &optional start end) + "Return Rot13 encryption of OBJECT, a buffer or string." + (if (bufferp object) + (with-current-buffer object + (rot13-region start end)) + (rot13-string object))) + +;;;###autoload +(defun rot13-string (string) + "Return Rot13 encryption of STRING." + (with-temp-buffer + (insert string) + (rot13-region (point-min) (point-max)) + (buffer-string))) + +;;;###autoload +(defun rot13-region (start end) + "Rot13 encrypt the region between START and END in current buffer." + (interactive "r") + (translate-region start end rot13-translate-table)) + ;;;###autoload (defun rot13-other-window () "Display current buffer in rot 13 in another window. |