diff options
| author | Oleh Prypin <oleh@pryp.in> | 2021-01-20 10:48:45 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-01-20 10:48:45 +0100 |
| commit | 6f4309217326430145564ae8b1bb393ea684f39f (patch) | |
| tree | bf4025a5e709426dc927c4afc4fd2286f8450ed9 /tests/examplefiles/clojurescript/core.cljs | |
| parent | f0445be718da83541ea3401aad882f3937147263 (diff) | |
| download | pygments-git-6f4309217326430145564ae8b1bb393ea684f39f.tar.gz | |
Also add auto-updatable output-based tests to examplefiles (#1689)
Co-authored-by: Georg Brandl <georg@python.org>
Diffstat (limited to 'tests/examplefiles/clojurescript/core.cljs')
| -rw-r--r-- | tests/examplefiles/clojurescript/core.cljs | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/examplefiles/clojurescript/core.cljs b/tests/examplefiles/clojurescript/core.cljs new file mode 100644 index 00000000..f135b832 --- /dev/null +++ b/tests/examplefiles/clojurescript/core.cljs @@ -0,0 +1,52 @@ + +(ns bounder.core + (:require [bounder.html :as html] + [domina :refer [value set-value! single-node]] + [domina.css :refer [sel]] + [lowline.functions :refer [debounce]] + [enfocus.core :refer [at]] + [cljs.reader :as reader] + [clojure.string :as s]) + (:require-macros [enfocus.macros :as em])) + +(def filter-input + (single-node + (sel ".search input"))) + +(defn project-matches [query project] + (let [words (cons (:name project) + (map name (:categories project))) + to-match (->> words + (s/join "") + (s/lower-case))] + (<= 0 (.indexOf to-match (s/lower-case query))))) + +(defn apply-filter-for [projects] + (let [query (value filter-input)] + (html/render-projects + (filter (partial project-matches query) + projects)))) + +(defn filter-category [projects evt] + (let [target (.-currentTarget evt)] + (set-value! filter-input + (.-innerHTML target)) + (apply-filter-for projects))) + +(defn init-listeners [projects] + (at js/document + ["input"] (em/listen + :keyup + (debounce + (partial apply-filter-for projects) + 500)) + [".category-links li"] (em/listen + :click + (partial filter-category projects)))) + +(defn init [projects-edn] + (let [projects (reader/read-string projects-edn)] + (init-listeners projects) + (html/render-projects projects) + (html/loaded))) + |
