From 69bc6c2ae35883286d9c2b8cc77d5fa0a8c37351 Mon Sep 17 00:00:00 2001 From: pacien Date: Thu, 26 Jul 2018 11:34:06 +0200 Subject: Kotlin rewrite, adding diagram options --- .../pacien/pandoc/filter/plantuml/PandocNode.kt | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/main/kotlin/org/pacien/pandoc/filter/plantuml/PandocNode.kt (limited to 'src/main/kotlin/org/pacien/pandoc/filter/plantuml/PandocNode.kt') diff --git a/src/main/kotlin/org/pacien/pandoc/filter/plantuml/PandocNode.kt b/src/main/kotlin/org/pacien/pandoc/filter/plantuml/PandocNode.kt new file mode 100644 index 0000000..8b3ddde --- /dev/null +++ b/src/main/kotlin/org/pacien/pandoc/filter/plantuml/PandocNode.kt @@ -0,0 +1,30 @@ +package org.pacien.pandoc.filter.plantuml + +import com.fasterxml.jackson.databind.JsonNode +import com.fasterxml.jackson.databind.node.ObjectNode +import com.fasterxml.jackson.databind.node.TextNode + +// Structure of a content node: +// { +// "t": "CodeBlock", +// "c": [ +// [ +// "", +// [ "puml", "otherClass" ], +// [ ["scale", "0.5"], ["key", "value"] ] +// ], +// "@startuml\n@enduml" +// ] +// } + +fun JsonNode.type(): String = path("t").asText() +fun JsonNode.classes(): JsonNode = path("c").path(0).path(1) +fun JsonNode.classNames(): List = classes().map(JsonNode::asText) +fun JsonNode.attributes(): JsonNode = path("c").path(0).path(2) +fun JsonNode.attributePair(): Pair = Pair(path(0).asText(), path(1).asText()) +fun JsonNode.attributeMap(): Map = attributes().associate(JsonNode::attributePair) +fun JsonNode.content(): String = path("c").path(1).asText() + +fun ObjectNode.setBlockType(type: String) = apply { set("t", TextNode.valueOf(type)) } +fun ObjectNode.setBlockContent(content: JsonNode) = apply { set("c", content) } +fun ObjectNode.setBlock(type: String, content: JsonNode) = setBlockType(type).setBlockContent(content) -- cgit v1.2.3