fixes #458 by adding four registered-*? predicates

This commit is contained in:
Sean Corfield 2023-02-11 12:54:43 -08:00
parent 5fb150bd53
commit f8532dfd33
2 changed files with 23 additions and 0 deletions

View file

@ -1,5 +1,8 @@
# Changes
* 2.4.next in progress
* Address [#458](https://github.com/seancorfield/honeysql/issues/458) by adding `registered-*?` predicates.
* 2.4.972 -- 2023-02-02
* Address [#456](https://github.com/seancorfield/honeysql/issues/456) by allowing `format` to handle expressions (like 1.x could) as well as statements. This should aid with migration from 1.x to 2.x.

View file

@ -1784,6 +1784,11 @@
(swap! current-clause-order add-clause-before clause before)
(swap! clause-format assoc clause f))))
(defn registered-clause?
"Return true if the clause is known to HoneySQL."
[clause]
(contains? @clause-format (sym->kw clause)))
(defn register-dialect!
"Register a new dialect. Accepts a dialect name (keyword) and a hash
map that must contain at least a `:quoted` key whose value is a unary
@ -1814,6 +1819,11 @@
{:dialect-spec dialect-spec}))))
(swap! dialects assoc dialect (assoc dialect-spec :dialect dialect)))
(defn registered-dialect?
"Return true if the dialect is known to HoneySQL."
[dialect]
(contains? @dialects dialect))
(defn get-dialect
"Given a dialect name (keyword), return its definition.
Returns `nil` if the dialect is unknown."
@ -1839,6 +1849,11 @@
{:type (type formatter)})))
(swap! special-syntax assoc function f))))
(defn registered-fn?
"Return true if the function is known to HoneySQL."
[function]
(contains? @special-syntax (sym->kw function)))
(defn register-op!
"Register a new infix operator. Operators can be defined to be variadic (the
default is that they are binary) and may choose to ignore `nil` arguments
@ -1852,6 +1867,11 @@
(when ignore-nil
(swap! op-ignore-nil conj op))))
(defn registered-op?
"Return true if the operator is known to HoneySQL."
[op]
(contains? @infix-ops (sym->kw op)))
;; helper functions to create HoneySQL data structures from other things
(defn map=