#!/usr/bin/env ruby # -*- coding: utf-8 -*- Encoding.default_external = 'utf-8' require 'cgi' require 'csv' cgi = CGI.new name = cgi["fullname"] message = cgi["message"] # CSVファイルにデータを追記する CSV.open("information.csv", "a", force_quotes: true) do |csv| csv << [name, message] end print "Content-type: text/html; charset=utf-8\n\n" # お約束 html = IO.read("hello-template.html") # htmlファイルの中身を全部html変数に def trtd(array, elem = "td") # 受け取った配列arrayの各要素間を "</td><td>" で区切り(1)、 # それらを全部くっつけた左に <tr><td> 右に </td></tr> をつけて(2)返す sprintf("<tr><%s>%s</%s></tr>\n", #--(2)--(1)--(2)------ elem, array.join("</#{elem}><#{elem}>"), elem) end def csv2table(csvdata) # CSVデータをまとめてtableに変換 kekka = trtd(csvdata.headers, "th") # ヘッダを個別に <th></th> でくくる csvdata.each do |row| values = row.collect{|r| r[1]} # その行の値だけ集める kekka += trtd(values) # 1行分のtrをtrtdで作って追加する end "<table>\n" + kekka + "\n</table>" # 全体を <table> </table> でくくる end data = CSV.read("hello-template.csv", headers:true) # HTMLファイル中の ::HELPLIST:: をcsv2tableの結果に置き換えてprint print html.gsub(/::HELPLIST::/, csv2table(data))