src/main/kotlin/de/uapcore/lightpit/viewmodel/Issues.kt

changeset 234
d71bc6db42ef
parent 231
dcb1d5a7ea3a
child 249
6bded7090719
equal deleted inserted replaced
233:9219e2d4117b 234:d71bc6db42ef
28 import com.vladsch.flexmark.ext.gfm.strikethrough.StrikethroughExtension 28 import com.vladsch.flexmark.ext.gfm.strikethrough.StrikethroughExtension
29 import com.vladsch.flexmark.ext.tables.TablesExtension 29 import com.vladsch.flexmark.ext.tables.TablesExtension
30 import com.vladsch.flexmark.html.HtmlRenderer 30 import com.vladsch.flexmark.html.HtmlRenderer
31 import com.vladsch.flexmark.parser.Parser 31 import com.vladsch.flexmark.parser.Parser
32 import com.vladsch.flexmark.util.data.MutableDataSet 32 import com.vladsch.flexmark.util.data.MutableDataSet
33 import com.vladsch.flexmark.util.data.SharedDataKeys
33 import de.uapcore.lightpit.entities.* 34 import de.uapcore.lightpit.entities.*
34 import de.uapcore.lightpit.types.IssueCategory 35 import de.uapcore.lightpit.types.IssueCategory
35 import de.uapcore.lightpit.types.IssueStatus 36 import de.uapcore.lightpit.types.IssueStatus
36 import de.uapcore.lightpit.types.IssueStatusPhase 37 import de.uapcore.lightpit.types.IssueStatusPhase
37 import de.uapcore.lightpit.types.VersionStatus 38 import de.uapcore.lightpit.types.VersionStatus
66 val comments: List<IssueComment>, 67 val comments: List<IssueComment>,
67 val project: Project, 68 val project: Project,
68 val version: Version? = null, 69 val version: Version? = null,
69 val component: Component? = null 70 val component: Component? = null
70 ) : View() { 71 ) : View() {
72 private val parser: Parser
73 private val renderer: HtmlRenderer
71 74
72 init { 75 init {
73 val options = MutableDataSet() 76 val options = MutableDataSet()
74 .set(Parser.EXTENSIONS, listOf(TablesExtension.create(), StrikethroughExtension.create())) 77 .set(SharedDataKeys.EXTENSIONS, listOf(TablesExtension.create(), StrikethroughExtension.create()))
75 val parser = Parser.builder(options).build() 78 parser = Parser.builder(options).build()
76 val renderer = HtmlRenderer.builder(options).build() 79 renderer = HtmlRenderer.builder(options
77 val process = fun(it: String) = renderer.render(parser.parse(it)) 80 .set(HtmlRenderer.ESCAPE_HTML, true)
81 ).build()
78 82
79 issue.description = process(issue.description ?: "") 83 issue.description = formatMarkdown(issue.description ?: "")
80 for (comment in comments) { 84 for (comment in comments) {
81 comment.commentFormatted = process(comment.comment) 85 comment.commentFormatted = formatMarkdown(comment.comment)
82 } 86 }
83 } 87 }
88
89 private fun formatEmojis(text: String) = text
90 .replace("(/)", "&#9989;")
91 .replace("(x)", "&#10060;")
92 .replace("(!)", "&#9889;")
93
94 private fun formatMarkdown(text: String) =
95 renderer.render(parser.parse(formatEmojis(text)))
84 } 96 }
85 97
86 class IssueEditView( 98 class IssueEditView(
87 val issue: Issue, 99 val issue: Issue,
88 val versions: List<Version>, 100 val versions: List<Version>,

mercurial