PreProcessorTemplateLoader.loadTemplate(env.processTree(subNodes).treeToText())
}
}),
+ RANDOM(PreProcessorLexerTag { env, param, subNodes ->
+ param.forbidParam("random") {
+ subNodes
+ .flatMap { subNode ->
+ if (subNode is ParserTreeNode.Tag && subNode isTag "item")
+ listOf(subNode)
+ else
+ env.processNode(subNode)
+ }
+ .filterIsInstance<ParserTreeNode.Tag>()
+ .filter { it isTag "item" }
+ .randomOrNull()
+ ?.subNodes
+ ?.let { env.processTree(it) }
+ ?: formatErrorToParserTree("At least one [item] subtag required inside body of [random] tag")
+ }
+ }),
;
companion object {
}
fun Exception.renderInBBCode(): ParserTree = listOf(
- ParserTreeNode.Tag("error", null, listOf(
- ParserTreeNode.Tag("b", null, listOf(ParserTreeNode.Text("${this::class.qualifiedName}: $message"))),
- ParserTreeNode.LineBreak,
- ParserTreeNode.Tag("ul", null,
- stackTraceToString().split(System.lineSeparator()).map {
- ParserTreeNode.Tag("li", null, listOf(ParserTreeNode.Text(it)))
- }
- ),
- )),
+ ParserTreeNode.Tag(
+ "error", null, listOf(
+ ParserTreeNode.Tag("b", null, listOf(ParserTreeNode.Text("${this::class.qualifiedName}: $message"))),
+ ParserTreeNode.LineBreak,
+ ParserTreeNode.Tag(
+ "ul", null,
+ stackTraceToString().split(System.lineSeparator()).map {
+ ParserTreeNode.Tag("li", null, listOf(ParserTreeNode.Text(it)))
+ }
+ ),
+ )),
)