使用 Jira ScriptRunner 将纯文本转换为可显示的 HTML(显示项目符号、复选标记笑脸等)

Posted

技术标签:

【中文标题】使用 Jira ScriptRunner 将纯文本转换为可显示的 HTML(显示项目符号、复选标记笑脸等)【英文标题】:Convert plain text / wiki syntax to HTML with Jira ScriptRunner (show bullet points, checkmark smileys, etc.) 【发布时间】:2022-01-16 22:11:48 【问题描述】:

我正在尝试检索我在 JIRA 问题页面中输入的最新评论的文本,这是我输入的最新评论的屏幕截图:

我在 Jira 脚本运行器中使用此代码来检索我输入的最后一条评论:

import com.atlassian.jira.component.ComponentAccessor
import java.text.SimpleDateFormat
import com.opensymphony.util.TextUtils
import com.atlassian.jira.issue.comments.*
import org.w3c.dom.*;
import javax.xml.parsers.*;
import groovy.xml.*
import grrovy.util.*; 
import org.xml.sax.InputSource; 
import java.io.*; 
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;

def commentManager = ComponentAccessor.getCommentManager()

Comment comment = commentManager.getLastComment (issue)

if(comment != null) 
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MMM/yy HH:mm", Locale.ENGLISH)
    
    
    
    def body = comment.body //.replaceAll("[\r\n]+","\n")
     
    body= """<div style="max-height:100px; overflow:auto;" title="$comment.authorFullName added last comment - $dateFormat.format(comment.created)">
    <span style="white-space: pre-wrap;">$TextUtils.htmlEncode(body)</span>
    </div>""" 
    return body
   

上面代码的输出如下:

我希望以原始格式含义显示输出,我希望出现项目符号点、笑脸和绿色复选标记。我不想看到星星、代码颜色和笑脸缩写 :) 我希望输出如下所示:

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

您需要将 wiki 语法源渲染为 HTML 输出并使用现有的 wiki 渲染器。

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.RendererManager
import com.atlassian.jira.issue.fields.renderer.JiraRendererPlugin
import com.atlassian.jira.issue.fields.renderer.IssueRenderContext

RendererManager rendererManager = ComponentAccessor.getComponentOfType(RendererManager.class);
JiraRendererPlugin renderer = rendererManager.getRendererForType("atlassian-wiki-renderer");

String lastComment = "* 1\n* 2\n* 3:)\n* color:#FF0000(/)color"

return renderer.render(lastComment, null)

【讨论】:

以上是关于使用 Jira ScriptRunner 将纯文本转换为可显示的 HTML(显示项目符号、复选标记笑脸等)的主要内容,如果未能解决你的问题,请参考以下文章

JIRA JQL:按阻塞状态着色卡片

如何使用 NestJS 将纯文本作为我的请求正文传递?

Python将纯文本显示为html [重复]

PHP将纯文本转换为标签链接

如何将纯文本发布到 WCF 服务,即不包含在 XML 标记中?

XSLT 使用 xslt 2.0 或更高版本将纯文本文件处理为 XML