Pass directory and root separately
This commit is contained in:
parent
0df78294a1
commit
9031638910
@ -9,6 +9,7 @@ import kotlinx.html.dom.createHTMLDocument
|
|||||||
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
|
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
|
||||||
import com.fasterxml.jackson.module.kotlin.readValue
|
import com.fasterxml.jackson.module.kotlin.readValue
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
|
import kotlin.io.path.*
|
||||||
|
|
||||||
private val SNARK_HTML_RENDER = "snark-document-builder/src/main/nodejs/HtmlRenderer.js"
|
private val SNARK_HTML_RENDER = "snark-document-builder/src/main/nodejs/HtmlRenderer.js"
|
||||||
fun getHtml(ast_string: String): String
|
fun getHtml(ast_string: String): String
|
||||||
@ -21,35 +22,37 @@ fun getHtml(ast_string: String): String
|
|||||||
|
|
||||||
private val DEFAULT_DOCUMENT_ROOT = "main.md"
|
private val DEFAULT_DOCUMENT_ROOT = "main.md"
|
||||||
|
|
||||||
public suspend fun buildDocument(documentDirectory: Directory): String {
|
public suspend fun buildDocument(root: Directory, path: Path): String {
|
||||||
val dependencyGraph = buildDependencyGraph(documentDirectory)
|
val dependencyGraph = buildDependencyGraph(root, path)
|
||||||
|
|
||||||
val root: MdAstRoot = dependencyGraph.nodes[documentDirectory.path.toString()]!!.mdAst
|
println("dependency graph nodes (size: ${dependencyGraph.nodes.size}):\n${dependencyGraph.nodes}")
|
||||||
|
|
||||||
|
val root: MdAstRoot = dependencyGraph.nodes[path.toString()]!!.mdAst
|
||||||
|
|
||||||
return getHtml(jacksonObjectMapper().writeValueAsString(root))
|
return getHtml(jacksonObjectMapper().writeValueAsString(root))
|
||||||
}
|
}
|
||||||
|
|
||||||
public suspend fun buildDependencyGraph(root: Directory): DependencyGraph {
|
public suspend fun buildDependencyGraph(root: Directory, path: Path): DependencyGraph {
|
||||||
val nodes = HashMap<FileName, DependencyGraphNode>()
|
val nodes = HashMap<FileName, DependencyGraphNode>()
|
||||||
|
|
||||||
buildNodes(root, nodes)
|
buildNodes(root, path, nodes)
|
||||||
|
|
||||||
return DependencyGraph(nodes)
|
return DependencyGraph(nodes)
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun buildNodes(folder: Directory, nodes: HashMap<FileName, DependencyGraphNode>) {
|
private suspend fun buildNodes(root: Directory, path: Path, nodes: HashMap<FileName, DependencyGraphNode>) {
|
||||||
val pathString = folder.path.toString()
|
val pathString = path.toString()
|
||||||
|
|
||||||
assert(!nodes.containsKey(pathString))
|
assert(!nodes.containsKey(pathString))
|
||||||
|
|
||||||
val rootDcoument = folder.get(DEFAULT_DOCUMENT_ROOT)
|
val rootDcoument = (root / path).get(DEFAULT_DOCUMENT_ROOT)
|
||||||
nodes.put(pathString, buildDependencyGraphNode(rootDcoument.readAll(), folder.path))
|
nodes.put(pathString, buildDependencyGraphNode(rootDcoument.readAll(), path))
|
||||||
|
|
||||||
val dependencies = getDependencies(nodes.getValue(pathString))
|
val dependencies = getDependencies(nodes.getValue(pathString))
|
||||||
|
|
||||||
for (dependency in dependencies) {
|
for (dependency in dependencies) {
|
||||||
if (!nodes.containsKey(dependency))
|
if (!nodes.containsKey(dependency))
|
||||||
buildNodes(folder.getSubdir(Paths.get(dependency)), nodes)
|
buildNodes(root, Path(dependency), nodes)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,10 +7,10 @@ import java.nio.file.Path
|
|||||||
|
|
||||||
internal class ServerDataHolder(private val directory: Directory): DataHolder {
|
internal class ServerDataHolder(private val directory: Directory): DataHolder {
|
||||||
|
|
||||||
override suspend fun init(relativePath: Path): Directory = directory.getSubdir(relativePath)
|
override suspend fun init(relativePath: Path): Directory = directory
|
||||||
|
|
||||||
|
|
||||||
override suspend fun represent(relativePath: Path): String {
|
override suspend fun represent(relativePath: Path): String {
|
||||||
return buildDocument(init(relativePath))
|
return buildDocument(directory, relativePath)
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user