Ruby で CSS のカラー指定を RGB 値の配列に変換する
スタイルシートのカラー指定文字列を 3 要素の RGB 値の配列として取得する方法のメモ書き。逆変換のメソッドもあり。
css.rb
# # 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
サンプル
$ 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"