Revision: 7242
Author:   deton.kih
Date:     Mon Jul 25 15:14:10 2011
Log:      * scm/tutcode-bushu.scm
  - (tutcode-bushu-help-load):
Support bushu.help file that has two or more bushu composition at a line.

http://code.google.com/p/uim/source/detail?r=7242

Modified:
 /trunk/scm/tutcode-bushu.scm

=======================================
--- /trunk/scm/tutcode-bushu.scm        Mon Jul 25 15:11:13 2011
+++ /trunk/scm/tutcode-bushu.scm        Mon Jul 25 15:14:10 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)

Reply via email to