在irb或rails控制台中的颜色

4

我正在测试一个可以在终端输出颜色的 gem:

module Color
    def self.colorize(text, color_code)
        "#{color_code}#{text}e[0m"
    end

    def self.red(text)
        self.colorize(text, "\033[1;31;12m")
    end
end

我在同一目录下有一个测试文件,名为color_test.rb:

require_relative 'color.rb'

puts Color.red('I should be red')

这将导致以下结果:
$ ruby color_test.rb
I should be red 

测试显示为红色。太棒了。然而,在Rails控制台中却没有发生同样的情况:

$ rails c
Loading development environment (Rails 4.1.1)
2.0.0-p247 :001 > require 'color'
 => true 
2.0.0-p247 :003 > Chroma.colourise('text',"\033[1;31;12m")
 => "\e[1;31;12mtexte[0m"

那么我该如何避免它?(如果这是正确的术语的话:P)我也希望能够在控制台中显示加粗文本和其他样式。

这仅用于测试,因此我可以下载一些适用于rails控制台的扩展,但是如果有一种方法将此功能打包到gem中并给控制台添加颜色,那就很酷了。如果有人能向我展示如何做到这一点,我会很高兴的。

1个回答

5

试试这个:

text = 'red text'
puts "\033[31m#{text}\033[0m"

另一种选择是扩展String类。
class String
  def red
    "\033[31m#{self}\033[0m"
  end

  def green
    "\033[32m#{self}\033[0m"
  end
end

那么你可以做类似于'spinach'.green这样的事情。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接