Revision: 7243
Author:   deton.kih
Date:     Mon Jul 25 15:16:32 2011
Log:      * Merge r7241,r7242 from trunk.
http://code.google.com/p/uim/source/detail?r=7243

Modified:
 /branches/1.7/scm/tutcode-bushu.scm

=======================================
--- /branches/1.7/scm/tutcode-bushu.scm Fri Jul 22 18:33:56 2011
+++ /branches/1.7/scm/tutcode-bushu.scm Mon Jul 25 15:16:32 2011
@@ -440,24 +440,34 @@
           (file-open-flags-number '($O_RDONLY)) 0))
      (parse
       (lambda (line)
-        ;; Îã: "ëÚ¸ÀÁè*"¢ª(((("¸À" "Áè"))("ëÚ"))((("Áè" "¸À"))("ëÚ")))
+        ;; Îã: "Ñ£¥¤Àì* ÅÁ¡¦"
+        ;; ¢ª(((("¥¤" "Àì"))("Ñ£"))((("Àì" "¥¤"))("Ñ£"))((("ÅÁ" "¡¦"))("Ñ£")))
         (let*
-          ((lst (tutcode-bushu-parse-entry line))
-           (len (length lst)))
-          (if (< len 3)
-            ()
-            (let*
-              ((kanji (list-ref lst 0))
-               (bushu1 (list-ref lst 1))
-               (bushu2 (list-ref lst 2))
-               (rule (list (list (list bushu1 bushu2)) (list kanji)))
-               (rev
-                (and
-                  (and (> len 3) (string=? (list-ref lst 3) "*"))
-                  (list (list (list bushu2 bushu1)) (list kanji)))))
-              (if rev
-                (list rule rev)
-                (list rule)))))))
+          ((comps (string-split line " "))
+           (kanji-lcomps (map tutcode-bushu-parse-entry comps))
+           (kanji (and (pair? (car kanji-lcomps)) (caar kanji-lcomps)))
+ ;; ¹ÔƬ¤Î¹çÀ®¸å¤Î´Á»ú¤ò½ü¤¤¤¿¥ê¥¹¥È¡£Îã:(("¥¤" "Àì" "*")("ÅÁ" "¡¦"))
+           (lcomps
+            (if kanji
+              (cons (cdar kanji-lcomps) (cdr kanji-lcomps))
+              ())))
+          (append-map!
+            (lambda (elem)
+              (let ((len (length elem)))
+                (if (< len 2)
+                  ()
+                  (let*
+                    ((bushu1 (list-ref elem 0))
+                     (bushu2 (list-ref elem 1))
+                     (rule (list (list (list bushu1 bushu2)) (list kanji)))
+                     (rev
+                      (and
+                        (and (>= len 3) (string=? (list-ref elem 2) "*"))
+                        (list (list (list bushu2 bushu1)) (list kanji)))))
+                    (if rev
+                      (list rule rev)
+                      (list rule))))))
+            lcomps))))
      (res
       (call-with-open-file-port fd
         (lambda (port)
@@ -472,23 +482,23 @@

 ;;; bushu.help¥Õ¥¡¥¤¥ë¤Ë´ð¤Å¤¯Éô¼ó¹çÀ®¤ò¹Ô¤¦
 (define (tutcode-bushu-compose-explicitly char-list)
-  (if (or (null? char-list)
-          (null? (cdr char-list)) ; 1ʸ»ú
-          (pair? (cddr char-list))) ; 3ʸ»ú°Ê¾å
+  (if (null? tutcode-bushu-help)
+    (set! tutcode-bushu-help (tutcode-bushu-help-load)))
+  (if (not tutcode-bushu-help)
     ()
-    ;; 2ʸ»ú¤Î¹çÀ®¤Î¤ßÂбþ
-    (let*
-      ((c1 (car char-list))
-       (c2 (cadr char-list)))
-      (if (null? tutcode-bushu-help)
-        (set! tutcode-bushu-help (tutcode-bushu-help-load)))
-      (let
-        ((kanji
-          (and tutcode-bushu-help
-               (tutcode-bushu-compose c1 c2 tutcode-bushu-help))))
-        (if kanji
-          (list kanji)
-          ())))))
+    (cond
+      ((null? char-list)
+        ())
+      ((null? (cdr char-list)) ; 1ʸ»ú
+        (map (lambda (elem) (caadr elem))
+          (rk-lib-find-partial-seqs char-list tutcode-bushu-help)))
+      ((pair? (cddr char-list)) ; 3ʸ»ú°Ê¾å
+        ())
+      (else ; 2ʸ»ú
+        (let ((seq (rk-lib-find-seq char-list tutcode-bushu-help)))
+          (if seq
+            (cadr seq)
+            ()))))))

 ;;; ÂÐÏÃŪ¤ÊÉô¼ó¹çÀ®ÊÑ´¹ÍѤˡ¢»ØÄꤵ¤ì¤¿Éô¼ó¤Î¥ê¥¹¥È¤«¤éÉô¼ó¹çÀ®²Äǽ¤Ê
 ;;; ´Á»ú¤Î¥ê¥¹¥È¤òÊÖ¤¹¡£

Reply via email to