SNARK-71: better implementation
This commit is contained in:
parent
c76ecd592f
commit
54828a6535
@ -15,35 +15,25 @@ public suspend fun buildDocument(documentDirectory: Directory) {
|
|||||||
public suspend fun buildDependencyGraph(root: Directory): DependencyGraph {
|
public suspend fun buildDependencyGraph(root: Directory): DependencyGraph {
|
||||||
val nodes = HashMap<FileName, DependencyGraphNode>()
|
val nodes = HashMap<FileName, DependencyGraphNode>()
|
||||||
|
|
||||||
// buildNodes(root, nodes)
|
buildNodes(root, nodes)
|
||||||
|
|
||||||
val rootDcoument = root.get(DEFAULT_DOCUMENT_ROOT)
|
|
||||||
|
|
||||||
nodes.put(".", buildDependencyGraphNode(rootDcoument.readAll()))
|
|
||||||
|
|
||||||
val filesToParse = getDependencies(nodes.getValue("."))
|
|
||||||
|
|
||||||
while (!filesToParse.isEmpty())
|
|
||||||
{
|
|
||||||
val currentFile = filesToParse.remove()
|
|
||||||
val currentDocument = Directory(currentFile).get(DEFAULT_DOCUMENT_ROOT)
|
|
||||||
|
|
||||||
nodes.put(currentFile, buildDependencyGraphNode(currentDocument.readAll()))
|
|
||||||
|
|
||||||
val currentDependencies = getDependencies(nodes.getValue(currentFile))
|
|
||||||
|
|
||||||
for (fileName in currentDependencies) {
|
|
||||||
if (!nodes.containsKey(fileName) && !filesToParse.contains(fileName))
|
|
||||||
filesToParse.add(fileName)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return DependencyGraph(nodes)
|
return DependencyGraph(nodes)
|
||||||
}
|
}
|
||||||
|
|
||||||
// private suspend fun buildNodes(folder: Directory, nodes: HashMap<FileName, DependencyGraphNode>) {
|
private suspend fun buildNodes(folder: Directory, nodes: HashMap<FileName, DependencyGraphNode>) {
|
||||||
// assert(!nodes.containsKey(folder.getPath()))
|
assert(!nodes.containsKey(folder.getPath()))
|
||||||
// }
|
|
||||||
|
val path = folder.getPath()
|
||||||
|
val rootDcoument = folder.get(DEFAULT_DOCUMENT_ROOT)
|
||||||
|
nodes.put(path, buildDependencyGraphNode(rootDcoument.readAll()))
|
||||||
|
|
||||||
|
val dependencies = getDependencies(nodes.getValue(path))
|
||||||
|
|
||||||
|
for (dependency in dependencies) {
|
||||||
|
if (!nodes.containsKey(dependency))
|
||||||
|
buildNodes(folder.getSubdir(dependency), nodes)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public suspend fun getDependencies(node: DependencyGraphNode): Set<FileName> {
|
public suspend fun getDependencies(node: DependencyGraphNode): Set<FileName> {
|
||||||
TODO()
|
TODO()
|
||||||
|
Loading…
Reference in New Issue
Block a user