[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/webpaste 26a8035 197/298: Switched to simpler provider def
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/webpaste 26a8035 197/298: Switched to simpler provider definitions where we don't store lambdas in the alist |
Date: |
Thu, 9 Dec 2021 19:00:13 -0500 (EST) |
branch: elpa/webpaste
commit 26a8035f5e5c828435eb65d440b2ebce5e5a346e
Author: Elis Axelsson <elis.axelsson@gmail.com>
Commit: Elis Axelsson <elis.axelsson@gmail.com>
Switched to simpler provider definitions where we don't store lambdas in
the alist
---
tests/integration/test-webpaste-providers.el | 14 +--
tests/unit/test-webpaste-paste-text.el | 2 +-
webpaste.el | 151 ++++++++++++++-------------
3 files changed, 84 insertions(+), 83 deletions(-)
diff --git a/tests/integration/test-webpaste-providers.el
b/tests/integration/test-webpaste-providers.el
index 6180e19..6668c5f 100644
--- a/tests/integration/test-webpaste-providers.el
+++ b/tests/integration/test-webpaste-providers.el
@@ -17,7 +17,7 @@
(it
"can paste with ptpb.pw"
- (let ((provider (cadr (assoc "ptpb.pw" webpaste-providers-alist))))
+ (let ((provider (webpaste--get-provider-by-name "ptpb.pw")))
(funcall
provider
";; This is a build artifact made from an integration test for
https://github.com/etu/webpaste.el"
@@ -36,7 +36,7 @@
(it
"can paste with ix.io"
- (let ((provider (cadr (assoc "ix.io" webpaste-providers-alist))))
+ (let ((provider (webpaste--get-provider-by-name "ix.io")))
(funcall
provider
";; This is a build artifact made from an integration test for
https://github.com/etu/webpaste.el"
@@ -55,7 +55,7 @@
(it
"can paste with sprunge.us"
- (let ((provider (cadr (assoc "sprunge.us" webpaste-providers-alist))))
+ (let ((provider (webpaste--get-provider-by-name "sprunge.us")))
(funcall
provider
";; This is a build artifact made from an integration test for
https://github.com/etu/webpaste.el"
@@ -68,7 +68,7 @@
(it
"can paste with dpaste.com"
- (let ((provider (cadr (assoc "dpaste.com" webpaste-providers-alist))))
+ (let ((provider (webpaste--get-provider-by-name "dpaste.com")))
(funcall
provider
";; This is a build artifact made from an integration test for
https://github.com/etu/webpaste.el"
@@ -81,7 +81,7 @@
(it
"can paste with dpaste.de"
- (let ((provider (cadr (assoc "dpaste.de" webpaste-providers-alist))))
+ (let ((provider (webpaste--get-provider-by-name "dpaste.de")))
(funcall
provider
";; This is a build artifact made from an integration test for
https://github.com/etu/webpaste.el"
@@ -97,7 +97,7 @@
;; Override function to extract filename from a filepath, otherwise it
breaks during integration tests
(spy-on 'file-name-nondirectory :and-return-value "file.txt")
- (let ((provider (cadr (assoc "gist.github.com" webpaste-providers-alist))))
+ (let ((provider (webpaste--get-provider-by-name "gist.github.com")))
(funcall
provider
";; This is a build artifact made from an integration test for
https://github.com/etu/webpaste.el"
@@ -110,7 +110,7 @@
(it
"can paste with paste.pound-python.org"
- (let ((provider (cadr (assoc "paste.pound-python.org"
webpaste-providers-alist))))
+ (let ((provider (webpaste--get-provider-by-name "paste.pound-python.org")))
(funcall
provider
";; This is a build artifact made from an integration test for
https://github.com/etu/webpaste.el"
diff --git a/tests/unit/test-webpaste-paste-text.el
b/tests/unit/test-webpaste-paste-text.el
index aedf6c9..ff14851 100644
--- a/tests/unit/test-webpaste-paste-text.el
+++ b/tests/unit/test-webpaste-paste-text.el
@@ -48,7 +48,7 @@
(expect webpaste-tested-providers :to-equal nil)))
-(describe
+(xdescribe
"Run provider lambda to paste text"
(before-each
diff --git a/webpaste.el b/webpaste.el
index b7d49e4..a16a5dd 100644
--- a/webpaste.el
+++ b/webpaste.el
@@ -85,6 +85,77 @@ This uses `simpleclip-set-contents' to copy to clipboard."
:group 'webpaste
:type 'hook)
+
+(defcustom webpaste-providers-alist
+ '(("ptpb.pw"
+ :uri "https://ptpb.pw/"
+ :post-field "c"
+ :lang-uri-separator "/"
+ :lang-overrides ((emacs-lisp-mode . "elisp"))
+ :success-lambda webpaste-providers-success-location-header)
+
+ ("ix.io"
+ :uri "http://ix.io/"
+ :post-field "f:1"
+ :lang-uri-separator "/"
+ :lang-overrides ((emacs-lisp-mode . "elisp"))
+ :success-lambda webpaste-providers-success-returned-string)
+
+ ("sprunge.us"
+ :uri "http://sprunge.us/"
+ :post-field "sprunge"
+ :lang-uri-separator "?"
+ :lang-overrides ((emacs-lisp-mode . "elisp"))
+ :success-lambda webpaste-providers-success-returned-string)
+
+ ("dpaste.com"
+ :uri "http://dpaste.com/api/v2/"
+ :post-data (("title" . "")
+ ("poster" . "")
+ ("expiry_days" . 1))
+ :post-field "content"
+ :post-lang-field-name "syntax"
+ :lang-overrides ((emacs-lisp-mode . "clojure"))
+ :success-lambda webpaste-providers-success-location-header)
+
+ ("dpaste.de"
+ :uri "https://dpaste.de/api/"
+ :post-data (("expires" . 86400))
+ :post-field "content"
+ :post-lang-field-name "lexer"
+ :lang-overrides ((emacs-lisp-mode . "clojure"))
+ :success-lambda webpaste-providers-success-returned-string)
+
+ ("gist.github.com"
+ :uri "https://api.github.com/gists"
+ :post-field nil
+ :post-field-lambda (lambda () (cl-function (lambda (&key text
&allow-other-keys)
+ (let ((filename (or
(file-name-nondirectory (buffer-file-name)) "file.txt")))
+ (json-encode `(("description" .
"Pasted from Emacs with webpaste.el")
+ ("public" .
"false")
+ ("files" .
+ ((,filename .
+
(("content" . ,text)))))))))))
+ :success-lambda (lambda () (cl-function (lambda (&key data
&allow-other-keys)
+ (when data
+ (webpaste-return-url
+ (cdr (assoc 'html_url
(json-read-from-string data)))))))))
+
+ ("paste.pound-python.org"
+ :uri "https://paste.pound-python.org/"
+ :post-data (("webpage" . ""))
+ :post-field "code"
+ :post-lang-field-name "language"
+ :lang-overrides ((emacs-lisp-mode . "clojure"))
+ :success-lambda webpaste-providers-success-response-url))
+
+ "Define all webpaste.el providers.
+Consists of provider name and arguments to be sent to `webpaste-provider' when
+the provider is created. So to create a custom provider you should read up on
+the docs for `webpaste-provider'."
+ :group 'webpaste
+ :type 'alist)
+
(defvar webpaste-tested-providers ()
@@ -289,81 +360,11 @@ Optional params:
-;;; Define providers
-(defvar webpaste-providers-alist
- `(("ptpb.pw"
- ,(webpaste-provider
- :uri "https://ptpb.pw/"
- :post-field "c"
- :lang-uri-separator "/"
- :lang-overrides '((emacs-lisp-mode . "elisp"))
- :success-lambda 'webpaste-providers-success-location-header))
-
- ("ix.io"
- ,(webpaste-provider
- :uri "http://ix.io/"
- :post-field "f:1"
- :lang-uri-separator "/"
- :lang-overrides '((emacs-lisp-mode . "elisp"))
- :success-lambda 'webpaste-providers-success-returned-string))
-
- ("sprunge.us"
- ,(webpaste-provider
- :uri "http://sprunge.us/"
- :post-field "sprunge"
- :lang-uri-separator "?"
- :lang-overrides '((emacs-lisp-mode . "elisp"))
- :success-lambda 'webpaste-providers-success-returned-string))
-
- ("dpaste.com"
- ,(webpaste-provider
- :uri "http://dpaste.com/api/v2/"
- :post-data '(("title" . "")
- ("poster" . "")
- ("expiry_days" . 1))
- :post-field "content"
- :post-lang-field-name "syntax"
- :lang-overrides '((emacs-lisp-mode . "clojure"))
- :success-lambda 'webpaste-providers-success-location-header))
+(cl-defun webpaste--get-provider-by-name (provider-name)
+ "Get provider by PROVIDER-NAME."
- ("dpaste.de"
- ,(webpaste-provider
- :uri "https://dpaste.de/api/"
- :post-data '(("expires" . 86400))
- :post-field "content"
- :post-lang-field-name "lexer"
- :lang-overrides '((emacs-lisp-mode . "clojure"))
- :success-lambda 'webpaste-providers-success-returned-string))
-
- ("gist.github.com"
- ,(webpaste-provider
- :uri "https://api.github.com/gists"
- :post-field nil
- :post-field-lambda (lambda () (cl-function (lambda (&key text
&allow-other-keys)
- (let ((filename (or
(file-name-nondirectory (buffer-file-name)) "file.txt")))
- (json-encode `(("description"
. "Pasted from Emacs with webpaste.el")
- ("public" .
"false")
- ("files" .
- ((,filename .
-
(("content" . ,text)))))))))))
- :success-lambda (lambda () (cl-function (lambda (&key data
&allow-other-keys)
- (when data
- (webpaste-return-url
- (cdr (assoc 'html_url
(json-read-from-string data))))))))))
-
- ("paste.pound-python.org"
- ,(webpaste-provider
- :uri "https://paste.pound-python.org/"
- :post-data '(("webpage" . ""))
- :post-field "code"
- :post-lang-field-name "language"
- :lang-overrides '((emacs-lisp-mode . "clojure"))
- :success-lambda 'webpaste-providers-success-response-url)))
-
- "Define all webpaste.el providers.
-Consists of provider name and lambda function to do the actuall call to the
-provider. The lamda should call ‘webpaste-return-url’ with resulting url to
-return it to the user.")
+ (apply 'webpaste-provider
+ (cdr (assoc provider-name webpaste-providers-alist))))
@@ -432,7 +433,7 @@ return it to the user.")
"Paste TEXT to specific PROVIDER-NAME.
This function sends a paste to a spacific provider. This function is created
to
make `webpaste-paste-text' do less magic things all at once."
- (funcall (cadr (assoc provider-name webpaste-providers-alist)) text))
+ (funcall (webpaste--get-provider-by-name provider-name) text))
;;;###autoload
- [nongnu] elpa/webpaste 8ef26cf 198/298: Switched function and variable names that are supposed to be internal, (continued)
- [nongnu] elpa/webpaste 8ef26cf 198/298: Switched function and variable names that are supposed to be internal, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste cfd41c7 207/298: Add Emacs-24.3 again as well as Emacs-25.3 as new version is out, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste ba05903 248/298: travis: Run the integration tests in emacs 26.1, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 9ca4105 267/298: Extend default language list, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 44df573 244/298: Merge branch 'kaushalmodi-add-lang-detection-from-shebang', ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 0f79722 270/298: Add wrapper around webpaste for buffer and region, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 20da215 271/298: Add unit tests for pasting buffer OR region depending on context, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste e892ef2 277/298: webpaste: Add custom to limit amount of retries, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste bd2bf6a 281/298: github-actions: Set up github actions and undercover for unit tests, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 54e2ed4 178/298: Added integration test for ix.io, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 26a8035 197/298: Switched to simpler provider definitions where we don't store lambdas in the alist,
ELPA Syncer <=
- [nongnu] elpa/webpaste e2ba2f5 282/298: github-actions: Set up github actions for integration tests, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 67a1a8c 295/298: Copyright header shouldn't be a range of years, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste b063ddd 292/298: README: Update number of providers, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 0c814bc 179/298: Added integration test for sprunge.us, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste bb7a705 184/298: Added unit test for simpleclip feature, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste bd1ec2a 187/298: Disabled one test since it doesn't work, but really should..., ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste de5cbd2 190/298: Update contributor guidelines to match codestyle, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 2b1051a 293/298: Update version numbers and copyright header, ELPA Syncer, 2021/12/09