emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r103570: morse.el additions from bug#


From: Glenn Morris
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r103570: morse.el additions from bug#2288.
Date: Sun, 06 Mar 2011 23:33:11 -0800
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 103570
author: Aaron S. Hawley <address@hidden>
committer: Glenn Morris <address@hidden>
branch nick: trunk
timestamp: Sun 2011-03-06 23:33:11 -0800
message:
  morse.el additions from bug#2288.
  
  * lisp/play/morse.el (nato-alphabet, nato-region, denato-region):
  New variable and functions.
modified:
  lisp/ChangeLog
  lisp/play/morse.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2011-03-06 20:55:52 +0000
+++ b/lisp/ChangeLog    2011-03-07 07:33:11 +0000
@@ -1,3 +1,8 @@
+2011-03-07  Aaron S. Hawley  <address@hidden>
+
+       * play/morse.el (nato-alphabet, nato-region, denato-region):
+       New variable and functions.  (Bug#2288)
+
 2011-03-06  Stefan Monnier  <address@hidden>
 
        * progmodes/gud.el (gdb-script-syntax-propertize-function):

=== modified file 'lisp/play/morse.el'
--- a/lisp/play/morse.el        2011-01-25 04:08:28 +0000
+++ b/lisp/play/morse.el        2011-03-07 07:33:11 +0000
@@ -25,6 +25,9 @@
 ;; Converts text to Morse code and back with M-x morse-region and
 ;; M-x unmorse-region (though Morse code is no longer official :-().
 
+;; Converts text to NATO phonetic alphabet and back with M-x
+;; nato-region and M-x denato-region.
+
 ;;; Code:
 
 (defvar morse-code '(("a" . ".-")
@@ -91,6 +94,60 @@
                     ("@" . ".--.-."))
   "Morse code character set.")
 
+(defvar nato-alphabet '(("a" . "Alfa")
+                       ("b" . "Bravo")
+                       ("c" . "Charlie")
+                       ("d" . "Delta")
+                       ("e" . "Echo")
+                       ("f" . "Foxtrot")
+                       ("g" . "Golf")
+                       ("h" . "Hotel")
+                       ("i" . "India")
+                       ("j" . "Juliett")
+                       ("k" . "Kilo")
+                       ("l" . "Lima")
+                       ("m" . "Mike")
+                       ("n" . "November")
+                       ("o" . "Oscar")
+                       ("p" . "Papa")
+                       ("q" . "Quebec")
+                       ("r" . "Romeo")
+                       ("s" . "Sierra")
+                       ("t" . "Tango")
+                       ("u" . "Uniform")
+                       ("v" . "Victor")
+                       ("w" . "Whiskey")
+                       ("x" . "Xray")
+                       ("y" . "Yankee")
+                       ("z" . "Zulu")
+                       ;; Numbers
+                       ("0" . "Zero")
+                       ("1" . "One")
+                       ("2" . "Two")
+                       ("3" . "Three")
+                       ("4" . "Four")
+                       ("5" . "Five")
+                       ("6" . "Six")
+                       ("7" . "Seven")
+                       ("8" . "Eight")
+                       ("9" . "Niner")
+                       ;; Punctuation is not part of standard
+                       ("=" . "Equals")
+                       ("?" . "Query")
+                       ("/" . "Slash")
+                       ("," . "Comma")
+                       ("." . "Stop")
+                       (":" . "Colon")
+                       ("'" . "Apostrophe")
+                       ("-" . "Dash")
+                       ("(" . "Open")
+                       (")" . "Close")
+                       ("@" . "At"))
+  "NATO phonetic alphabet.
+See ''International Code of Signals'' (INTERCO), United States
+Edition, 1969 Edition (Revised 2003) available from National
+Geospatial-Intelligence Agency at http://www.nga.mil/";)
+
 ;;;###autoload
 (defun morse-region (beg end)
   "Convert all text in a given region to morse code."
@@ -136,6 +193,53 @@
            (if (looking-at "/")
                (delete-char 1))))))))
 
+;;;###autoload
+(defun nato-region (beg end)
+  "Convert all text in a given region to NATO phonetic alphabet."
+  ;; Copied from morse-region. -- ashawley 2009-02-10
+  (interactive "*r")
+  (if (integerp end)
+      (setq end (copy-marker end)))
+  (save-excursion
+    (let ((sep "")
+         str nato)
+      (goto-char beg)
+      (while (< (point) end)
+       (setq str (downcase (buffer-substring (point) (1+ (point)))))
+       (cond ((looking-at "\\s-+")
+              (goto-char (match-end 0))
+              (setq sep ""))
+             ((setq nato (assoc str nato-alphabet))
+              (delete-char 1)
+              (insert sep (cdr nato))
+              (setq sep "-"))
+             (t
+              (forward-char 1)
+              (setq sep "")))))))
+
+;;;###autoload
+(defun denato-region (beg end)
+  "Convert NATO phonetic alphabet in region to ordinary ASCII text."
+  ;; Copied from unmorse-region. -- ashawley 2009-02-10
+  (interactive "*r")
+  (if (integerp end)
+      (setq end (copy-marker end)))
+  (save-excursion
+    (let (str paren nato)
+      (goto-char beg)
+      (while (< (point) end)
+       (if (null (looking-at "[a-z]+"))
+           (forward-char 1)
+         (setq str (buffer-substring (match-beginning 0) (match-end 0)))
+         (if (null (setq nato (rassoc str nato-alphabet)))
+             (goto-char (match-end 0))
+           (replace-match
+                 (if (string-equal "(" (car nato))
+                     (if (setq paren (null paren)) "(" ")")
+                   (car nato)) t)
+           (if (looking-at "-")
+               (delete-char 1))))))))
+
 (provide 'morse)
 
 ;;; morse.el ends here


reply via email to

[Prev in Thread] Current Thread [Next in Thread]