修改表格组件以支持格式标签和中文内容对齐,并添加列对齐选项。希望将其合并到 npm 仓库中。
严格使用; var 祝福 = 需要 ('bleshed') ,节点=祝福. 节点 , Box = 祝福。 (笑声) (掌声) 方框 ,条Ansi = 需要 ('strip-ansi') ,字符串Width = 需要('字符串-width');
函数表格(选项){
var self = 这个;
如果(!)(这个节点的例子){ 返回新表格(选项); {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
如果 (Array. is Array (options. colarn Spaceing)) { 则使用“ 时间间隔” 选项 抛出“ 错误” : 列间隔不能是一个数组 。\r\n” + “注:从发布 2. 0.0 使用属性列 Width 代替列间隔.\r\n' + `请参考README或https://GitHub.com/yaronn/blessed-contrib/issues/39'; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
如果 (! options.colln Width) { 则 扔出“ 错误 ” : 表格必须获得列 Width 作为属性。 请参看《读物汇编》。 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
选项 = 选项 ; 选项.栏间距=选项.栏间距=? 10: 选项.栏间距; 选项.bold = 真; 选项.selectFg = 选项.selectFg QQ"白"; 选项.selectBg = 选项.selectBg “蓝色”; 选项.fg = 选项.fg “绿色”; 选项.bg = 选项.bg `'; 选项.interactive = (选项类型.interactive QQ"未定义")? true : options. 互动; 此选项 = 选项; 框. call(此,选项);
此. rows = 祝福. list({ //高:0,(高) 顶: 2, 宽度: 0, 左边: 1, 样式 : {已选择 :{ fg: 选项. sselectFg , bg: 选项.所选 Bg {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? ,项目:{ fg: 选项.fg bg: 选项。 (单位:千美元) }}, 密钥: 选项. keys, vi:选项.vi, 鼠标: 选项.mouse, 标记: 真, 交互式: 选项. 交互式, 屏幕: 此. 屏幕
- ;
此附录( 此. rows) ;
3⁄4 ̄ ̧漯B 如果( 自. options. data) { self.setData(自选.options.data) ; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
- ;
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
表.prototype = Object.create(Box.prototype) ; 2.
表. prototype.c焦=函数 (){ 此. rows. 焦点( );
- ;
表. prototype.landers=函数 (){ if(这个. screen. central == This.rows) (这个. 此. rows. 焦点( );
这个.rows.width=这个.width -3; 这个.rows.height=这个.height -4; b. 框. prototype. reland.call(本);
- ;
表. prototype.setData = 函数(表){ var self = 这个;
var 计算 TagLength = 函数( str) { cont tagex = /{[^}]+}/克;//匹配全部 {content} 标记 让TagLength 总计= 0; 让匹配;
时 (( match = tag Regex.exec (str)) ). . . 总计 TagLength QQ 匹配 [0].長; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
返回总塔格伦斯;
- ;
var 数据ToString = 函数 (d) { var str = ''; (中文(简体) ). d. foreach(函数(r, i) { var collize = self.options.colonWidth [一] (中文(简体) ). ,条=条Ansi(r.toString ()) , taglens = 计算 TagLength(r.toString ()) , ansiLen = 字符串Width(r.toString ()) - 字符串Width(字符串) , SpaceLength = 相接大小 - 字符串Width(字符串) + taglens +自. options.colonSpace; r = r.toString (. ). substring (0, 缩合 + ansilen + taglens); // 为 ansi len 提供赔偿 如果(空格Length < 0){ 空间Length = 0; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? var 空格 = 新阵列( spaceLength). join ('); var 校正 = (! self. options.collnAlign)? “左” : 自. options.collnAlign[i]; 如果( 对齐 QQ 左方) { r + 空间; { 如果( 对齐 } “ 右 ” { 空间 + r; {\fn华文楷体\fs16\1cHE0E0E0}然后 var lspace = space.substring (0, space. long/2); 2. var rspace = space.substring (spaces.长/2); r + r 空间; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
- ; . . . . . . .
内容来源: yaronn/blessed-contrib