emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/pyim c579cc8 4/5: 添加 pyim-dhashcache-update-shortcode2


From: ELPA Syncer
Subject: [elpa] externals/pyim c579cc8 4/5: 添加 pyim-dhashcache-update-shortcode2word-1
Date: Sun, 12 Dec 2021 22:57:40 -0500 (EST)

branch: externals/pyim
commit c579cc8a55bf4020472e109b5d2b0ac65d01c003
Author: Feng Shu <tumashu@163.com>
Commit: Feng Shu <tumashu@163.com>

    添加 pyim-dhashcache-update-shortcode2word-1
    
        * .gitignore: Ignore temp dcache dir.
    
        * tests/pyim-tests.el 
(pyim-tests-pyim-dhashcache-update-shortcode2word): New test.
    
        * pyim-dhashcache.el (pyim-dhashcache-update-shortcode2word-1): New 
function.
        (pyim-dhashcache-update-shortcode2word): use 
pyim-dhashcache-update-shortcode2word-1.
---
 .gitignore          |  2 ++
 pyim-dhashcache.el  | 56 ++++++++++++++++++++++++++++-------------------------
 tests/pyim-tests.el | 31 +++++++++++++++++++++++++++++
 3 files changed, 63 insertions(+), 26 deletions(-)

diff --git a/.gitignore b/.gitignore
index 25e1d2b..4149ef5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,5 @@ deps/
 *.elc
 /pyim-autoloads.el
 /pyim-pkg.el
+/pyim-dcache-*
+/tests/pyim-dcache-*
\ No newline at end of file
diff --git a/pyim-dhashcache.el b/pyim-dhashcache.el
index e02763a..fe90ebf 100644
--- a/pyim-dhashcache.el
+++ b/pyim-dhashcache.el
@@ -139,35 +139,39 @@
         (require 'pyim-dhashcache)
         (pyim-dcache-set-variable 'pyim-dhashcache-code2word)
         (pyim-dcache-set-variable 'pyim-dhashcache-iword2count)
-        (setq pyim-dhashcache-shortcode2word
-              (make-hash-table :test #'equal))
-        (maphash
-         (lambda (key value)
-           (dolist (x (pyim-dhashcache-get-shortcode key))
-             (puthash x
-                      (mapcar
-                       (lambda (word)
-                         ;; 这个地方的代码用于实现五笔 code 自动提示功能,
-                         ;; 比如输入 'aa' 后得到选词框:
-                         ;; ----------------------
-                         ;; | 1. 莁aa 2.匶wv ... |
-                         ;; ----------------------
-                         (if (get-text-property 0 :comment word)
-                             word
-                           (propertize word :comment (substring key (length 
x)))))
-                       (delete-dups `(,@value ,@(gethash x 
pyim-dhashcache-shortcode2word))))
-                      pyim-dhashcache-shortcode2word)))
-         pyim-dhashcache-code2word)
-        (maphash
-         (lambda (key value)
-           (puthash key (pyim-dhashcache-sort-words value)
-                    pyim-dhashcache-shortcode2word))
-         pyim-dhashcache-shortcode2word)
-        (pyim-dcache-save-variable 'pyim-dhashcache-shortcode2word)
-        nil)
+        (pyim-dhashcache-update-shortcode2word-1))
      (lambda (_)
        (pyim-dcache-set-variable 'pyim-dhashcache-shortcode2word t)))))
 
+(defun pyim-dhashcache-update-shortcode2word-1 ()
+  "`pyim-dhashcache-update-shortcode2word' 的内部函数"
+  (setq pyim-dhashcache-shortcode2word
+        (make-hash-table :test #'equal))
+  (maphash
+   (lambda (key value)
+     (dolist (x (pyim-dhashcache-get-shortcode key))
+       (puthash x
+                (mapcar
+                 (lambda (word)
+                   ;; 这个地方的代码用于实现五笔 code 自动提示功能,
+                   ;; 比如输入 'aa' 后得到选词框:
+                   ;; ----------------------
+                   ;; | 1. 莁aa 2.匶wv ... |
+                   ;; ----------------------
+                   (if (get-text-property 0 :comment word)
+                       word
+                     (propertize word :comment (substring key (length x)))))
+                 (delete-dups `(,@(gethash x pyim-dhashcache-shortcode2word) 
,@value)))
+                pyim-dhashcache-shortcode2word)))
+   pyim-dhashcache-code2word)
+  (maphash
+   (lambda (key value)
+     (puthash key (pyim-dhashcache-sort-words value)
+              pyim-dhashcache-shortcode2word))
+   pyim-dhashcache-shortcode2word)
+  (pyim-dcache-save-variable 'pyim-dhashcache-shortcode2word)
+  nil)
+
 (defun pyim-dhashcache-get-path (variable)
   "获取保存 VARIABLE 取值的文件的路径."
   (when (symbolp variable)
diff --git a/tests/pyim-tests.el b/tests/pyim-tests.el
index 332eac7..8741f01 100644
--- a/tests/pyim-tests.el
+++ b/tests/pyim-tests.el
@@ -639,6 +639,37 @@ zuo-zuo-you-mang 作作有芒")
     (should (equal (gethash "啊" output2) '("a")))
     (should (equal (gethash "啊啊" output2) nil))))
 
+(ert-deftest pyim-tests-pyim-dhashcache-update-shortcode2word ()
+  (let ((pyim-dcache-directory (file-name-as-directory (make-temp-name 
"pyim-dcache-")))
+        (pyim-dhashcache-code2word (make-hash-table :test #'equal))
+        (pyim-dhashcache-iword2count (make-hash-table :test #'equal))
+        (pyim-dhashcache-shortcode2word (make-hash-table :test #'equal))
+        output)
+
+    (puthash "wubi/a" '("戈") pyim-dhashcache-code2word)
+    (puthash "wubi/aa" '("式" "藏") pyim-dhashcache-code2word)
+    (puthash "wubi/aaa" '("工") pyim-dhashcache-code2word)
+    (puthash "wubi/aaaa" '("工" "㠭") pyim-dhashcache-code2word)
+    (puthash "wubi/aaab" '("㐂") pyim-dhashcache-code2word)
+    (puthash "wubi/aaae" '("𧝣") pyim-dhashcache-code2word)
+
+    (pyim-dhashcache-update-shortcode2word-1)
+
+    (with-temp-buffer
+      (insert-file-contents (concat pyim-dcache-directory 
"pyim-dhashcache-shortcode2word"))
+      (setq output (read (current-buffer))))
+
+    (should (equal (gethash "wubi/aa" output)
+                   '(#("工" 0 1 (:comment "a"))
+                     #("㠭" 0 1 (:comment "aa"))
+                     #("㐂" 0 1 (:comment "ab"))
+                     #("𧝣" 0 1 (:comment "ae")))))
+    (should (equal (gethash "wubi/aaa" output)
+                   '(#("工" 0 1 (:comment "a"))
+                     #("㠭" 0 1 (:comment "a"))
+                     #("㐂" 0 1 (:comment "b"))
+                     #("𧝣" 0 1 (:comment "e")))))))
+
 ;; ** pyim-dregcache 相关单元测试
 (ert-deftest pyim-tests-pyim-general ()
   (let ((pyim-dcache-backend 'pyim-dregcache))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]