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

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

[elpa] externals/pyim f72f23c 2/2: Add pyim-dhashcache-get-ishortcodes.


From: ELPA Syncer
Subject: [elpa] externals/pyim f72f23c 2/2: Add pyim-dhashcache-get-ishortcodes.
Date: Mon, 13 Dec 2021 20:57:44 -0500 (EST)

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

    Add pyim-dhashcache-get-ishortcodes.
    
        * pyim-dhashcache.el (pyim-dhashcache-get-ishortcodes): New function.
        (pyim-dhashcache-update-ishortcode2word-1)
        (pyim-dhashcache-insert-word-into-ishortcode2word): Use 
pyim-dhashcache-get-ishortcodes.
---
 pyim-dhashcache.el  | 39 ++++++++++++++++++++++-----------------
 tests/pyim-tests.el |  6 ++++++
 2 files changed, 28 insertions(+), 17 deletions(-)

diff --git a/pyim-dhashcache.el b/pyim-dhashcache.el
index 2e800a8..aae3dc0 100644
--- a/pyim-dhashcache.el
+++ b/pyim-dhashcache.el
@@ -84,6 +84,20 @@
           (push (concat prefix (substring code1 0 i)) results)))
       results)))
 
+(defun pyim-dhashcache-get-ishortcodes (code)
+  "获取CODE 所有的简写 ishortcodes.
+
+比如: ni-hao -> (n-h)
+
+注意事项:这个函数用于全拼输入法。"
+  (when (and (> (length code) 0)
+             (not (pyim-string-match-p "/" code))
+             (not (pyim-string-match-p "[^a-z-]" code)))
+    (list (mapconcat
+           (lambda (x)
+             (substring x 0 1))
+           (split-string code "-") "-"))))
+
 (defun pyim-dhashcache-async-inject-variables ()
   "pyim's async-inject-variables."
   (list (async-inject-variables "^load-path$")
@@ -118,17 +132,12 @@
   (let ((ishortcode2word (make-hash-table :test #'equal)))
     (maphash
      (lambda (key value)
-       (when (and (> (length key) 0)
-                  (not (string-match-p "[^a-z-]" key)))
-         (let* ((newkey (mapconcat
-                         (lambda (x)
-                           (substring x 0 1))
-                         (split-string key "-") "-")))
-           (puthash newkey
-                    (delete-dups
-                     `(,@(gethash newkey ishortcode2word)
-                       ,@value))
-                    ishortcode2word))))
+       (dolist (newkey (pyim-dhashcache-get-ishortcodes key))
+         (puthash newkey
+                  (delete-dups
+                   `(,@(gethash newkey ishortcode2word)
+                     ,@value))
+                  ishortcode2word)))
      icode2word)
     (maphash
      (lambda (key value)
@@ -446,14 +455,10 @@ code 对应的中文词条了。
 
 默认 WORD 放到已有词条的最后,如果 PREPEND 为 non-nil, WORD 将放
 到已有词条的最前面。"
-  (when (string-match-p "-" code)
+  (dolist (newcode (pyim-dhashcache-get-ishortcodes code))
     (pyim-dhashcache-put
       pyim-dhashcache-ishortcode2word
-      ;; ni-hao -> n-h
-      (mapconcat (lambda (x)
-                   (substring x 0 1))
-                 (split-string code "-")
-                 "-")
+      newcode
       (if prepend
           `(,word ,@(remove word orig-value))
         `(,@(remove word orig-value) ,word)))))
diff --git a/tests/pyim-tests.el b/tests/pyim-tests.el
index fd92455..2fcfcf0 100644
--- a/tests/pyim-tests.el
+++ b/tests/pyim-tests.el
@@ -608,6 +608,12 @@
   (should (equal (pyim-dhashcache-get-shortcodes "ni-hao") nil))
   (should (equal (pyim-dhashcache-get-shortcodes "") nil)))
 
+(ert-deftest pyim-tests-pyim-dhashcache-get-ishortcodes ()
+  (should (equal (pyim-dhashcache-get-ishortcodes "ni-hao") '("n-h")))
+  (should (equal (pyim-dhashcache-get-ishortcodes "wubi/aaaa") nil))
+  (should (equal (pyim-dhashcache-get-ishortcodes "ni") '("n")))
+  (should (equal (pyim-dhashcache-get-ishortcodes "") nil)))
+
 (ert-deftest pyim-tests-pyim-dhashcache-get-path ()
   (let ((pyim-dcache-directory "/tmp/dcache"))
     (should (equal (pyim-dhashcache-get-path 'hello) "/tmp/dcache/hello"))



reply via email to

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