Newer
Older
GitBucket / src / main / scala / gitbucket / core / plugin / Renderer.scala
@Naoki Takezoe Naoki Takezoe on 22 Oct 2017 1 KB Fix plain text readme rendering
package gitbucket.core.plugin

import gitbucket.core.controller.Context
import gitbucket.core.service.RepositoryService
import gitbucket.core.view.Markdown
import gitbucket.core.view.helpers.urlLink
import play.twirl.api.Html

/**
 * A render engine to render content to HTML.
 */
trait Renderer {

  /**
   * Render the given request to HTML.
   */
  def render(request: RenderRequest): Html

}

object MarkdownRenderer extends Renderer {
  override def render(request: RenderRequest): Html = {
    import request._
    Html(Markdown.toHtml(
      markdown         = fileContent,
      repository       = repository,
      enableWikiLink   = enableWikiLink,
      enableRefsLink   = enableRefsLink,
      enableAnchor     = enableAnchor,
      enableLineBreaks = false
    )(context))
  }
}

object DefaultRenderer extends Renderer {
  override def render(request: RenderRequest): Html = {
    Html(s"""<tt><pre class="plain">${urlLink(request.fileContent)}</pre></tt>""")
  }
}

case class RenderRequest(
  filePath: List[String],
  fileContent: String,
  branch: String,
  repository: RepositoryService.RepositoryInfo,
  enableWikiLink: Boolean,
  enableRefsLink: Boolean,
  enableAnchor: Boolean,
  context: Context
)