(dump-94x94-ccs-to-ucs-table): Use `encode-char' with `defined-only'
[chise/tomoyo-tools.git] / dump-tables.el
index b694536..7abbd34 100644 (file)
@@ -1,9 +1,9 @@
 ;;; dump-tables.el --- Dump utility of mapping tables
 
-;; Copyright (C) 2002 MORIOKA Tomohiko
+;; Copyright (C) 2002,2003 MORIOKA Tomohiko
 
 ;; Author: MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
-;; Keywords: Ideographs, Character Database, UTF-2000, UCS, Unicode
+;; Keywords: Ideographs, Character Database, CHISE, UCS, Unicode
 
 ;; This file is a part of tomoyo-tools.
 
 
 ;;; Code:
 
-;;;###autoload
-(defun dump-jis-x0208-1990-to-ucs-table (filename)
-  (interactive "Fdump J90-to-UCS : ")
+(defun dump-94x94-ccs-to-ucs-table (filename default-file-name
+                                            ccs ccs-prefix
+                                            ucs-ccs ucs-ccs-prefix)
   (if (file-directory-p filename)
-      (setq filename (expand-file-name "J90-to-UCS.txt" filename)))
+      (setq filename (expand-file-name default-file-name filename)))
   (with-temp-buffer
-    (let ((row 33)
-         cell chr ucs ucs-j)
+    (let ((ucs-ccs-map (intern (format "=>%s" ucs-ccs)))
+         (ccs-format (concat ccs-prefix "%02X%02X"))
+         (ucs-ccs-format (concat "\t" ucs-ccs-prefix "%04X\t"))
+         (row 33)
+         cell chr ucs ucs-l)
       (while (< row 127)
        (setq cell 33)
        (while (< cell 127)
-         (when (and (setq chr (make-char 'japanese-jisx0208-1990 row cell))
-                    (setq ucs (or (get-char-attribute chr 'ucs)
-                                  (get-char-attribute chr '=>ucs)
-                                  (get-char-attribute chr '->ucs))))
-           (setq ucs-j (or (get-char-attribute chr 'ucs-jis)
-                           (get-char-attribute chr '=>ucs-jis)))
-           (insert (format "J90-%02X%02X" row cell))
-           (if (and ucs-j (/= ucs-j ucs))
-               (insert (format "\tJU+%04X\t" ucs-j))
+         (when (and (setq chr (make-char ccs row cell))
+                    (setq ucs (or (encode-char chr 'ucs 'defined-only)
+                                  (get-char-attribute chr '=>ucs))))
+           (setq ucs-l (or (encode-char chr ucs-ccs 'defined-only)
+                           (get-char-attribute chr ucs-ccs-map)))
+           (insert (format ccs-format row cell))
+           (if (and ucs-l (/= ucs-l ucs))
+               (insert (format ucs-ccs-format ucs-l))
              (insert "\t "))
            (insert (format (if (<= ucs #xFFFF)
                                "U+%04X\n"
     (write-region (point-min)(point-max) filename)))
 
 ;;;###autoload
+(defun dump-jis-x0208-1990-to-ucs-table (filename)
+  (interactive "Fdump J90-to-UCS : ")
+  (dump-94x94-ccs-to-ucs-table
+   filename "J90-to-UCS.txt"
+   'japanese-jisx0208-1990 "J90-" 'ucs-jis "JU+"))
+
+;;;###autoload
 (defun dump-jis-x0212-to-ucs-table (filename)
   (interactive "Fdump JSP-to-UCS : ")
-  (if (file-directory-p filename)
-      (setq filename (expand-file-name "JSP-to-UCS.txt" filename)))
-  (with-temp-buffer
-    (let ((row 33)
-         cell chr ucs ucs-j)
-      (while (< row 127)
-       (setq cell 33)
-       (while (< cell 127)
-         (when (and (setq chr (make-char 'japanese-jisx0212 row cell))
-                    (setq ucs (or (get-char-attribute chr 'ucs)
-                                  (get-char-attribute chr '=>ucs)
-                                  (get-char-attribute chr '->ucs))))
-           (setq ucs-j (or (get-char-attribute chr 'ucs-jis)
-                           (get-char-attribute chr '=>ucs-jis)))
-           (insert (format "JSP-%02X%02X" row cell))
-           (if (and ucs-j (/= ucs-j ucs))
-               (insert (format "\tJU+%04X\t" ucs-j))
-             (insert "\t "))
-           (insert (format (if (<= ucs #xFFFF)
-                               "U+%04X\n"
-                             "U-%08X\n")
-                           ucs)))
-         (setq cell (1+ cell)))
-       (setq row (1+ row))))
-    (write-region (point-min)(point-max) filename)))
+  (dump-94x94-ccs-to-ucs-table
+   filename "JSP-to-UCS.txt"
+   'japanese-jisx0212 "JSP-" 'ucs-jis "JU+"))
 
 ;;;###autoload
 (defun dump-jis-x0213-1-to-ucs-table (filename)
        (setq cell 33)
        (while (< cell 127)
          (when (and (setq chr (make-char 'japanese-jisx0213-1 row cell))
-                    (not (encode-char chr 'japanese-jisx0208-1990 t))
-                    (setq ucs (or (get-char-attribute chr 'ucs)
-                                  (get-char-attribute chr '=>ucs)
-                                  (get-char-attribute chr '->ucs))))
-           (setq ucs-j (or (get-char-attribute chr 'ucs-jis)
+                    (not (encode-char chr 'japanese-jisx0208-1990
+                                      'defined-only))
+                    (setq ucs (or (encode-char chr 'ucs 'defined-only)
+                                  (get-char-attribute chr '=>ucs))))
+           (when (setq ucs-j
+                       (or (encode-char chr '=ucs-jis-2000 'defined-only)
                            (get-char-attribute chr '=>ucs-jis)))
+             (if (eq ucs-j ucs)
+                 (setq ucs-j nil)))
            (insert (format "JX1-%02X%02X" row cell))
            (if ucs-j
                (insert (format "\tJU+%04X\t" ucs-j))
 ;;;###autoload
 (defun dump-jis-x0213-2-to-ucs-table (filename)
   (interactive "Fdump JX2-to-UCS : ")
-  (if (file-directory-p filename)
-      (setq filename (expand-file-name "JX2-to-UCS.txt" filename)))
-  (with-temp-buffer
-    (let ((row 33)
-         cell chr ucs ucs-j)
-      (while (< row 127)
-       (setq cell 33)
-       (while (< cell 127)
-         (when (and (setq chr (make-char 'japanese-jisx0213-2 row cell))
-                    (setq ucs (or (get-char-attribute chr 'ucs)
-                                  (get-char-attribute chr '=>ucs)
-                                  (get-char-attribute chr '->ucs))))
-           (setq ucs-j (or (get-char-attribute chr 'ucs-jis)
-                           (get-char-attribute chr '=>ucs-jis)))
-           (insert (format "JX2-%02X%02X" row cell))
-           (if ucs-j
-               (insert (format "\tJU+%04X\t" ucs-j))
-             (insert "\t "))
-           (insert (format (if (<= ucs #xFFFF)
-                               "U+%04X\n"
-                             "U-%08X\n")
-                           ucs)))
-         (setq cell (1+ cell)))
-       (setq row (1+ row))))
-    (write-region (point-min)(point-max) filename)))
+  (dump-94x94-ccs-to-ucs-table
+   filename "JX2-to-UCS.txt"
+   'japanese-jisx0213-2 "JX2-" 'ucs-jis "JU+"))
 
 ;;;###autoload
 (defun dump-cns-11643-3-to-ucs-table (filename)
   (interactive "Fdump C3-to-UCS : ")
-  (if (file-directory-p filename)
-      (setq filename (expand-file-name "C3-to-UCS.txt" filename)))
-  (with-temp-buffer
-    (let ((row 33)
-         cell chr ucs ucs-cns)
-      (while (< row 127)
-       (setq cell 33)
-       (while (< cell 127)
-         (when (and (setq chr (make-char 'chinese-cns11643-3 row cell))
-                    (setq ucs (or (get-char-attribute chr 'ucs)
-                                  (get-char-attribute chr '=>ucs)
-                                  (get-char-attribute chr '->ucs))))
-           (setq ucs-cns (or (get-char-attribute chr 'ucs-cns)
-                             (get-char-attribute chr '=>ucs-cns)))
-           (insert (format "C3-%02X%02X" row cell))
-           (if (and ucs-cns (/= ucs-cns ucs))
-               (insert (format "\tCU+%04X\t" ucs-cns))
-             (insert "\t "))
-           (insert (format (if (<= ucs #xFFFF)
-                               "U+%04X\n"
-                             "U-%08X\n")
-                           ucs)))
-         (setq cell (1+ cell)))
-       (setq row (1+ row))))
-    (write-region (point-min)(point-max) filename)))
+  (dump-94x94-ccs-to-ucs-table
+   filename "C3-to-UCS.txt"
+   'chinese-cns11643-3 "C3-" 'ucs-cns "CU+"))
 
 ;;;###autoload
 (defun dump-cns-11643-4-to-ucs-table (filename)
   (interactive "Fdump C4-to-UCS : ")
-  (if (file-directory-p filename)
-      (setq filename (expand-file-name "C4-to-UCS.txt" filename)))
-  (with-temp-buffer
-    (let ((row 33)
-         cell chr ucs ucs-cns)
-      (while (< row 127)
-       (setq cell 33)
-       (while (< cell 127)
-         (when (and (setq chr (make-char 'chinese-cns11643-4 row cell))
-                    (setq ucs (or (get-char-attribute chr 'ucs)
-                                  (get-char-attribute chr '=>ucs)
-                                  (get-char-attribute chr '->ucs))))
-           (setq ucs-cns (or (get-char-attribute chr 'ucs-cns)
-                             (get-char-attribute chr '=>ucs-cns)))
-           (insert (format "C4-%02X%02X" row cell))
-           (if ucs-cns
-               (insert (format "\tCU+%04X\t" ucs-cns))
-             (insert "\t "))
-           (insert (format (if (<= ucs #xFFFF)
-                               "U+%04X\n"
-                             "U-%08X\n")
-                           ucs)))
-         (setq cell (1+ cell)))
-       (setq row (1+ row))))
-    (write-region (point-min)(point-max) filename)))
+  (dump-94x94-ccs-to-ucs-table
+   filename "C4-to-UCS.txt"
+   'chinese-cns11643-4 "C4-" 'ucs-cns "CU+"))
 
 ;;;###autoload
 (defun dump-big5-to-ucs-table (filename)
        (setq cell #x40)
        (while (< cell #xFE)
          (when (and (setq chr (make-char 'chinese-big5 row cell))
-                    (setq ucs (or (get-char-attribute chr 'ucs)
-                                  (get-char-attribute chr '=>ucs)
-                                  (get-char-attribute chr '->ucs))))
-           (setq ucs-big5 (or (get-char-attribute chr 'ucs-big5)
+                    (setq ucs (or (encode-char chr 'ucs 'defined-only)
+                                  (get-char-attribute chr '=>ucs))))
+           (setq ucs-big5 (or (encode-char chr 'ucs-big5 'defined-only)
                               (get-char-attribute chr '=>ucs-big5)))
            (insert (format "B-%02X%02X" row cell))
            (if ucs-big5
        (setq cell #xA1)
        (while (<= cell #xFE)
          (when (and (setq chr (make-char 'china3-jef row cell))
-                    (setq ucs (or (get-char-attribute chr 'ucs)
+                    (setq ucs (or (encode-char chr 'ucs 'defined-only)
                                   (get-char-attribute chr '=>ucs))))
            (insert (format "JC3-%02X%02X\t" row cell))
            (insert (format (if (<= ucs #xFFFF)
          chr ucs)
       (while (<= i 20000)
        (when (and (setq chr (decode-char 'ideograph-cbeta i))
-                  (setq ucs (or (get-char-attribute chr 'ucs)
+                  (setq ucs (or (encode-char chr 'ucs 'defined-only)
                                 (get-char-attribute chr '=>ucs))))
          (insert (format "CB%05d\t" i))
          (insert (format (if (<= ucs #xFFFF)