[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/emacsql 8123020ca7 153/427: Make and and or operators vari
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/emacsql 8123020ca7 153/427: Make and and or operators variadic. |
Date: |
Tue, 13 Dec 2022 02:59:37 -0500 (EST) |
branch: elpa/emacsql
commit 8123020ca773d373d26bb7faefbbb7f8631358e6
Author: Christopher Wellons <wellons@nullprogram.com>
Commit: Christopher Wellons <wellons@nullprogram.com>
Make and and or operators variadic.
---
emacsql-tests.el | 13 +++++++++++++
emacsql.el | 11 ++++++++++-
2 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/emacsql-tests.el b/emacsql-tests.el
index 763a014d0f..3e109788db 100644
--- a/emacsql-tests.el
+++ b/emacsql-tests.el
@@ -163,6 +163,19 @@
([:values [a $$1]] '()
"VALUES ('a', '$1');")))
+(ert-deftest emacsql-expr ()
+ (emacsql-tests-with-queries
+ ([:where (and)] '()
+ "WHERE 1;")
+ ([:where (or)] '()
+ "WHERE 0;")
+ ([:where (and a b)] '()
+ "WHERE a AND b;")
+ ([:where (or a $1)] '(b)
+ "WHERE a OR b;")
+ ([:where (and $1 $2 $3)] '(a b c)
+ "WHERE a AND b AND c;")))
+
(ert-deftest emacsql-transaction ()
(emacsql-tests-with-queries
([:begin :transaction] '()
diff --git a/emacsql.el b/emacsql.el
index f9de57cc91..df5ed36084 100644
--- a/emacsql.el
+++ b/emacsql.el
@@ -532,7 +532,7 @@ definitions for return from a `emacsql-defexpander'."
(recur (if (eq op '>=) 2 0))
(recur (if (eq op '>=) 0 2))))))
;; Binary
- ((< > = != like glob is and or * / % << >> + & | as)
+ ((< > = != like glob is * / % << >> + & | as)
(if (= 2 (length args))
(format "%s %s %s"
(recur 0)
@@ -549,6 +549,15 @@ definitions for return from a `emacsql-defexpander'."
(cl-ecase (length args)
(1 (format "-(%s)" (recur 0)))
(2 (format "%s - %s" (recur 0) (recur 1)))))
+ ;; variadic
+ ((and or)
+ (cl-case (length args)
+ (0 (if (eq op 'and) "1" "0"))
+ (1 (recur 0))
+ (otherwise
+ (mapconcat
+ #'recur (cl-loop for i from 0 below (length args) collect i)
+ (format " %s " (upcase (symbol-name op)))))))
;; quote special case
((quote)
(cl-ecase (length args)
- [nongnu] elpa/emacsql c9aab20d47 082/427: Add in operator (special case operator)., (continued)
- [nongnu] elpa/emacsql c9aab20d47 082/427: Add in operator (special case operator)., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 25f9817064 094/427: Add work-in-progress note back., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 03295cba37 119/427: Add ORDER BY expanders., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql d1c0904564 120/427: Fix missing quotes., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 4718ff4e89 122/427: Simplify all the expanders with new local functions., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 54247e4b5e 127/427: Add another insertion unit test., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql aa9283ca0a 132/427: Allow sub-selects with :from., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql c236aa8437 144/427: Remove extra space., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 75ea77c9a0 149/427: Add an "as" operator, greatly simplifying :from., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 213bb71b7a 152/427: Add :having expander., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 8123020ca7 153/427: Make and and or operators variadic.,
ELPA Syncer <=
- [nongnu] elpa/emacsql 76bf0c34dc 038/427: Add rudimentary :where expander., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql afe64ca63a 040/427: Fix emacsql-add-expander example., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 72145a1627 045/427: Allow for multi-arity keyword expanders., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql f54142f1eb 062/427: Argument list checking in emacsql-format., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 86687b6ba3 067/427: Flesh out more README., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql a306de980a 070/427: Add :delete keyword., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql afa9aa5194 072/427: Add :into expander., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 8f59fe6e80 073/427: Add a vector escape., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql eb3283990e 077/427: Drop emacsql-create., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 66df2afbf1 091/427: Simplify start-process call., ELPA Syncer, 2022/12/13