--- a/src/Pure/Thy/thy_resources.scala Fri Mar 23 22:38:38 2018 +0100
+++ b/src/Pure/Thy/thy_resources.scala Fri Mar 23 22:44:43 2018 +0100
@@ -138,8 +138,13 @@
result.join
}
- def purge_theories(nodes: List[Document.Node.Name] = Nil, all: Boolean = false)
- : List[Document.Node.Name] = resources.purge_theories(session, if (all) None else Some(nodes))
+ def purge_theories(
+ theories: List[String],
+ qualifier: String = Sessions.DRAFT,
+ master_dir: String = "",
+ all: Boolean = false): List[Document.Node.Name] =
+ resources.purge_theories(session, theories = theories, qualifier = qualifier,
+ master_dir = master_dir, all = all)
}
@@ -288,16 +293,21 @@
})
}
- def purge_theories(session: Session, nodes: Option[List[Document.Node.Name]])
- : List[Document.Node.Name] =
+ def purge_theories(session: Session,
+ theories: List[String],
+ qualifier: String = Sessions.DRAFT,
+ master_dir: String = "",
+ all: Boolean = false): List[Document.Node.Name] =
{
+ val nodes = theories.map(import_name(qualifier, master_dir, _))
+
state.change_result(st =>
{
val graph = st.theories_graph
val all_nodes = graph.topological_order
val purge =
- (if (nodes.isEmpty) all_nodes else nodes.get.filter(graph.defined(_))).
+ (if (all) all_nodes else nodes.filter(graph.defined(_))).
filterNot(st.is_required(_)).toSet
val purged = all_nodes.filterNot(graph.all_preds(all_nodes.filterNot(purge)).toSet)