当前位置:网站首页>一个酷酷的“幽灵”控制台工具

一个酷酷的“幽灵”控制台工具

2022-07-06 22:44:00 InfoQ

简介

昨天提到的要介绍的一个控制台插件,今天它来了!
  • 全称:
    Spectre.Console
  • 译名(非官方):幽灵控制台(以下简称幽灵)
为啥要写这个!嘿嘿,当然是因为,没有整理啊,真的是忙不完的活啊,
苦逼的打工人
/(ㄒoㄒ)/~~
而且这些都是手边常用的东西,就像带货主播说的那样,自己用过,是真的好用,而且足够酷,才敢推荐给大家。
其实漂亮的控制台工具已经有很多了,比如ColorfulConsole,ConsoleTables等,甚至自带的控制台风格在大多数场景下也足够用了,那这个工具又有什么特别之处呢?

特色

  • 够新
    :上面提到的那些工具,或者一些没提到,但下载量都很大的工具,更新频率都很慢,想很火的ColorfulConsole,最近一次的更新都停在了2020年,所以尽管功能强大,但活力欠佳。而幽灵不一样,看官方的发行记录,他现在正处在快速的迭代更新中,最新的0.44.x版本,已经更新了13个小版本了,当然了,更新频繁也不见得是好事,也反映了问题很多,正在修修补补,但也正是这样,才证明它活力充沛,值得肯定!
  • 够酷
    这点不解释,看图

  • null

  • 够强大:
    从上图也能看出来,幽灵提供了多种控制台打印风格,除了文字风格的处理,还支持,表格,树,进度条,甚至是emoji表情(需要修改系统配置)
以上三点,就足够我选它了。要说有啥缺点,就是目前没有中文文档,当然,我有金山毒霸,不对,词霸!所以,这都不叫事儿!

使用

其实,关于使用,官方的文档给的案例也足够多了,我这里就简单列几个用例。

字体

使用幽灵来打印各种风格的字体,有点像编辑Html文件,只需要通过markup(Line)方法,在要输出的文字中编写特殊的关键字和占位符就可以了。
比如要打印有颜色的字
AnsiConsole.MarkupLine($"[Yellow]我是第2个中间件,我来自入口文件,我过来了-{DateTime.Now}[/]");
要加粗
AnsiConsole.MarkupLine("[bold]World[/]");
要加粗还要有颜色
AnsiConsole.MarkupLine("[bold Yellow]World[/]");
基本的关键字和html风格非常相似,还有下划线,转义等,我就不一一列举了。

表格

幽灵对表格的支持,除了支持静态表格,还支持动态表格
  • 静态表格
正好最近做了一个监听表格变化的工具,构造过一个表格,拿来当例子了
 var table = new Table().Centered();
table.AddColumn("被授权人ID");
table.AddColumn("被授权赛项ID");
table.AddColumn("授权人");
while (sdr.Read())
{
 string column1 = Convert.ToString(sdr["UserID"]);
 string column2 = Convert.ToString(sdr["TypeID"]);
 string column3 = Convert.ToString(sdr["UserNam"]);
 table.AddRow(column1, column2, column3);
}
AnsiConsole.Write(table);
其实就是构造表格,定义列头,然后顺序打印每一行的内容就好了。
当然我这里只是简单的打印,幽灵还支持调整表格的结构,比如显示居中,设置边框,设置单元格宽度等。
代码也非常简单
//设置宽度
table.Width(50);
//设置偏移
table.Columns[0].PadLeft(3);
//设置边框,画个圈
table.Border(TableBorder.Square);
官方文档
里还有更多的案例,大家可以去看一下
  • 动态表格
这个我暂时没有到,但是官方文档给了几个例子,感觉非常酷,录个Gif看一下。

null

FIGlet Text

这个我不知道中文名咋翻译,效果就是做成那种虚线拼成的文字效果,就像这样

null
使用起来也非常简单
AnsiConsole.Write(
 new FigletText("Tony's Box")
 .Centered()
 .Color(Color.Blue)
 );

选择

像上面的截图,可以实现选择操作,就像在Bios界面里设定参数一样
var cmd = AnsiConsole.Prompt(
 new SelectionPrompt<string>()
 .Title(&quot;以下是工具箱暂时支持的操作?&quot;)
 .PageSize(10)
 .MoreChoicesText(&quot;[grey](请选择要执行的操作)[/]&quot;)
 .AddChoices(new[] {
 &quot;1.监听【User_ProgramTypeLink】权限表&quot;,&quot;2.清除半年前的日志数据&quot;, &quot;3.删除指定的索引数据&quot; 
 }));


好了,基本就这些了。晚安!



原网站

版权声明
本文为[InfoQ]所创,转载请带上原文链接,感谢
https://xie.infoq.cn/article/0b3f600cd25144e94209146fd