branch: externals/pyim commit 5bba27be6a0fad6a0d0ceb72c6b32d100a43fea2 Author: Feng Shu <tuma...@163.com> Commit: Feng Shu <tuma...@163.com>
添加 pyim-dhashcache-update-ishortcode2word-1 * tests/pyim-tests.el (pyim-tests-pyim-dhashcache-update-shortcode2word): New test. * pyim-dhashcache.el (pyim-dhashcache-update-ishortcode2word-1): New function. (pyim-dhashcache-update-ishortcode2word): Use pyim-dhashcache-update-ishortcode2word-1. --- pyim-dhashcache.el | 48 ++++++++++++++++++++++++++---------------------- tests/pyim-tests.el | 22 ++++++++++++++++++++++ 2 files changed, 48 insertions(+), 22 deletions(-) diff --git a/pyim-dhashcache.el b/pyim-dhashcache.el index fe90ebf..d81041c 100644 --- a/pyim-dhashcache.el +++ b/pyim-dhashcache.el @@ -99,31 +99,35 @@ (require 'pyim-dhashcache) (pyim-dcache-set-variable 'pyim-dhashcache-icode2word) (pyim-dcache-set-variable 'pyim-dhashcache-iword2count) - (setq pyim-dhashcache-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 - `(,@value - ,@(gethash newkey pyim-dhashcache-ishortcode2word))) - pyim-dhashcache-ishortcode2word)))) - pyim-dhashcache-icode2word) - (maphash - (lambda (key value) - (puthash key (pyim-dhashcache-sort-words value) - pyim-dhashcache-ishortcode2word)) - pyim-dhashcache-ishortcode2word) - (pyim-dcache-save-variable 'pyim-dhashcache-ishortcode2word)) + (pyim-dhashcache-update-ishortcode2word-1)) (lambda (_) (pyim-dcache-set-variable 'pyim-dhashcache-ishortcode2word t))))) +(defun pyim-dhashcache-update-ishortcode2word-1 () + "`pyim-dhashcache-update-ishortcode2word' 内部函数." + (setq pyim-dhashcache-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 pyim-dhashcache-ishortcode2word) + ,@value)) + pyim-dhashcache-ishortcode2word)))) + pyim-dhashcache-icode2word) + (maphash + (lambda (key value) + (puthash key (pyim-dhashcache-sort-words value) + pyim-dhashcache-ishortcode2word)) + pyim-dhashcache-ishortcode2word) + (pyim-dcache-save-variable 'pyim-dhashcache-ishortcode2word)) + (defun pyim-dhashcache-update-shortcode2word (&optional force) "使用 `pyim-dhashcache-code2word' 中的词条,创建简写 code 词库缓存并加载. diff --git a/tests/pyim-tests.el b/tests/pyim-tests.el index 8741f01..79d3280 100644 --- a/tests/pyim-tests.el +++ b/tests/pyim-tests.el @@ -670,6 +670,28 @@ zuo-zuo-you-mang 作作有芒") #("㐂" 0 1 (:comment "b")) #("𧝣" 0 1 (:comment "e"))))))) +(ert-deftest pyim-tests-pyim-dhashcache-update-ishortcode2word () + (let ((pyim-dcache-directory (file-name-as-directory (make-temp-name "pyim-dcache-"))) + (pyim-dhashcache-icode2word (make-hash-table :test #'equal)) + (pyim-dhashcache-iword2count (make-hash-table :test #'equal)) + (pyim-dhashcache-ishortcode2word (make-hash-table :test #'equal)) + output) + + (puthash "ni" '("你" "呢") pyim-dhashcache-icode2word) + (puthash "ni-hao" '("你好" "呢耗") pyim-dhashcache-icode2word) + (puthash "ni-huai" '("你坏") pyim-dhashcache-icode2word) + + (pyim-dhashcache-update-ishortcode2word-1) + + (with-temp-buffer + (insert-file-contents (concat pyim-dcache-directory "pyim-dhashcache-ishortcode2word")) + (setq output (read (current-buffer)))) + + (should (equal (gethash "n-h" output) + '("你好" "呢耗" "你坏"))) + (should (equal (gethash "n" output) + '("你" "呢"))))) + ;; ** pyim-dregcache 相关单元测试 (ert-deftest pyim-tests-pyim-general () (let ((pyim-dcache-backend 'pyim-dregcache))