美文网首页
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