misc tuning and clarification;
authorwenzelm
Thu, 18 Aug 2022 11:24:20 +0200
changeset 75896 25fc7501b882
parent 75895 c3d57eeff21d
child 75897 989847d1ebab
misc tuning and clarification;
src/Pure/Thy/presentation.scala
--- a/src/Pure/Thy/presentation.scala	Thu Aug 18 10:36:08 2022 +0200
+++ b/src/Pure/Thy/presentation.scala	Thu Aug 18 11:24:20 2022 +0200
@@ -117,21 +117,22 @@
     val empty: Node_Info = new Node_Info(Map.empty, Map.empty, Nil)
     def make(theory: Export_Theory.Theory): Node_Info = {
       val by_range = theory.entity_iterator.toList.groupBy(_.range)
-      val by_kind_name =
-        theory.entity_iterator.map(entity => ((entity.kind, entity.name), entity)).toMap
+      val by_kname = theory.entity_iterator.map(entity => entity.kname -> entity).toMap
       val others = theory.others.keySet.toList
-      new Node_Info(by_range, by_kind_name, others)
+      new Node_Info(by_range, by_kname, others)
     }
   }
 
   class Node_Info private(
     by_range: Map[Symbol.Range, List[Export_Theory.Entity0]],
-    by_kind_name: Map[(String, String), Export_Theory.Entity0],
-    val others: List[String]) {
-    def for_range(range: Symbol.Range): List[Export_Theory.Entity0] =
+    by_kname: Map[String, Export_Theory.Entity0],
+    val others: List[String]
+  ) {
+    def get_defs(range: Symbol.Range): List[Export_Theory.Entity0] =
       by_range.getOrElse(range, Nil)
-    def get_kind_name(kind: String, name: String): Option[String] =
-      by_kind_name.get((kind, name)).map(_.kname)
+    def get_def(kind: String, name: String): Option[Export_Theory.Entity0] = {
+      by_kname.get(Export_Theory.export_kind_name(kind, name))
+    }
   }
 
   object Nodes {
@@ -229,14 +230,14 @@
             case List(XML.Elem(Markup("span", List("id" -> _)), _)) => None
             case _ =>
               Some {
-                val entities = html_context.nodes(node.theory).for_range(range)
                 val body1 =
                   if (seen_ranges.contains(range)) {
                     HTML.entity_def(HTML.span(HTML.id(offset_id(range)), body))
                   }
                   else HTML.span(body)
-                entities.map(_.kname).foldLeft(body1) {
-                  case (elem, id) => HTML.entity_def(HTML.span(HTML.id(id), List(elem)))
+                html_context.nodes(node.theory).get_defs(range).foldLeft(body1) {
+                  case (elem, entity) =>
+                    HTML.entity_def(HTML.span(HTML.id(entity.kname), List(elem)))
                 }
               }
           }
@@ -256,7 +257,10 @@
         }
 
         private def logical_ref(thy_name: String, kind: String, name: String): Option[String] =
-          html_context.nodes.get(thy_name).flatMap(_.get_kind_name(kind, name))
+          for {
+            node_info <- html_context.nodes.get(thy_name)
+            entity <- node_info.get_def(kind, name)
+          } yield entity.kname
 
         override def make_ref(props: Properties.T, body: XML.Body): Option[XML.Elem] = {
           props match {