From e11ce74a8c8e6c41966a8dd797b9fdf66107e4f4 Mon Sep 17 00:00:00 2001 From: Elis Axelsson Date: Mon, 6 Mar 2017 18:43:05 +0100 Subject: [PATCH] Refactor provider priority to own function --- test/webpaste-test.el | 12 ++++++++++++ webpaste.el | 26 +++++++++++++++----------- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/test/webpaste-test.el b/test/webpaste-test.el index 986589c..7bd414b 100644 --- a/test/webpaste-test.el +++ b/test/webpaste-test.el @@ -4,6 +4,18 @@ (require 'ert) (require 'webpaste) +(ert-deftest webpaste-autopupulate-provider-priority () + "Test autopopulate of webpaste-provider-priority." + + (setq-default webpaste-provider-priority nil) + (setq-default webpaste-providers-alist + (list (list "provider1" "lamba") + (list "provider2" "lamba") + (list "provider3" "lamba"))) + + (should (equal (webpaste--get-provider-priority) + '("provider1" "provider2" "provider3")))) + (ert-deftest callback-from-working-provider () "This test just sends a message to a good provider that just works." diff --git a/webpaste.el b/webpaste.el index 96ce305..9275913 100644 --- a/webpaste.el +++ b/webpaste.el @@ -156,6 +156,20 @@ return it to the user." :type '(alist :key-type (string :tag "provider name") :value-type (sexp :tag "webpaste-provider macro definition for the provider"))) +(defun webpaste--get-provider-priority () + "Return provider priority." + + ;; Populate webpaste-provider-priority if needed + (if (eq webpaste-provider-priority nil) + (let ((provider-names)) + ;; Loop provider list + (dolist (provider webpaste-providers-alist) + (cl-pushnew (car provider) provider-names)) + + ;; Set names list + (setq-default webpaste-provider-priority (reverse provider-names)))) + + webpaste-provider-priority) ;;;###autoload (defun webpaste-return-url (returned-url) @@ -188,19 +202,9 @@ might call this function again with TEXT as param to retry if it failed. When we run out of providers to try, it will restart since ‘webpaste-tested-providers’ will be empty and then populated again." - ;; Populate webpaste-provider-priority if needed - (if (eq webpaste-provider-priority nil) - (let ((provider-names)) - ;; Loop provider list - (dolist (provider webpaste-providers-alist) - (cl-pushnew (car provider) provider-names)) - - ;; Set names list - (setq-default webpaste-provider-priority (reverse provider-names)))) - ;; Populate tested providers for this request if needed (if (eq webpaste-tested-providers nil) - (setq webpaste-tested-providers webpaste-provider-priority)) + (setq webpaste-tested-providers (webpaste--get-provider-priority))) ;; Get name of provider at the top of the list (let ((provider-name (car webpaste-tested-providers)))