I follow CustomLinkResolverSample.java example and Render AST as Markdown with Formatting Options to implement custom parsing link, but not working.
fun main() {
val str = ""
val options = PegdownOptionsAdapter.flexmarkOptions(
Extensions.ALL
)
val parser = Parser.builder(options).build()
val document = parser.parse(str)
val formatOptions = MutableDataSet()
.set(Parser.EXTENSIONS, Parser.EXTENSIONS.get(options))
.set(
Parser.EXTENSIONS,
Collections.singletonList(SageFormatterExtension.create()) as Collection<Extension>
)
val render = Formatter.builder(formatOptions).build()
val result = render.render(document)
println(result)
}
SageFormatterExtension
class SageFormatterExtension: FormatterExtension {
override fun rendererOptions(options: MutableDataHolder?) {
}
override fun extend(formatterBuilder: Formatter.Builder) {
formatterBuilder.linkResolverFactory(DocxLinkResolver.Factory)
}
companion object {
fun create(): SageFormatterExtension {
return SageFormatterExtension()
}
}
}
DocxLinkResolver
class DocxLinkResolver(val context: LinkResolverBasicContext) : LinkResolver {
override fun resolveLink(node: Node, context: LinkResolverBasicContext, link: ResolvedLink): ResolvedLink {
println("resolveLink")
return link
}
object Factory : LinkResolverFactory {
override fun apply(context: LinkResolverBasicContext): LinkResolver {
return DocxLinkResolver(context)
}
override fun getAfterDependents(): MutableSet<Class<*>>? {
return null
}
override fun getBeforeDependents(): MutableSet<Class<*>>? {
return null
}
override fun affectsGlobalScope(): Boolean {
return false
}
}
}
println("resolveLink") did not run, indicating that the extension was not loaded.
What am I missing? Or is there any other solution?