diff --git a/src/main/scala/gitbucket/core/view/Markdown.scala b/src/main/scala/gitbucket/core/view/Markdown.scala index 763d4de..3a80b8f 100644 --- a/src/main/scala/gitbucket/core/view/Markdown.scala +++ b/src/main/scala/gitbucket/core/view/Markdown.scala @@ -167,8 +167,8 @@ val child = node.getChildren.asScala.headOption val anchorName = child match { case Some(x: AnchorLinkNode) => x.getName - case Some(x: TextNode) => x.getText // TODO - case _ => GitBucketHtmlSerializer.generateAnchorName(printChildrenToString(node)) + case Some(x: TextNode) => x.getText + case _ => GitBucketHtmlSerializer.generateAnchorName(extractText(node)) // TODO } printer.print(s"""<$tag class="markdown-head">""") @@ -183,6 +183,15 @@ printer.print(s"") } + private def extractText(node: Node): String = { + val sb = new StringBuilder() + node.getChildren.asScala.map { + case x: TextNode => sb.append(x.getText) + case x: Node => sb.append(extractText(x)) + } + sb.toString() + } + override def visit(node: HeaderNode): Unit = { printHeaderTag(node) }