#!/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))
