558 lines
37 KiB
HTML
558 lines
37 KiB
HTML
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<link rel="stylesheet" href="../coverage.css"/> <title> walkmap/superstructure.clj </title>
|
|
</head>
|
|
<body>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
001 (ns walkmap.superstructure
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
002 "single indexing structure for walkmap objects"
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
003 (:require [clojure.walk :refer [postwalk]]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
004 [taoensso.timbre :as l]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
005 [walkmap.path :as p]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
006 [walkmap.polygon :as q]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
007 [walkmap.utils :as u]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
008 [walkmap.vertex :as v]))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
009
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
010 ;; TODO: Think about reification/dereification. How can we cull a polygon, if
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
011 ;; some vertices still index it? I *think* that what's needed is that when
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
012 ;; we store something in the superstructure, we replace all its vertices (and
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
013 ;; other dependent structures, if any with their ids - as well as, obviously,
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
014 ;; adding/merging those vertices/dependent structures into the superstructure
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
015 ;; as first class objects in themselves. That means, for each identified thing,
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
016 ;; the superstructure only contains one copy of it.
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
017 ;;
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
018 ;; The question then is, when we want to do things with those objects, do we
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
019 ;; exteract a copy with its dependent structures fixed back up (reification),
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
020 ;; or do we indirect through the superstructure every time we want to access
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
021 ;; them? In a sense, the copy in the superstructure is the 'one true copy',
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
022 ;; but it may become very difficult then to have one true copy of the
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
023 ;; superstructure - unless we replace the superstructure altogether with a
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
024 ;; database, which may be the Right Thing To Do.
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
025
|
|
</span><br/>
|
|
<span class="covered" title="2 out of 2 forms covered">
|
|
026 (def vertex-index ::vertex-index)
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
027
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
028 (defn vertices
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
029 "If `o` is an object with vertices, return those vertices, else nil."
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
030 [o]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 4 forms covered">
|
|
031 (cond
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 6 forms covered">
|
|
032 (v/vertex? o) (list o)
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 6 forms covered">
|
|
033 (q/polygon? o) (:vertices o)
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 6 forms covered">
|
|
034 (p/path? o) (:vertices o)))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
035
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
036 (defn index-vertex
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
037 "Return a superstructure like `s` in which object `o` is indexed by vertex
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
038 `v`. It is an error (and an exception may be thrown) if
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
039
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
040 1. `s` is not a map;
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
041 2. `o` is not a map;
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
042 3. `o` does not have a value for the key `:walkmap.id/id`;
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
043 4. `v` is not a vertex."
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
044 [s o v]
|
|
</span><br/>
|
|
<span class="covered" title="6 out of 6 forms covered">
|
|
045 (if-not (v/vertex? o)
|
|
</span><br/>
|
|
<span class="covered" title="4 out of 4 forms covered">
|
|
046 (if (:walkmap.id/id o)
|
|
</span><br/>
|
|
<span class="covered" title="4 out of 4 forms covered">
|
|
047 (if (v/vertex? v)
|
|
</span><br/>
|
|
<span class="covered" title="9 out of 9 forms covered">
|
|
048 (let [vi (or (::vertex-index s) {})
|
|
</span><br/>
|
|
<span class="partial" title="9 out of 10 forms covered">
|
|
049 current (or (vi (:walkmap.id/id v)) {})]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
050 ;; deep-merge doesn't merge sets, only maps; so at this
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
051 ;; stage we need to build a map.
|
|
</span><br/>
|
|
<span class="covered" title="15 out of 15 forms covered">
|
|
052 (assoc vi (:walkmap.id/id v) (assoc current (:walkmap.id/id o) (:walkmap.id/id v))))
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 4 forms covered">
|
|
053 (throw (IllegalArgumentException. "Not a vertex: " v)))
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 9 forms covered">
|
|
054 (throw (IllegalArgumentException. (u/truncate (str "No `:walkmap.id/id` value: " o) 80))))
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
055 ;; it shouldn't actually be an error to try to index a vertex, but it
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
056 ;; also isn't useful to do so, so I'd be inclined to ignore it.
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
057 (::vertex-index s)))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
058
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
059 (defn index-vertices
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
060 "Return a superstructure like `s` in which object `o` is indexed by its
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
061 vertices. It is an error (and an exception may be thrown) if
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
062
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
063 1. `s` is not a map;
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
064 2. `o` is not a map;
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
065 3. `o` does not have a value for the key `:walkmap.id/id`."
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
066 [s o]
|
|
</span><br/>
|
|
<span class="covered" title="2 out of 2 forms covered">
|
|
067 (u/deep-merge
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
068 s
|
|
</span><br/>
|
|
<span class="covered" title="2 out of 2 forms covered">
|
|
069 {::vertex-index
|
|
</span><br/>
|
|
<span class="covered" title="2 out of 2 forms covered">
|
|
070 (reduce
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
071 u/deep-merge
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
072 {}
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
073 (map
|
|
</span><br/>
|
|
<span class="covered" title="5 out of 5 forms covered">
|
|
074 #(index-vertex s o %)
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
075 (:vertices o)))}))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
076
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
077 (defn in-retrieve
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
078 "Internal guts of `retrieve`, q.v. `x` can be anything; `s` must be a
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
079 walkmap superstructure. TODO: recursive, quite likely to blow the fragile
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
080 Clojure stack. Probably better to do this with `walk`, but I don't yet
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
081 understand that."
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
082 [x s]
|
|
</span><br/>
|
|
<span class="covered" title="5 out of 5 forms covered">
|
|
083 (cond
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
084 ;; if it's a keyword identifying something in s, retrieve that something.
|
|
</span><br/>
|
|
<span class="covered" title="7 out of 7 forms covered">
|
|
085 (keyword? x) (if (s x)
|
|
</span><br/>
|
|
<span class="covered" title="6 out of 6 forms covered">
|
|
086 (in-retrieve (s x) s)
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
087 x)
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
088 ;; if it's a map, for every key which is not `:walkmap.id/id`, recurse.
|
|
</span><br/>
|
|
<span class="covered" title="6 out of 6 forms covered">
|
|
089 (map? x) (let [v (reduce
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
090 (fn [m k]
|
|
</span><br/>
|
|
<span class="covered" title="10 out of 10 forms covered">
|
|
091 (assoc m k (in-retrieve (x k) s)))
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
092 {}
|
|
</span><br/>
|
|
<span class="covered" title="6 out of 6 forms covered">
|
|
093 (keys (dissoc x :walkmap.id/id)))
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
094 id (:walkmap.id/id x)]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
095 ;; if it has an id, bind it to that id in the returned value.
|
|
</span><br/>
|
|
<span class="covered" title="2 out of 2 forms covered">
|
|
096 (if id
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
097 (assoc
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
098 v
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
099 :walkmap.id/id
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
100 (:walkmap.id/id x))
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 1 forms covered">
|
|
101 v))
|
|
</span><br/>
|
|
<span class="covered" title="4 out of 4 forms covered">
|
|
102 (set? x) x ;; TODO: should I search in sets for objects when storing?
|
|
</span><br/>
|
|
<span class="covered" title="11 out of 11 forms covered">
|
|
103 (coll? x) (map #(in-retrieve % s) x)
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
104 :else x))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
105
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
106 (defn retrieve
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
107 "Retrieve the canonical representation of the object with this `id` from the
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
108 superstructure `s`."
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
109 [id s]
|
|
</span><br/>
|
|
<span class="covered" title="6 out of 6 forms covered">
|
|
110 (in-retrieve (id s) s))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
111
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
112 (defn in-store-find-objects
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
113 "Return an id -> object map of every object within `o`. Internal to
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
114 `in-store`, q.v. Use at your own peril."
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
115 ([o]
|
|
</span><br/>
|
|
<span class="covered" title="4 out of 4 forms covered">
|
|
116 (in-store-find-objects o {}))
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
117 ([o s]
|
|
</span><br/>
|
|
<span class="covered" title="16 out of 16 forms covered">
|
|
118 (l/debug "Finding objects in:" o)
|
|
</span><br/>
|
|
<span class="covered" title="4 out of 4 forms covered">
|
|
119 (cond
|
|
</span><br/>
|
|
<span class="covered" title="4 out of 4 forms covered">
|
|
120 (set? o) s ;; TODO: should I search in sets for objects when storing?
|
|
</span><br/>
|
|
<span class="covered" title="7 out of 7 forms covered">
|
|
121 (map? o) (if (:walkmap.id/id o)
|
|
</span><br/>
|
|
<span class="covered" title="2 out of 2 forms covered">
|
|
122 (assoc
|
|
</span><br/>
|
|
<span class="covered" title="6 out of 6 forms covered">
|
|
123 (in-store-find-objects (vals o) s)
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
124 (:walkmap.id/id o)
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
125 o)
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 6 forms covered">
|
|
126 (in-store-find-objects (vals o) s))
|
|
</span><br/>
|
|
<span class="covered" title="15 out of 15 forms covered">
|
|
127 (coll? o) (reduce merge s (map #(in-store-find-objects % s) o))
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
128 :else s)))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
129
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
130 (defn in-store-replace-with-keys
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
131 "Return a copy of `o` in which each reified walkmap object within `o` has
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
132 been replaced with the `:walkmap.id/id` of that object. Internal to
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
133 `in-store`, q.v. Use at your own peril."
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
134 [o]
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
135 (assoc
|
|
</span><br/>
|
|
<span class="covered" title="15 out of 15 forms covered">
|
|
136 (postwalk #(or (:walkmap.id/id %) %) (dissoc o :walkmap.id/id))
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
137 :walkmap.id/id
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
138 (:walkmap.id/id o)))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
139
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
140 ;; (in-store-replace-with-keys (p/path (v/vertex 0 0 0) (v/vertex 0 1 2) (v/vertex 3 3 3)))
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
141 ;; (in-store-find-objects (p/path (v/vertex 0 0 0) (v/vertex 0 1 2) (v/vertex 3 3 3)))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
142
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
143 (defn store
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
144 "Return a superstructure like `s` with object `o` added. If only one
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
145 argument is supplied it will be assumed to represent `o` and a new
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
146 superstructure will be returned.
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
147
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
148 It is an error (and an exception may be thrown) if
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
149
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
150 1. `s` is not a map;
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
151 2. `o` is not a recognisable walkmap object"
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
152 ([o]
|
|
</span><br/>
|
|
<span class="covered" title="4 out of 4 forms covered">
|
|
153 (store o {}))
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
154 ([o s]
|
|
</span><br/>
|
|
<span class="partial" title="5 out of 6 forms covered">
|
|
155 (when-not (:walkmap.id/id o)
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 1 forms covered">
|
|
156 (throw
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 1 forms covered">
|
|
157 (IllegalArgumentException.
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
158 (str "Not a walkmap object: no value for `:walkmap.id/id`: "
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
159 (u/kind-type o)))))
|
|
</span><br/>
|
|
<span class="partial" title="5 out of 6 forms covered">
|
|
160 (when-not (map? s)
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 1 forms covered">
|
|
161 (throw
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 1 forms covered">
|
|
162 (IllegalArgumentException.
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 6 forms covered">
|
|
163 (str "Superstructure must be a map: " (u/kind-type s)))))
|
|
</span><br/>
|
|
<span class="covered" title="2 out of 2 forms covered">
|
|
164 (assoc
|
|
</span><br/>
|
|
<span class="covered" title="10 out of 10 forms covered">
|
|
165 (u/deep-merge s (in-store-find-objects o) (index-vertices s o))
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
166 (:walkmap.id/id o)
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
167 (in-store-replace-with-keys o))))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
168
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
169 (defn search-vertices
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
170 "Search superstructure `s` for vertices within the box defined by vertices
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
171 `minv` and `maxv`. Every coordinate in `minv` must have a lower value than
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
172 the equivalent coordinate in `maxv`. If `d2?` is supplied and not false,
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
173 search only in the x,y projection."
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
174 ([s minv maxv]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 6 forms covered">
|
|
175 (search-vertices s minv maxv false))
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
176 ([s minv maxv d2?]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 9 forms covered">
|
|
177 (let [minv' (if d2? (assoc minv :z Double/NEGATIVE_INFINITY) minv)
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 8 forms covered">
|
|
178 maxv' (if d2? (assoc maxv :z Double/POSITIVE_INFINITY) maxv)]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
179 (filter
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 5 forms covered">
|
|
180 #(v/within-box? % minv maxv)
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 12 forms covered">
|
|
181 (filter #(= (:kind %) :vertex) (vals s))))))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
182
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
183
|
|
</span><br/>
|
|
</body>
|
|
</html>
|