(concord-turtle-insert-object): New function.
authorMORIOKA Tomohiko <tomo.git@chise.org>
Fri, 14 Dec 2018 06:36:36 +0000 (15:36 +0900)
committerMORIOKA Tomohiko <tomo.git@chise.org>
Fri, 14 Dec 2018 06:36:36 +0000 (15:36 +0900)
(concord-turtle-insert-decomposition): New function.
(concord-turtle-insert-relations): Use `concord-turtle-insert-object'.
(concord-turtle-insert-target-value): Use
`concord-turtle-insert-decomposition' for `=decomposition' instead of
`concord-turtle-insert-relations'.

concord-turtle-dump.el

index f6f0b5e..f2cedaa 100644 (file)
     (insert " ;")
     'with-separator))
 
+(defun concord-turtle-insert-object (cell &optional readable)
+  (if (integerp cell)
+      (setq cell (decode-char '=ucs cell)))
+  (cond
+   ((characterp cell)
+    (insert (format "%-20s" (chise-turtle-encode-char cell)))
+    nil)
+   ((concord-object-p cell)
+    (insert (format "%-20s" (concord-turtle-encode-object cell)))
+    nil)
+   (t
+    (concord-turtle-insert-char-ref cell '<-formed)
+    )))
+
+(defun concord-turtle-insert-decomposition (value &optional readable)
+  (let ((lbs (concat "\n" (make-string (current-column) ?\ )))
+       base vs lb)
+    (if (characterp value)
+       (setq value (list value)))
+    (if (setq base (pop value))
+       (cond ((setq vs (pop value))
+              (insert "[ :base ")
+              (setq lb (concord-turtle-insert-object base readable))
+              (insert " ;")
+              (insert lbs)
+              (insert "  :vs   ")
+              (setq lb (concord-turtle-insert-object vs readable))
+              (insert lbs)
+              (insert "]")
+              nil)
+             (t
+              (setq lb (concord-turtle-insert-object base readable))
+              ))
+      )))
+
 (defun concord-turtle-insert-relations (value &optional readable)
   (let ((lbs (concat "\n" (make-string (current-column) ?\ )))
        separator cell)
        (setq value (list value)))
     (while (consp value)
       (setq cell (car value))
-      (if (integerp cell)
-         (setq cell (decode-char '=ucs cell)))
+      ;; (if (integerp cell)
+      ;;     (setq cell (decode-char '=ucs cell)))
       (if separator
          (insert separator)
        (setq separator (format " ,%s" lbs)))
-      (cond
-       ((characterp cell)
-       (insert (format "%-20s" (chise-turtle-encode-char cell)))
-       )
-       ((concord-object-p cell)
-       (insert (format "%-20s" (concord-turtle-encode-object cell)))
-       )
-       (t
-       (concord-turtle-insert-char-ref cell '<-formed)))
+      ;; (cond
+      ;;  ((characterp cell)
+      ;;   (insert (format "%-20s" (chise-turtle-encode-char cell)))
+      ;;   )
+      ;;  ((concord-object-p cell)
+      ;;   (insert (format "%-20s" (concord-turtle-encode-object cell)))
+      ;;   )
+      ;;  (t
+      ;;   (concord-turtle-insert-char-ref cell '<-formed)))
+      (concord-turtle-insert-object cell readable)
       (setq value (cdr value)))
     nil))
 
   (cond ((eq feature-name-base 'ideographic-radical)
         (concord-turtle-insert-radical value)
         )
+       ((eq feature-name-base '=decomposition)
+        (concord-turtle-insert-decomposition value readable)
+        )
        ((or (eq feature-name-base 'ideographic-combination)
-            (eq feature-name-base '=decomposition)
             (eq feature-name-base '<-formed)
             (string-match "^\\(->\\|<-\\)[^*]*$" (symbol-name feature-name-base)))
         (concord-turtle-insert-relations value readable)