diff --git a/kagi-test.el b/kagi-test.el index 57e6bcc..1435605 100644 --- a/kagi-test.el +++ b/kagi-test.el @@ -319,6 +319,17 @@ https://www.example.com" (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")))))) + (expect (map-elt args "engine") :to-equal "cecil"))) + (it "returns a summary when the take-away style is requested" + (expect (kagi-summarize just-enough-text-input nil nil 'takeaway) :to-equal dummy-output)) + (it "uses the summary style when an invalid format is given" + (kagi-summarize just-enough-text-input nil nil 'invalid) + (let ((args (car (spy-calls-args-for #'kagi--call-summarizer 0)))) + (expect (map-elt args "summary_type") :to-equal 'summary))) + (it "uses the summary style when an invalid format is configured" + (setq kagi-summarizer-default-summary-format 'invalid) + (kagi-summarize just-enough-text-input) + (let ((args (car (spy-calls-args-for #'kagi--call-summarizer 0)))) + (expect (map-elt args "summary_type") :to-equal 'summary)))))) ;;; kagi-test.el ends here diff --git a/kagi.el b/kagi.el index cbb8359..8c1a686 100644 --- a/kagi.el +++ b/kagi.el @@ -551,6 +551,14 @@ to `kagi-summarizer-default-language'." (downcase kagi-summarizer-engine)) (t "cecil"))) +(defun kagi--summarizer-format (hint) + "Return a valid summary type based on the type given in HINT." + (let ((choices '(summary takeaway))) + (cond ((seq-contains-p choices hint) hint) + ((seq-contains-p choices kagi-summarizer-default-summary-format) + kagi-summarizer-default-summary-format) + (t 'summary)))) + (defun kagi-summarize (text-or-url &optional language engine format) "Return the summary of the given TEXT-OR-URL. @@ -567,7 +575,8 @@ of text and `takeaway' returns a bullet list." (kagi--summarizer-determine-language language)) (kagi-summarizer-engine (kagi--summarizer-engine engine)) - (kagi-summarizer-default-summary-format format)) + (kagi-summarizer-default-summary-format + (kagi--summarizer-format format))) (if-let* ((response (if (kagi--url-p text-or-url) (kagi--call-url-summarizer text-or-url) (kagi--call-text-summarizer text-or-url)))