changeset 2320:ee096523431c

Modified to use cookie.el
author Eric S. Raymond <esr@snark.thyrsus.com>
date Mon, 22 Mar 1993 22:44:49 +0000
parents d98c49df2acd
children 63128ec90cfe
files lisp/play/spook.el lisp/play/yow.el
diffstat 2 files changed, 24 insertions(+), 102 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/play/spook.el	Mon Mar 22 22:44:33 1993 +0000
+++ b/lisp/play/spook.el	Mon Mar 22 22:44:49 1993 +0000
@@ -24,17 +24,11 @@
 
 ;;; Commentary:
 
-; Steve Strassmann (straz@media-lab.media.mit.edu) didn't write
+; Steve Strassmann <straz@media-lab.media.mit.edu> didn't write
 ; this, and even if he did, he really didn't mean for you to use it
 ; in an anarchistic way.
 ;
 ; To use this:
-;  Make sure you have the variable SPOOK-PHRASES-FILE pointing to 
-;  a valid phrase file. Phrase files are in the same format as
-;  zippy's yow.lines (ITS-style LINS format). 
-;  Strings are terminated by ascii 0 characters. Leading whitespace ignored.
-;  Everything up to the first \000 is a comment.
-;
 ;  Just before sending mail, do M-x spook.
 ;  A number of phrases will be inserted into your buffer, to help
 ;  give your message that extra bit of attractiveness for automated
@@ -42,6 +36,8 @@
 
 ;;; Code:
 
+(require 'cookie)
+
 ; Variables
 (defvar spook-phrases-file (concat data-directory "spook.lines")
    "Keep your favorite phrases here.")
@@ -49,71 +45,17 @@
 (defvar spook-phrase-default-count 15
    "Default number of phrases to insert")
 
-(defvar spook-vector nil
-  "Important phrases for NSA mail-watchers")
-
-; Randomize the seed in the random number generator.
-(random t)
-
-; Call this with M-x spook.
 ;;;###autoload
 (defun spook ()
   "Adds that special touch of class to your outgoing mail."
   (interactive)
-  (if (null spook-vector)
-      (setq spook-vector (snarf-spooks)))
-  (shuffle-vector spook-vector)
-  (let ((start (point)))
-    (insert ?\n)
-    (spook1 (min (- (length spook-vector) 1) spook-phrase-default-count))
-    (insert ?\n)
-    (fill-region-as-paragraph start (point) nil)))
-
-(defun spook1 (arg)
-  "Inserts a spook phrase ARG times."
-  (cond ((zerop arg) t)
-	(t (insert (aref spook-vector arg))
-	   (insert " ")
-	   (spook1 (1- arg)))))
+  (cookie-insert
+   spook-phrases-file
+   spook-phrase-default-count
+   "Checking authorization"
+   "Checking authorization...Approved"))
 
-(defun snarf-spooks ()
-  "Reads in the phrase file"
-  (message "Checking authorization...")
-  (save-excursion
-    (let ((buf (generate-new-buffer "*spook*"))
-	  (result '()))
-      (set-buffer buf)
-      (insert-file-contents (expand-file-name spook-phrases-file))
-      (search-forward "\0")
-      (while (progn (skip-chars-forward " \t\n\r\f") (not (eobp)))
-	(let ((beg (point)))
-	  (search-forward "\0")
-	  (setq result (cons (buffer-substring beg (1- (point)))
-			     result))))
-      (kill-buffer buf)
-      (message "Checking authorization... Approved.")
-      (setq spook-vector (apply 'vector result)))))
-
-(defun pick-random (n)
-  "Returns a random number from 0 to N-1 inclusive."
-  (% (logand 0777777 (random)) n))
-
-; Thanks to Ian G Batten <BattenIG@CS.BHAM.AC.UK>
-; [of the University of Birmingham Computer Science Department]
-; for the iterative version of this shuffle.
-;
-(defun shuffle-vector (vector)
-  "Randomly permute the elements of VECTOR (all permutations equally likely)"
-  (let ((i 0)
-	j
-	temp
-	(len (length vector)))
-    (while (< i len)
-      (setq j (+ i (pick-random (- len i))))
-      (setq temp (aref vector i))
-      (aset vector i (aref vector j))
-      (aset vector j temp)
-      (setq i (1+ i))))
-  vector)
+;; Note: the implementation that used to take up most of this file has
+;; been cleaned up and generalized and now resides in cookie.el.
 
 ;;; spook.el ends here
--- a/lisp/play/yow.el	Mon Mar 22 22:44:33 1993 +0000
+++ b/lisp/play/yow.el	Mon Mar 22 22:44:49 1993 +0000
@@ -1,6 +1,6 @@
 ;;; yow.el --- generate random zippyisms
 
-;; Copyright (C) 1985, 1987 Free Software Foundation, Inc.
+;; Copyright (C) 1993 Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 ;; Keywords: games
@@ -24,25 +24,24 @@
 ;;; Commentary:
 
 ;; Important pinheaddery for GNU Emacs.
-;; Expects file emacs/etc/yow.lines to be in ITS-style LINS format
-;;  (ie strings terminated by ascii 0 characters.  Leading whitespace ignored)
-;; Everything up to the first \000 is a comment.
+;;
+;; See cookie.el for implementation.  Note --- the `n' argument of yow
+;; from the 18.xx implementation is no longer; we only support *random*
+;; random access now.
 
 ;;; Code:
 
-; Randomize the seed in the random number generator.
-(random t)
+(require 'cookie)
+
+(defvar yow-file (concat data-directory "yow.lines")
+   "Pertinent pinhead phrases.")
 
 ;;;###autoload
-(defun yow (&optional n interactive)
-  "Return or display a Zippy quotation."
-  (interactive "P\np")
-  (if (null yow-vector)
-      (setq yow-vector (snarf-yows)))
-  (cond (n (setq n (prefix-numeric-value n)))
-	((>= (setq n (random (length yow-vector))) 0))
-	(t (setq n (- n))))
-  (let ((yow (aref yow-vector n)))
+(defun yow (&optional interactive)
+  "Return or display a random Zippy quotation."
+  (interactive "P")
+  (let ((yow (cookie
+	      yow-file "Am I CONSING yet?..." "I have SEEN the CONSING!!")))
     (cond ((not interactive)
 	   yow)
 	  ((not (string-match "\n" yow))
@@ -53,25 +52,6 @@
 	   (with-output-to-temp-buffer "*Help*"
 	     (princ yow))))))
 
-(defvar yow-vector nil "Pertinent pinhead statements")
-(defun snarf-yows (&optional file)
-  (save-excursion
-    (let ((buf (generate-new-buffer " yow"))
-	  (result '())
-	  (cursor-in-echo-area t))
-      (message "Am I CONSING yet?...")
-      (set-buffer buf)
-      (insert-file-contents (or file
-				(expand-file-name "yow.lines" data-directory)))
-      (search-forward "\0")
-      (while (progn (skip-chars-forward " \t\n\r\f") (not (eobp)))
-	(let ((beg (point)))
-	  (search-forward "\0")
-	  (setq result (cons (buffer-substring beg (1- (point)))
-			     result))))
-      (kill-buffer buf)
-      (message "I have SEEN the CONSING!!" (length result))
-      (apply 'vector (nreverse result)))))
 
 ; Yowza!! Feed zippy quotes to the doctor. Watch results.
 ; fun, fun, fun. Entertainment for hours...