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_colors
https://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)
注意:代码未经测试,但应该可以工作。
我想得到名字最好,或者彩色字符串的代码。
例如:
"Hello".red.color
=> "red" or :red
我可以使用正则表达式,但想确保目前还没有快速的方法来执行此操作。谢谢
因为 "Hello".colorize(:red)
returns 一个字符串,我认为不可能。特定颜色的正则表达式可能是一个好方法。
私有函数scan_for_colors
https://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)
注意:代码未经测试,但应该可以工作。