Refactored summarizer engine selection and added tests
This commit is contained in:
parent
7d6f6f1cf1
commit
01a761a2ff
2 changed files with 29 additions and 4 deletions
17
kagi-test.el
17
kagi-test.el
|
@ -304,6 +304,21 @@ https://www.example.com"
|
|||
(it "returns a summary for an HTTP URL"
|
||||
(expect (kagi-summarize dummy-http-url) :to-equal dummy-output))
|
||||
(it "throws for an unsupported URL scheme"
|
||||
(expect (kagi-summarize dummy-ftp-url) :to-throw)))))
|
||||
(expect (kagi-summarize dummy-ftp-url) :to-throw))
|
||||
(it "return a summary for a valid engine with different capitalization"
|
||||
(expect (kagi-summarize dummy-https-url nil "Daphne") :to-equal dummy-output)
|
||||
(let ((args (car (spy-calls-args-for #'kagi--call-summarizer 0))))
|
||||
(expect (map-elt args "engine") :to-equal "daphne"))
|
||||
)
|
||||
(it "uses kagi-summarizer-engine variable for invalid engine values"
|
||||
(setq kagi-summarizer-engine "Daphne")
|
||||
(expect (kagi-summarize dummy-https-url nil "bram") :to-equal dummy-output)
|
||||
(let ((args (car (spy-calls-args-for #'kagi--call-summarizer 0))))
|
||||
(expect (map-elt args "engine") :to-equal "daphne")))
|
||||
(it "uses the cecil engine when an invalid engine is configured"
|
||||
(setq kagi-summarizer-engine "steve")
|
||||
(expect (kagi-summarize dummy-https-url) :to-equal dummy-output)
|
||||
(let ((args (car (spy-calls-args-for #'kagi--call-summarizer 0))))
|
||||
(expect (map-elt args "engine") :to-equal "cecil"))))))
|
||||
|
||||
;;; kagi-test.el ends here
|
||||
|
|
16
kagi.el
16
kagi.el
|
@ -539,6 +539,18 @@ to `kagi-summarizer-default-language'."
|
|||
kagi-summarizer-default-language)
|
||||
(t "EN")))
|
||||
|
||||
(defun kagi--valid-engine-p (engine)
|
||||
"Return non-nil when the given ENGINE is valid."
|
||||
(and (stringp engine)
|
||||
(map-elt kagi--summarizer-engines (downcase engine))))
|
||||
|
||||
(defun kagi--summarizer-engine (hint)
|
||||
"Return a valid engine name based on the name given in HINT."
|
||||
(cond ((kagi--valid-engine-p hint) (downcase hint))
|
||||
((kagi--valid-engine-p kagi-summarizer-engine)
|
||||
(downcase kagi-summarizer-engine))
|
||||
(t "cecil")))
|
||||
|
||||
(defun kagi-summarize (text-or-url &optional language engine format)
|
||||
"Return the summary of the given TEXT-OR-URL.
|
||||
|
||||
|
@ -554,9 +566,7 @@ of text and `takeaway' returns a bullet list."
|
|||
(let* ((kagi-summarizer-default-language
|
||||
(kagi--summarizer-determine-language language))
|
||||
(kagi-summarizer-engine
|
||||
(if (stringp engine)
|
||||
(downcase engine)
|
||||
kagi-summarizer-engine))
|
||||
(kagi--summarizer-engine engine))
|
||||
(kagi-summarizer-default-summary-format format))
|
||||
(if-let* ((response (if (kagi--url-p text-or-url)
|
||||
(kagi--call-url-summarizer text-or-url)
|
||||
|
|
Loading…
Reference in a new issue