equal
deleted
inserted
replaced
171 val init: Version = Version(no_id, Map().withDefaultValue(Node.empty)) |
171 val init: Version = Version(no_id, Map().withDefaultValue(Node.empty)) |
172 } |
172 } |
173 |
173 |
174 type Nodes = Map[Node.Name, Node] |
174 type Nodes = Map[Node.Name, Node] |
175 sealed case class Version(val id: Version_ID, val nodes: Nodes) |
175 sealed case class Version(val id: Version_ID, val nodes: Nodes) |
|
176 { |
|
177 def topological_order: List[Node.Name] = |
|
178 { |
|
179 val names = nodes.map({ case (name, node) => (name.node -> name) }) |
|
180 def next(x: Node.Name): List[Node.Name] = |
|
181 nodes(x).header match { |
|
182 case Exn.Res(header) => |
|
183 for (imp <- header.imports; name <- names.get(imp)) yield(name) |
|
184 case Exn.Exn(_) => Nil |
|
185 } |
|
186 Library.topological_order(next, |
|
187 Library.sort_wrt((name: Node.Name) => name.node, nodes.keys.toList)) |
|
188 } |
|
189 } |
176 |
190 |
177 |
191 |
178 /* changes of plain text, eventually resulting in document edits */ |
192 /* changes of plain text, eventually resulting in document edits */ |
179 |
193 |
180 object Change |
194 object Change |