mirror of
https://github.com/logseq/logseq.git
synced 2026-02-01 22:47:36 +00:00
enhance: add logseq.common.defkeywords
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
|
||||
:linters
|
||||
{:path-invalid-construct/string-join {:level :info}
|
||||
:defkeywords/invalid-arg {:level :warning}
|
||||
:regex-checks/double-escaped-regex {:level :warning}
|
||||
:aliased-namespace-symbol {:level :warning}
|
||||
:shadowed-var {:level :warning
|
||||
@@ -204,7 +205,8 @@
|
||||
:hooks {:analyze-call {rum.core/defc hooks.rum/defc
|
||||
rum.core/defcs hooks.rum/defcs
|
||||
clojure.string/join hooks.path-invalid-construct/string-join
|
||||
clojure.string/replace hooks.regex-checks/double-escaped-regex}}
|
||||
clojure.string/replace hooks.regex-checks/double-escaped-regex
|
||||
logseq.common.defkeywords/defkeywords hooks.defkeywords/defkeywords}}
|
||||
:lint-as {promesa.core/let clojure.core/let
|
||||
promesa.core/loop clojure.core/loop
|
||||
promesa.core/recur clojure.core/recur
|
||||
@@ -220,7 +222,7 @@
|
||||
frontend.test.helper/deftest-async clojure.test/deftest
|
||||
frontend.worker.rtc.idb-keyval-mock/with-reset-idb-keyval-mock cljs.test/async
|
||||
frontend.react/defc clojure.core/defn
|
||||
frontend.common.schema-register/defkeyword cljs.spec.alpha/def}
|
||||
logseq.common.defkeywords/defkeyword cljs.spec.alpha/def}
|
||||
:skip-comments true
|
||||
:output {:progress true
|
||||
:exclude-files ["src/test/docs-0.10.9/"]}}
|
||||
|
||||
29
.clj-kondo/hooks/defkeywords.clj
Normal file
29
.clj-kondo/hooks/defkeywords.clj
Normal file
@@ -0,0 +1,29 @@
|
||||
(ns hooks.defkeywords
|
||||
(:require [clj-kondo.hooks-api :as api]))
|
||||
|
||||
(defn defkeywords
|
||||
[{:keys [node]}]
|
||||
(let [[_ & keyvals] (:children node)
|
||||
kw->v (partition 2 keyvals)
|
||||
kws (map first kw->v)]
|
||||
(cond
|
||||
(odd? (count keyvals))
|
||||
(api/reg-finding!
|
||||
(assoc (meta node)
|
||||
:message "Require even number of args"
|
||||
:type :defkeywords/invalid-arg))
|
||||
(not (every? (comp qualified-keyword? api/sexpr) kws))
|
||||
(api/reg-finding!
|
||||
(assoc (meta node)
|
||||
:message "Should use qualified-keywords"
|
||||
:type :defkeywords/invalid-arg))
|
||||
:else
|
||||
(let [new-node (api/list-node
|
||||
(map (fn [k]
|
||||
(api/list-node
|
||||
[(api/token-node 'logseq.common.defkeywords/defkeyword)
|
||||
k
|
||||
(api/token-node "")]))
|
||||
kws))]
|
||||
{:node (with-meta new-node
|
||||
(meta node))}))))
|
||||
Reference in New Issue
Block a user