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

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

[elpa] externals/pyim 069ff6b6b0 2/2: Test function json-parse-buffer ex


From: ELPA Syncer
Subject: [elpa] externals/pyim 069ff6b6b0 2/2: Test function json-parse-buffer exist or not.
Date: Sun, 8 May 2022 02:58:14 -0400 (EDT)

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

    Test function json-parse-buffer exist or not.
    
            * pyim-cloudim.el (pyim-cloudim-parse-baidu-buffer)
            (pyim-cloudim-parse-google-buffer): test function json-parse-buffer.
---
 README.org          | 12 ++++++++++--
 pyim-cloudim.el     | 10 ++++++----
 tests/pyim-tests.el | 34 ++++++++++++++++++----------------
 3 files changed, 34 insertions(+), 22 deletions(-)

diff --git a/README.org b/README.org
index 50ad30fec3..002610c981 100644
--- a/README.org
+++ b/README.org
@@ -162,14 +162,22 @@ pyim 默认使用 pyim-basedict 词库, 这个词库的词条量8万左右,是
 | C-DEL 或  C-BACKSPACE | 删除最后一个拼音           |
 | M-DEL 或  M-BACKSPACE | 删除最后一个拼音           |
 | F1,F2,F3,F4           | 以词定字                   |
-** 使用云拼音
-pyim 可以使用搜索引擎提供的云拼音服务,比如:
+** 使用云输入法
+pyim 可以使用搜索引擎提供的云输入法服务,比如:
 
 #+begin_example
 (setq pyim-cloudim 'baidu)
 ;; (setq pyim-cloudim 'google)
 #+end_example
 
+不过,由于 json 解析库的原因,Emacs 旧版本可能无法使用云输入法,可以通过下面的函
+数测试一下。
+
+#+begin_example
+(pyim-cloudim:baidu "nihao" 'pinyin)
+#+end_example
+
+
 ** 使用双拼模式
 pyim 支持双拼输入模式,用户可以通过变量 `pyim-default-scheme' 来设定:
 
diff --git a/pyim-cloudim.el b/pyim-cloudim.el
index cf8d347581..59498c5b2b 100644
--- a/pyim-cloudim.el
+++ b/pyim-cloudim.el
@@ -54,7 +54,8 @@
 
 (defun pyim-cloudim:baidu (string input-method)
   "使用 baidu 云 INPUT-METHOD 输入法引擎搜索 STRING, 获取词条列表。"
-  (when (equal input-method 'pinyin)
+  (when (and (equal input-method 'pinyin)
+             (functionp 'json-parse-buffer))
     (with-current-buffer (url-retrieve-synchronously
                           (format "https://olime.baidu.com/py?py=%s"; string)
                           t nil 0.5)
@@ -65,12 +66,13 @@
   (goto-char (point-min))
   (search-forward "\n\n" nil t)
   (delete-region (point-min) (point))
-  (let ((data (json-parse-buffer)))
+  (let ((data (funcall 'json-parse-buffer)))
     (list (elt (elt (elt (gethash "0" data) 0) 0) 0))))
 
 (defun pyim-cloudim:google (string input-method)
   "使用 google 云 INPUT-METHOD 输入法引擎搜索 STRING, 获取词条列表。"
-  (when (eq input-method 'pinyin)
+  (when (and (eq input-method 'pinyin)
+             (functionp 'json-parse-buffer))
     (with-current-buffer (url-retrieve-synchronously
                           (format 
"https://www.google.cn/inputtools/request?ime=pinyin&text=%s"; string)
                           t nil 0.5)
@@ -81,7 +83,7 @@
   (goto-char (point-min))
   (search-forward "\n\n" nil t)
   (delete-region (point-min) (point))
-  (let ((data (json-parse-buffer)))
+  (let ((data (funcall 'json-parse-buffer)))
     (list (elt (elt (elt (elt data 1) 0) 1) 0))))
 
 ;; * Footer
diff --git a/tests/pyim-tests.el b/tests/pyim-tests.el
index 2d2e1a68fc..ead64cebce 100644
--- a/tests/pyim-tests.el
+++ b/tests/pyim-tests.el
@@ -939,17 +939,18 @@ yin-xing 因行
     (should (eq (length words) 51))))
 
 (ert-deftest pyim-tests-pyim-cloudim ()
-  (with-temp-buffer
-    (insert "HTTP/1.1 200 OK
+  (when (functionp 'json-parse-buffer)
+    (with-temp-buffer
+      (insert "HTTP/1.1 200 OK
 Content-Length: 88
 Content-Type: text/plain; charset=utf-8
 Date: Sun, 08 May 2022 00:56:13 GMT
 
 
{\"0\":[[[\"你好\",5,{\"pinyin\":\"ni'hao\",\"type\":\"IMEDICT\"}]]],\"1\":\"ni'hao\",\"result\":[null]}")
-    (should (equal (pyim-cloudim-parse-baidu-buffer) '("你好"))))
+      (should (equal (pyim-cloudim-parse-baidu-buffer) '("你好"))))
 
-  (with-temp-buffer
-    (insert "HTTP/1.1 200 OK
+    (with-temp-buffer
+      (insert "HTTP/1.1 200 OK
 Date: Sun, 08 May 2022 03:33:56 GMT
 Pragma: no-cache
 Expires: -1
@@ -965,22 +966,23 @@ Alt-Svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; 
ma=2592000,h3-Q050=\":443\"; ma
 Transfer-Encoding: chunked
 
 [\"SUCCESS\",[[\"nihao\",[\"你好\"],[],{\"annotation\":[\"ni 
hao\"],\"candidate_type\":[0],\"lc\":[\"16 16\"]}]]]")
-    (should (equal (pyim-cloudim-parse-google-buffer) '("你好"))))
+      (should (equal (pyim-cloudim-parse-google-buffer) '("你好"))))
 
-  (should (equal (pyim-cloudim:baidu "nihao" 'pinyin) '("你好")))
-  (should (equal (pyim-cloudim:google "nihao" 'pinyin) '("你好")))
+    (when (not noninteractive)
+      (should (equal (pyim-cloudim:baidu "nihao" 'pinyin) '("你好")))
+      (should (equal (pyim-cloudim:google "nihao" 'pinyin) '("你好")))
 
-  (let ((pyim-cloudim 'baidu))
-    (should (equal (pyim-cloudim "nihao" 'pinyin) '("你好"))))
+      (let ((pyim-cloudim 'baidu))
+        (should (equal (pyim-cloudim "nihao" 'pinyin) '("你好"))))
 
-  (let ((pyim-cloudim 'google))
-    (should (equal (pyim-cloudim "nihao" 'pinyin) '("你好"))))
+      (let ((pyim-cloudim 'google))
+        (should (equal (pyim-cloudim "nihao" 'pinyin) '("你好"))))
 
-  (let ((pyim-cloudim 'xxx))
-    (should (not (pyim-cloudim "nihao" 'pinyin))))
+      (let ((pyim-cloudim 'xxx))
+        (should (not (pyim-cloudim "nihao" 'pinyin))))
 
-  (let ((pyim-cloudim nil))
-    (should (not (pyim-cloudim "nihao" 'pinyin)))))
+      (let ((pyim-cloudim nil))
+        (should (not (pyim-cloudim "nihao" 'pinyin)))))))
 
 (ert-run-tests-batch-and-exit)
 ;; * Footer



reply via email to

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