スタイルシートのカラー指定文字列を 3 要素の RGB 値の配列として取得する方法のメモ書き。逆変換のメソッドもあり。

css.rb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#
# Ruby CSS Color Module
#
module ColorUtil
def get_rgb(value)
if value =~ /^#?(\[a-fA-F0-9\]+)$/
c = $1
if c.length == 3
return Array.new(3) { |i| (c\[i,1\] \* 2).hex }
elsif c.length == 6
return \[ c\[0,2\].hex, c\[2,2\].hex, c\[4,2\].hex \]
end
end
raise "format error"
end
def get_value(rgb)
c = "#"
rgb.each { |x| c += format("%02x", x) }
return c
end
end

サンプル

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ irb
irb(main):001:0> require 'css'
=\> true
irb(main):002:0> include ColorUtil
=\> Object
irb(main):003:0> get_rgb("000")
=\> \[0, 0, 0\]
irb(main):004:0> get_rgb("#00ddff)"
irb(main):005:1> )
=\> nil
irb(main):006:0> get_rgb("#00ddff")
=\> \[0, 221, 255\]
irb(main):007:0> get_rgb("#999")
=\> \[153, 153, 153\]
irb(main):008:0> get_value(\[153,153,153\])
=\> "#999999"
irb(main):009:0> get_value(\[255, 255, 0\])
=\> "#ffff00"