You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现jQuery Terminal中可重叠格式的字符串注入算法?

寻求正确注入可重叠格式的算法(jQuery Terminal unix_formatting扩展)

我基于付费项目重构了jQuery Terminal的unix_formatting扩展(一款处理ANSI转义码的格式化工具),已获许可将代码用于开源项目。此前仅需输出纯文本,现在需要将解析后的结构转换为jQuery Terminal的格式。

解析完成后得到的结构示例:

var data = [
 {
    text: "                                                       the knight ▄▄▄▄▄ fuel",
    formatting: [
      {start: 55, end: 65, format: '[[b;#555;#000]'},
      {start: 65, end: 66, format: '[[;#000;]'},
      {start: 66, end: 76, format: '[[b;#555;]'}
    ]
}

jQuery Terminal的格式规则:以format字段内容作为开启标记,单个]作为关闭标记,格式允许重叠。

原本使用库中的$.terminal.substring函数处理,但该函数在处理长文本(如需拆分的ANSI Art大文本)时性能较差。我尝试了预处理注入算法,但在复杂ANSI Art(如Denis Ritchie的作品)测试中失效,部分格式标记直接显示——原因是格式插入后改变了字符串长度,而原start/end标记基于无格式文本的位置。

相关代码片段:

function format_lines(str, len) {
    str = $.terminal.apply_formatters(str, {
        unixFormatting: {
            format_text: function(line) {
                // return line.text;
                return format_text(line);
            },
            ansiArt: true
        }
    });
    ...
}

其中format_text函数接收上述解析后的结构,当前实现无效。

内容的提问来源于stack exchange,提问作者jcubic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 17:02:45