diff --git a/src/main/scala/gitbucket/core/view/Markdown.scala b/src/main/scala/gitbucket/core/view/Markdown.scala index 03e1eff..5f8a169 100644 --- a/src/main/scala/gitbucket/core/view/Markdown.scala +++ b/src/main/scala/gitbucket/core/view/Markdown.scala @@ -42,16 +42,29 @@ } else s val options = new Options() - val renderer = new GitBucketMarkedRenderer(options, repository, enableWikiLink, enableRefsLink, enableTaskList, hasWritePermission, pages) + val renderer = new GitBucketMarkedRenderer(options, repository, enableWikiLink, enableRefsLink, enableAnchor, enableTaskList, hasWritePermission, pages) Marked.marked(source, options, renderer) } } class GitBucketMarkedRenderer(options: Options, repository: RepositoryService.RepositoryInfo, - enableWikiLink: Boolean, enableRefsLink: Boolean, enableTaskList: Boolean, hasWritePermission: Boolean, + enableWikiLink: Boolean, enableRefsLink: Boolean, enableAnchor: Boolean, enableTaskList: Boolean, hasWritePermission: Boolean, pages: List[String]) (implicit val context: Context) extends Renderer(options) with LinkConverter with RequestCache { + override def heading(text: String, level: Int, raw: String): String = { + val out = new StringBuilder() + out.append("") + out.append(text) + if(enableAnchor){ + val anchorName = GitBucketHtmlSerializer.generateAnchorName(text.replaceAll("<.*>", "")) + out.append("") + out.append("") + } + out.append("\n") + out.toString() + } + override def code(code: String, lang: Optional[String], escaped: Boolean): String = { "
" +
       (if(escaped) code else escape(code, true)) + "
" @@ -74,9 +87,9 @@ override def listitem(text: String): String = { if(text.contains("""class="task-list-item-checkbox" """)){ - return "
  • " + text + "
  • " + return "
  • " + text + "
  • \n" } else { - return "
  • " + text + "
  • " + return "
  • " + text + "
  • \n" } } @@ -163,27 +176,6 @@ // printer.print('>').print(rendering.text).print("") // } // -// private def printHeaderTag(node: HeaderNode): Unit = { -// val tag = s"h${node.getLevel}" -// 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"""""") -// } -// child match { -// case Some(x: AnchorLinkNode) => printer.print(x.getText) -// case _ => visitChildren(node) -// } -// printer.print(s"") -// } -// // override def visit(node: VerbatimNode) { // val printer = new Printer() // val serializer = verbatimSerializers.get(VerbatimSerializer.DEFAULT)