diff --git a/src/main/scala/gitbucket/core/view/Markdown.scala b/src/main/scala/gitbucket/core/view/Markdown.scala index 3cb387f..3a80b8f 100644 --- a/src/main/scala/gitbucket/core/view/Markdown.scala +++ b/src/main/scala/gitbucket/core/view/Markdown.scala @@ -113,8 +113,8 @@ repository: RepositoryService.RepositoryInfo, enableWikiLink: Boolean, enableRefsLink: Boolean, - enableTaskList: Boolean, enableAnchor: Boolean, + enableTaskList: Boolean, hasWritePermission: Boolean, pages: List[String] )(implicit val context: Context) extends ToHtmlSerializer( @@ -164,17 +164,34 @@ private def printHeaderTag(node: HeaderNode): Unit = { val tag = s"h${node.getLevel}" - val headerTextString = printChildrenToString(node) - val anchorName = GitBucketHtmlSerializer.generateAnchorName(headerTextString) + val child = node.getChildren.asScala.headOption + val anchorName = child match { + case Some(x: AnchorLinkNode) => x.getName + case Some(x: TextNode) => x.getText + case _ => GitBucketHtmlSerializer.generateAnchorName(extractText(node)) // TODO + } + printer.print(s"""<$tag class="markdown-head">""") if(enableAnchor){ printer.print(s"""""") printer.print(s"""""") } - visitChildren(node) + child match { + case Some(x: AnchorLinkNode) => printer.print(x.getText) + case _ => visitChildren(node) + } 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) } diff --git a/src/main/twirl/gitbucket/core/account/newrepo.scala.html b/src/main/twirl/gitbucket/core/account/newrepo.scala.html index f919574..0a0869b 100644 --- a/src/main/twirl/gitbucket/core/account/newrepo.scala.html +++ b/src/main/twirl/gitbucket/core/account/newrepo.scala.html @@ -31,7 +31,7 @@