Ruby Colorize gem - 有没有一种方法可以从彩色字符串中获取颜色名称?

Ruby Colorize gem - Is there a method to get the color name from a colorized string?

我想得到名字最好,或者彩色字符串的代码。

例如:

"Hello".red.color => "red" or :red

我可以使用正则表达式,但想确保目前还没有快速的方法来执行此操作。谢谢

因为 "Hello".colorize(:red) returns 一个字符串,我认为不可能。特定颜色的正则表达式可能是一个好方法。

私有函数scan_for_colorshttps://github.com/fazibear/colorize/blob/7c0b50a278da01870be4435ec1b5753c2544e8f3/lib/colorize/instance_methods.rb#L108是一个很好的起点...

更新:

此解决方案适用于某些颜色...

String.colors.find{|x| stringToCheck.colorize(x) === stringToCheck}

Re-monkeypatch啦!

Colorize::InstanceMethods.prepend(Module.new do # surround colorize
  def colorize(params)
    super(params).extend(Module.new do # extend the returned string
      def __color__
        params
      end
    end)
  end
end)

注意:代码未经测试,但应该可以工作。