Add tests for query syntax

This commit is contained in:
arne 2025-11-18 21:48:32 +01:00
commit 5452579f0d
4 changed files with 85 additions and 15 deletions

View file

@ -1,16 +1,23 @@
(ns computersandblues.lodestone.match
(:require [applied-science.js-interop :as j]))
(defn ->regex [s]
(defn- ->regex
"Does its best to compila a stirng into a regular expression; will fall back
to return a RegExp that matches verbatim."
[s]
(try
(js/RegExp. s "i")
(catch js/Error _
(js/RegExp. (js/RegExp.escape s) "i"))))
(defn query->tokens [query]
(->> (re-seq #"\"([^\"]+)\"|([^\s]+)" query)
(mapv (fn [[_ a b]] (or a b)))))
(defn query->matching-fn [query]
(let [match? (if query
(partial re-find (->regex query))
(constantly true))]
(partial re-find (->regex query))
(constantly true))]
(fn [post]
(or (match? (j/get post :content))
(match? (j/get-in post [:account :acct])) ; search for url + username of poster