X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=ids.el;h=dc064be2221acecb5f640adf5dad4f5885d435a4;hb=f3c465adb0fd2777e4b5b20728b1ef9213f44588;hp=9948d39ff0a90c6e2da7ed2537c708dcbd2597f5;hpb=0dfc67331e672392326ec8732629fc7d2ce65738;p=chise%2Fids.git diff --git a/ids.el b/ids.el index 9948d39..dc064be 100644 --- a/ids.el +++ b/ids.el @@ -1,6 +1,6 @@ ;;; ids.el --- Parser and utility for Ideographic Description Sequence. -;; Copyright (C) 2001 MORIOKA Tomohiko +;; Copyright (C) 2001,2002 MORIOKA Tomohiko ;; Author: MORIOKA Tomohiko ;; Keywords: IDS, IDC, Ideographs, UCS, Unicode @@ -58,63 +58,69 @@ (cons chr (substring string 1)))))) -(defun ids-parse-component (string) - (let ((ret (ids-parse-element string)) +(defun ids-parse-component (string simplify) + (let ((ret (ids-parse-element string simplify)) rret) (when ret - (if (and (listp (car ret)) + (if (and simplify + (listp (car ret)) (setq rret (ideographic-structure-find-char (cdr (assq 'ideographic-structure (car ret)))))) (cons rret (cdr ret)) ret)))) -(defun ids-parse-element (string) +(defun ids-parse-element (string simplify) (let (ret op arg1 arg2 arg3) (cond ((ids-parse-terminal string)) ((setq ret (ids-parse-op-2 string)) (setq op (car ret)) - (when (setq ret (ids-parse-component (cdr ret))) + (when (setq ret (ids-parse-component (cdr ret) simplify)) (setq arg1 (car ret)) - (when (setq ret (ids-parse-component (cdr ret))) + (when (setq ret (ids-parse-component (cdr ret) simplify)) (setq arg2 (car ret)) (cons (list (list 'ideographic-structure op arg1 arg2)) (cdr ret))))) ((setq ret (ids-parse-op-3 string)) (setq op (car ret)) - (when (setq ret (ids-parse-component (cdr ret))) + (when (setq ret (ids-parse-component (cdr ret) simplify)) (setq arg1 (car ret)) - (when (setq ret (ids-parse-component (cdr ret))) + (when (setq ret (ids-parse-component (cdr ret) simplify)) (setq arg2 (car ret)) - (when (setq ret (ids-parse-component (cdr ret))) + (when (setq ret (ids-parse-component (cdr ret) simplify)) (setq arg3 (car ret)) (cons (list (list 'ideographic-structure op arg1 arg2 arg3)) (cdr ret))))))))) ;;;###autoload -(defun ids-parse-string (string) - (let ((ret (ids-parse-element string))) +(defun ids-parse-string (ids-string &optional simplify) + "Parse IDS-STRING and return the result." + (let ((ret (ids-parse-element ids-string simplify))) (if (= (length (cdr ret)) 0) (car ret)))) -(defun ids-format-unit (ids-char) - (let (ret) - (cond ((characterp ids-char) - (char-to-string ids-char)) - ((integerp ids-char) - (char-to-string (decode-char 'ucs ids-char))) - ((setq ret (find-char ids-char)) - (char-to-string ret)) - ((setq ret (assq 'ideographic-structure ids-char)) - (ids-format-list (cdr ret)))))) - -(defun ids-format-list (ids-list) - (mapconcat (lambda (cell) - (ids-format-unit - (if (char-ref-p cell) - (plist-get cell :char) - cell))) - ids-list "")) +;; (defun ids-format-unit (ids-char) +;; (let (ret) +;; (cond ((characterp ids-char) +;; (char-to-string ids-char)) +;; ((integerp ids-char) +;; (char-to-string (decode-char 'ucs ids-char))) +;; ((setq ret (find-char ids-char)) +;; (char-to-string ret)) +;; ((setq ret (assq 'ideographic-structure ids-char)) +;; (ids-format-list (cdr ret)))))) + +;; ;;;###autoload +;; (defun ids-format-list (ids-list) +;; "Format ideographic-structure IDS-LIST as an IDS-string." +;; (mapconcat (lambda (cell) +;; (ids-format-unit +;; (if (char-ref-p cell) +;; (plist-get cell :char) +;; cell))) +;; ids-list "")) +(define-obsolete-function-alias + 'ids-format-list 'ideographic-structure-to-ids) ;;; @ End. ;;;