@@ -144,3 +144,76 @@ We can also include hidden ids:
144144 Main__A was used directly 1 times and indirectly 0 times
145145 Main__B was used directly 1 times and indirectly 0 times
146146 Main__C was used directly 1 times and indirectly 0 times
147+
148+ We can use the generated table when generating the json output:
149+
150+ $ odoc link -I . main. odoc
151+
152+ $ odoc compile-index -- json -o index . json -- occurrences occurrences-all. odoc main. odocl
153+
154+ $ cat index . json | jq sort | jq ' .[]' -c
155+ {" id" : [{" kind" : " Root" ," name" : " Main" }]," doc" : " Handwritten top-level module" ," kind" : {" kind" : " Module" }," display" : {" url" : " Main/index.html" ," html" : " <code class=\" entry-kind\" >mod</code><code class=\" entry-title\" ><span class=\" entry-name\" >Main</span></code><div class=\" entry-comment\" ><div><p>Handwritten top-level module</p></div></div>" }," occurrences" : {" direct" : 0 ," indirect" : 11 }}
156+ {" id" : [{" kind" : " Root" ," name" : " Main" },{" kind" : " Module" ," name" : " A" }]," doc" : " " ," kind" : {" kind" : " Module" }," display" : {" url" : " Main/index.html#module-A" ," html" : " <code class=\" entry-kind\" >mod</code><code class=\" entry-title\" ><span class=\" prefix-name\" >Main.</span><span class=\" entry-name\" >A</span></code><div class=\" entry-comment\" ><div></div></div>" }," occurrences" : {" direct" : 4 ," indirect" : 6 }}
157+ {" id" : [{" kind" : " Root" ," name" : " Main" },{" kind" : " Module" ," name" : " B" }]," doc" : " " ," kind" : {" kind" : " Module" }," display" : {" url" : " Main/index.html#module-B" ," html" : " <code class=\" entry-kind\" >mod</code><code class=\" entry-title\" ><span class=\" prefix-name\" >Main.</span><span class=\" entry-name\" >B</span></code><div class=\" entry-comment\" ><div></div></div>" }," occurrences" : {" direct" : 1 ," indirect" : 0 }}
158+ {" id" : [{" kind" : " Root" ," name" : " Main" },{" kind" : " Module" ," name" : " B" },{" kind" : " Module" ," name" : " M" }]," doc" : " " ," kind" : {" kind" : " Module" }," display" : {" url" : " Main/B/index.html#module-M" ," html" : " <code class=\" entry-kind\" >mod</code><code class=\" entry-title\" ><span class=\" prefix-name\" >Main.B.</span><span class=\" entry-name\" >M</span></code><div class=\" entry-comment\" ><div></div></div>" }," occurrences" : null}
159+ {" id" : [{" kind" : " Root" ," name" : " Main" },{" kind" : " Module" ," name" : " B" },{" kind" : " Module" ," name" : " Y" }]," doc" : " " ," kind" : {" kind" : " Module" }," display" : {" url" : " Main/B/index.html#module-Y" ," html" : " <code class=\" entry-kind\" >mod</code><code class=\" entry-title\" ><span class=\" prefix-name\" >Main.B.</span><span class=\" entry-name\" >Y</span></code><div class=\" entry-comment\" ><div></div></div>" }," occurrences" : null}
160+ {" id" : [{" kind" : " Root" ," name" : " Main" },{" kind" : " Module" ," name" : " B" },{" kind" : " Module" ," name" : " Z" }]," doc" : " " ," kind" : {" kind" : " Module" }," display" : {" url" : " Main/B/index.html#module-Z" ," html" : " <code class=\" entry-kind\" >mod</code><code class=\" entry-title\" ><span class=\" prefix-name\" >Main.B.</span><span class=\" entry-name\" >Z</span></code><div class=\" entry-comment\" ><div></div></div>" }," occurrences" : null}
161+ {" id" : [{" kind" : " Root" ," name" : " Main" },{" kind" : " Module" ," name" : " B" },{" kind" : " Module" ," name" : " Z" },{" kind" : " Module" ," name" : " Y" }]," doc" : " " ," kind" : {" kind" : " Module" }," display" : {" url" : " Main/B/Z/index.html#module-Y" ," html" : " <code class=\" entry-kind\" >mod</code><code class=\" entry-title\" ><span class=\" prefix-name\" >Main.B.Z.</span><span class=\" entry-name\" >Y</span></code><div class=\" entry-comment\" ><div></div></div>" }," occurrences" : null}
162+ {" id" : [{" kind" : " Root" ," name" : " Main" },{" kind" : " Module" ," name" : " A" },{" kind" : " ModuleType" ," name" : " M" }]," doc" : " " ," kind" : {" kind" : " ModuleType" }," display" : {" url" : " Main/A/index.html#module-type-M" ," html" : " <code class=\" entry-kind\" >sig</code><code class=\" entry-title\" ><span class=\" prefix-name\" >Main.A.</span><span class=\" entry-name\" >M</span></code><div class=\" entry-comment\" ><div></div></div>" }," occurrences" : {" direct" : 2 ," indirect" : 0 }}
163+ {" id" : [{" kind" : " Root" ," name" : " Main" },{" kind" : " Module" ," name" : " B" },{" kind" : " ModuleType" ," name" : " Y" }]," doc" : " " ," kind" : {" kind" : " ModuleType" }," display" : {" url" : " Main/B/index.html#module-type-Y" ," html" : " <code class=\" entry-kind\" >sig</code><code class=\" entry-title\" ><span class=\" prefix-name\" >Main.B.</span><span class=\" entry-name\" >Y</span></code><div class=\" entry-comment\" ><div></div></div>" }," occurrences" : null}
164+ {" id" : [{" kind" : " Root" ," name" : " Main" },{" kind" : " Module" ," name" : " A" },{" kind" : " Type" ," name" : " t" }]," doc" : " " ," kind" : {" kind" : " TypeDecl" ," private" : false," manifest" : " string" ," constraints" : []}," display" : {" url" : " Main/A/index.html#type-t" ," html" : " <code class=\" entry-kind\" >type</code><code class=\" entry-title\" ><span class=\" prefix-name\" >Main.A.</span><span class=\" entry-name\" >t</span><code class=\" entry-rhs\" > = string</code></code><div class=\" entry-comment\" ><div></div></div>" }," occurrences" : {" direct" : 1 ," indirect" : 0 }}
165+ {" id" : [{" kind" : " Root" ," name" : " Main" },{" kind" : " Module" ," name" : " A" },{" kind" : " Value" ," name" : " (||>)" }]," doc" : " " ," kind" : {" kind" : " Value" ," type" : " int -> int -> int" }," display" : {" url" : " Main/A/index.html#val-(||>)" ," html" : " <code class=\" entry-kind\" >val</code><code class=\" entry-title\" ><span class=\" prefix-name\" >Main.A.</span><span class=\" entry-name\" >(||& gt ;)</span><code class=\" entry-rhs\" > : int -& gt ; int -& gt ; int</code></code><div class=\" entry-comment\" ><div></div></div>" }," occurrences" : {" direct" : 1 ," indirect" : 0 }}
166+ {" id" : [{" kind" : " Root" ," name" : " Main" },{" kind" : " Module" ," name" : " A" },{" kind" : " Value" ," name" : " x" }]," doc" : " " ," kind" : {" kind" : " Value" ," type" : " int" }," display" : {" url" : " Main/A/index.html#val-x" ," html" : " <code class=\" entry-kind\" >val</code><code class=\" entry-title\" ><span class=\" prefix-name\" >Main.A.</span><span class=\" entry-name\" >x</span><code class=\" entry-rhs\" > : int</code></code><div class=\" entry-comment\" ><div></div></div>" }," occurrences" : {" direct" : 2 ," indirect" : 0 }}
167+ {" id" : [{" kind" : " Root" ," name" : " Main" },{" kind" : " Module" ," name" : " B" },{" kind" : " Value" ," name" : " y" }]," doc" : " " ," kind" : {" kind" : " Value" ," type" : " int" }," display" : {" url" : " Main/B/index.html#val-y" ," html" : " <code class=\" entry-kind\" >val</code><code class=\" entry-title\" ><span class=\" prefix-name\" >Main.B.</span><span class=\" entry-name\" >y</span><code class=\" entry-rhs\" > : int</code></code><div class=\" entry-comment\" ><div></div></div>" }," occurrences" : null}
168+ {" id" : [{" kind" : " Root" ," name" : " Main" },{" kind" : " Module" ," name" : " B" },{" kind" : " Module" ," name" : " Z" },{" kind" : " Value" ," name" : " y" }]," doc" : " " ," kind" : {" kind" : " Value" ," type" : " int" }," display" : {" url" : " Main/B/Z/index.html#val-y" ," html" : " <code class=\" entry-kind\" >val</code><code class=\" entry-title\" ><span class=\" prefix-name\" >Main.B.Z.</span><span class=\" entry-name\" >y</span><code class=\" entry-rhs\" > : int</code></code><div class=\" entry-comment\" ><div></div></div>" }," occurrences" : null}
169+
170+ $ cat index . json | jq sort | head -n 33
171+ [
172+ {
173+ " id" : [
174+ {
175+ " kind" : " Root" ,
176+ " name" : " Main"
177+ }
178+ ],
179+ " doc" : " Handwritten top-level module" ,
180+ " kind" : {
181+ " kind" : " Module"
182+ },
183+ " display" : {
184+ " url" : " Main/index.html" ,
185+ " html" : " <code class=\" entry-kind\" >mod</code><code class=\" entry-title\" ><span class=\" entry-name\" >Main</span></code><div class=\" entry-comment\" ><div><p>Handwritten top-level module</p></div></div>"
186+ },
187+ " occurrences" : {
188+ " direct" : 0 ,
189+ " indirect" : 11
190+ }
191+ },
192+ {
193+ " id" : [
194+ {
195+ " kind" : " Root" ,
196+ " name" : " Main"
197+ },
198+ {
199+ " kind" : " Module" ,
200+ " name" : " A"
201+ }
202+ ],
203+ " doc" : " " ,
204+
205+ $ cat index . json | jq -r ' .[] | "\(.id | map("\(.kind)-\(.name)") | join(".")), direct: \(.occurrences.direct), indirect: \(.occurrences.indirect)"' | sort
206+ Root-Main, direct: 0 , indirect: 11
207+ Root-Main. Module-A, direct: 4 , indirect: 6
208+ Root-Main. Module-A. ModuleType-M, direct: 2 , indirect: 0
209+ Root-Main. Module-A. Type-t, direct: 1 , indirect: 0
210+ Root-Main. Module-A. Value-(|| > ), direct: 1 , indirect: 0
211+ Root-Main. Module-A. Value-x , direct: 2 , indirect: 0
212+ Root-Main. Module-B, direct: 1 , indirect: 0
213+ Root-Main. Module-B. Module-M, direct: null, indirect: null
214+ Root-Main. Module-B. Module-Y, direct: null, indirect: null
215+ Root-Main. Module-B. Module-Z , direct: null, indirect: null
216+ Root-Main. Module-B. Module-Z . Module-Y, direct: null, indirect: null
217+ Root-Main. Module-B. Module-Z . Value-y, direct: null, indirect: null
218+ Root-Main. Module-B. ModuleType-Y, direct: null, indirect: null
219+ Root-Main. Module-B. Value-y, direct: null, indirect: null
0 commit comments