# -*- coding: utf-8 -*- # mkrgbtable.rb rgb_file = "rgb.txt" # RGBのカラーコードを定義したデータファイル style_file = "colordef.css" # 色の定義を記述するための CSS ファイル html_file = "colors.html" # HTML ファイル本体 colortable = [] File.open("rgb.txt") do |f| f.each_line do |line| if /^(\d+)\s+(\d+)\s+(\d+)\s+(\w+\s*\w+)/ =~ line #データ行を拾う name = $4 name[0] = name[0].upcase #色名の先頭の文字を大文字に変更 colortable << [$1.to_i,$2.to_i,$3.to_i,name] if ! $4.index(" ") end end end # スタイルファイル作成: NavyBlue.{#000080} の形で色指定する File.open(style_file,"w") do |f| colortable.each do |r,g,b,name| f.printf(".#{name}{color:#%02X%02X%02X;}\n",r,g,b) end end # HTML のヘッダ部分のヒアドキュメントを html_header に代入しておく html_header = <<-HEADER 色の英語名一覧

色の英語名一覧

HEADER # 表作成:セルの数がカラム数の整数倍の時と余りが出る時の処理を # 揃えるために,空データの入ったセルを余りの数だけ追加しておく n_cols = 6 # カラム(列)の数 n_blank = colortable.size % n_cols # 余りのセルの数 colortable += Array.new(n_cols,['','','','']) #空データを必要数追加 n_rows = colortable.size / n_cols # 行の数 count = 0 File.open(html_file,"w") do |f| f.print html_header f.puts "" n_rows.times do # 二重ループの外は各行ごとの処理 f.puts "\t" n_cols.times do # 二重ループの内はセルごとの処理 r,g,b,name = colortable.shift f.puts "\t\t" end f.puts "\t" end f.puts "
#{name}
" f.puts "" end