src/Pure/Thy/export.scala
changeset 75780 f49c4f160b84
parent 75779 5470c67bd772
child 75782 dba571dd0ba9
equal deleted inserted replaced
75779:5470c67bd772 75780:f49c4f160b84
   330 
   330 
   331     def session_name: String =
   331     def session_name: String =
   332       if (document_snapshot.isDefined) Sessions.DRAFT
   332       if (document_snapshot.isDefined) Sessions.DRAFT
   333       else session_base.session_name
   333       else session_base.session_name
   334 
   334 
       
   335     def session_database(session: String = session_name): Option[Session_Database] =
       
   336       db_hierarchy.find(_.session == session)
       
   337 
       
   338     def session_db(session: String = session_name): Option[SQL.Database] =
       
   339       session_database(session = session).map(_.db)
       
   340 
   335     def session_stack: List[String] =
   341     def session_stack: List[String] =
   336       ((if (document_snapshot.isDefined) List(session_name) else Nil) :::
   342       ((if (document_snapshot.isDefined) List(session_name) else Nil) :::
   337         db_hierarchy.map(_.session)).reverse
   343         db_hierarchy.map(_.session)).reverse
   338 
   344 
   339     private def select[A](
   345     private def select[A](
   347             snapshot <- document_snapshot.iterator
   353             snapshot <- document_snapshot.iterator
   348             entry_name <- snapshot.all_exports.keysIterator
   354             entry_name <- snapshot.all_exports.keysIterator
   349             res <- select1(entry_name).iterator
   355             res <- select1(entry_name).iterator
   350           } yield entry_name -> res).toList.sortBy(_._1.compound_name).map(_._2)
   356           } yield entry_name -> res).toList.sortBy(_._1.compound_name).map(_._2)
   351         }
   357         }
   352         else { db_hierarchy.find(_.session == name).map(select2).getOrElse(Nil) }
   358         else { session_database(name).map(select2).getOrElse(Nil) }
   353       if (session.nonEmpty) sel(session) else session_stack.flatMap(sel)
   359       if (session.nonEmpty) sel(session) else session_stack.flatMap(sel)
   354     }
   360     }
   355 
   361 
   356     def entry_names(session: String = session_name): List[Entry_Name] =
   362     def entry_names(session: String = session_name): List[Entry_Name] =
   357       select(session, Some(_), _.entry_names)
   363       select(session, Some(_), _.entry_names)
   383         case Some(entry) => entry
   389         case Some(entry) => entry
   384       }
   390       }
   385 
   391 
   386     def theory(theory: String): Theory_Context =
   392     def theory(theory: String): Theory_Context =
   387       new Theory_Context(session_context, theory)
   393       new Theory_Context(session_context, theory)
   388 
       
   389     def read_document(session: String, name: String): Option[Document_Build.Document_Output] =
       
   390       db_hierarchy.find(_.session == session).flatMap(session_db =>
       
   391         Document_Build.read_document(session_db.db, session_db.session, name))
       
   392 
   394 
   393     override def toString: String =
   395     override def toString: String =
   394       "Export.Session_Context(" + commas_quote(session_stack) + ")"
   396       "Export.Session_Context(" + commas_quote(session_stack) + ")"
   395   }
   397   }
   396 
   398