SNARK-71: buildDependencyGraph is implemented
This commit is contained in:
parent
088697da78
commit
c76ecd592f
@ -7,25 +7,44 @@ import java.nio.file.Path
|
|||||||
private val DEFAULT_DOCUMENT_ROOT = "main.md"
|
private val DEFAULT_DOCUMENT_ROOT = "main.md"
|
||||||
|
|
||||||
public suspend fun buildDocument(documentDirectory: Directory) {
|
public suspend fun buildDocument(documentDirectory: Directory) {
|
||||||
|
|
||||||
val dependencyGraph = buildDependencyGraph(documentDirectory)
|
val dependencyGraph = buildDependencyGraph(documentDirectory)
|
||||||
|
|
||||||
TODO() /*resolving of dependencies*/
|
TODO() /*resolving of dependencies*/
|
||||||
}
|
}
|
||||||
|
|
||||||
public suspend fun buildDependencyGraph(root: Directory) : DependencyGraph {
|
public suspend fun buildDependencyGraph(root: Directory): DependencyGraph {
|
||||||
// val rootDcoument = root.get(DEFAULT_DOCUMENT_ROOT)
|
val nodes = HashMap<FileName, DependencyGraphNode>()
|
||||||
|
|
||||||
// val filesToParse: Queue<FileReader> = LinkedList<FileReader>(listOf(root))
|
// buildNodes(root, nodes)
|
||||||
// var documentName = "."
|
|
||||||
|
|
||||||
// val nodes = HashMap<FileName, DependencyGraphNode>()
|
val rootDcoument = root.get(DEFAULT_DOCUMENT_ROOT)
|
||||||
|
|
||||||
// while (!filesToParse.isEmpty())
|
nodes.put(".", buildDependencyGraphNode(rootDcoument.readAll()))
|
||||||
// {
|
|
||||||
// dependencyGraphNode = buildDependencyNode(filesToParse.remove())
|
|
||||||
|
|
||||||
// nodes.put()
|
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)
|
||||||
|
}
|
||||||
|
|
||||||
|
// private suspend fun buildNodes(folder: Directory, nodes: HashMap<FileName, DependencyGraphNode>) {
|
||||||
|
// assert(!nodes.containsKey(folder.getPath()))
|
||||||
|
// }
|
||||||
|
|
||||||
|
public suspend fun getDependencies(node: DependencyGraphNode): Set<FileName> {
|
||||||
TODO()
|
TODO()
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user