美文网首页
colored源码解析

colored源码解析

作者: 飞羽田海 | 来源:发表于2022-03-29 16:35 被阅读0次
  • Shell中打印彩色输出
    输出格式如下:
    echo "\e[文字背景颜色;文字颜色m"
    其中文字背景颜色(40 -- 47)和文字颜色(30 -- 37) 只有30m到47m才具有意义。我们可以利用这个特性来修改终端输出日志的文字颜色。
    eg:
     echo "\e[43;31m 蓝底红字"
    
image.png
  • 源码解析
    为了简单起见,实现了一个colored阉割版。
    module Colored
    
     extend self 
    
     COLORS = {
         'black'   => 30, # 黑色
         'red'     => 31, # 红色
         'green'   => 32, # 绿色
         'yellow'  => 33, # 黄色
         'blue'    => 34, # 蓝色
         'magenta' => 35, # 品红
         'cyan'    => 36, # 青色
         'white'   => 37  # 白色
     }
     
     COLORS.each do |color, value|
         # 添加方法
         define_method(color) do
             colorize(self, :foreground => color)
         end
     end
    
     def colorize(string, options = {})
        # 剔除 nil
        colored = [color(options[:foreground])].compact * ''
        # 追加文字
        colored << string
     end
     # 拼接命令
     def color(color_name)
         "\e[#{COLORS[color_name]}m"
      end
    end
    
    String.send(:include, Colored)
    
    测试一下
     require './MyColored.rb'
    
     puts "我是黑色文字".black
     puts "我是红色文字".red
     puts "我是绿色文字".green
     puts "我是黄色文字".yellow
     puts "我是蓝色文字".blue
     puts "我是品红文字".magenta
     puts "我是青色文字".cyan
     puts "我是白色文字".white
    

    效果:


    image.png

相关文章

网友评论

      本文标题:colored源码解析

      本文链接:https://www.haomeiwen.com/subject/zhjvjrtx.html