X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=ids.el;fp=ids.el;h=1ae8464d350e5140035694abc9cd7d59a8fc7b96;hb=80a720af50b108d65d75b35b33d5ed49b2fa269e;hp=a8a4182ede31ef93c8c6f5b6fb84b3a107115e17;hpb=035cb6efa6e1f43059879bc61fac1a658ffc992a;p=chise%2Fids.git diff --git a/ids.el b/ids.el index a8a4182..1ae8464 100644 --- a/ids.el +++ b/ids.el @@ -58,42 +58,43 @@ (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 (ids-string) +(defun ids-parse-string (ids-string &optional simplify) "Parse IDS-STRING and return the result." - (let ((ret (ids-parse-element ids-string))) + (let ((ret (ids-parse-element ids-string simplify))) (if (= (length (cdr ret)) 0) (car ret))))