Board logo

标题: ansicolor 解析并输出彩色文本 [打印本页]

作者: CrLf    时间: 2015-10-30 06:33     标题: ansicolor 解析并输出彩色文本

其实是 context.exe 的副产品,索性也编译成 exe,需要 .net 库支持
没有什么独特的功能,只是将以往需要用 ANSI.SYS 才能支持的部分特性移植到 JScript8.0 上,仅支持其中的彩色显示功能。
请参考 ANSI.SYS  的例子百科

其实功能没有 ansicon 多,所以更建议用 ansicon

例子:
  1. dir | context --color txt | ansicolor
  2. ::彩色显示 dir 输出中包含 txt 的行及上下文
  3. dir | grep --color=always -P \S+\.txt$ | ansicolor
  4. ::彩色显示 dir 输出中的 txt 文件名
复制代码
源码:
  1. @cc_on
  2. import System
  3. try{
  4. ansisys_ConsoleColor(System.Console.In.ReadToEnd())
  5. }
  6. catch(Err){
  7. Environment.Exit(1)
  8. }
  9. function ansisys_ConsoleColor(strText){
  10. strText.replace(
  11. /[^\x1b]+|(\x1b\[\x1b)|\x1b\[(\d\d(?:;\d\d)*)m|./g,
  12. function($0,$1,$2,$3){
  13. if($1)return Console.Write('\x1b[')
  14. if($2){
  15. var $2_regexp = /(\d)(\d)/g
  16. var exec
  17. while(exec = $2_regexp.exec($2)){
  18. if(exec[0]=='00'){
  19. Console.ResetColor()
  20. } else if(exec[1]=='3'){
  21. Console.ForegroundColor = AnsiColor2ConsoleColor(exec[2])
  22. } else if(exec[1]=='4'){
  23. Console.BackgroundColor = AnsiColor2ConsoleColor(exec[2])
  24. }
  25. }
  26. } else {
  27. Console.Write($0)
  28. }
  29. }
  30. )
  31. function AnsiColor2ConsoleColor(strColor){
  32. var ConsoleColorList = {
  33. '0':'Black',
  34. '1':'Red',
  35. '2':'Green',
  36. '3':'Yellow',
  37. '4':'Blue',
  38. '5':'Magenta',
  39. '6':'Cyan',
  40. '7':'White'
  41. }
  42. return(ConsoleColorList[strColor])
  43. }
  44. }
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2