ウェブ-HACKS 「とりあえずやってみよう!」ブログでタグ「ERB」が付けられているもの

RubyでHTMLファイル生成(Excelデータを一括でHTMLファイルにする)

   ブックマークに追加する
以前にもブログで書いたRubyでHTMLファイル作成ですが、さらに改良しExcelの1行を1つのHTMLファイルに変換するプログラムを書きました。さらに、前回同様HTMLテンプレート機能も使用しています。Excelデータはタブ区切りテキストにします。
※プログラムはクリエイティブコモンズです。

#!/usr/bin/ruby -Ks
require 'erb'
require 'yaml'
include ERB::Util
$KCODE = 's'

class CreateHtml

   def initialize
      @config = YAML.load_file("config.yaml")
      @erb = ERB.new(File.read(@config[:template]), nil, "-")
   end

   def generate
      objs = input
      for obj in objs do
         output(obj)
      end
   end

   def input
      objs = Array.new
      count = 0
      open(@config[:data]).each{|input|
         if count == 0
            @headers = input.split
            count = 1
            next
         end
         h = Hash.new
         arr = input.split
         @headers.size.times{|i|
            h.store(@headers[i], arr[i])
         }
         objs.push(h)
      }
      return objs
   end

   def output(o)
     open(@config[:output]+"/"+o['id']+".html", "w"){ |output|
         output.write(@erb.result(binding()))
      }
   end
end

obj = CreateHtml.new
obj.generate

YAMLも使ってみました。詳細は以下を参照。


config.yamlは以下の通り。

:template: template.rhtml
:data: data.txt
:output: output


data.txtにタブ区切りテキストです。1行目のheader行の項目名をテンプレートファイル(template.rhtml)に設定すると項目が書く行の設定値でHTML生成します。また、1行目のid項目は必須でその項目値がHTMLファイル名になります。


RubyでHTMLファイル作成

   ブックマークに追加する
Rubyで静的HTMLファイル吐き出しのプログラムを作成したいなぁ思い、PerlのHTML::TemplateのようなものがRubyにもないか探してみました。

以下サイトにRuby版のHTML::Templateがあり使用したいと思ったのですが、少し使い勝手がわるいようです。
そのためerbにより作成することにしました。以下がテスト用でつくったサンプルコードです。

■メインプログラム

#!/usr/bin/ruby -Ks
require 'erb'
include ERB::Util

$KCODE = 's'

filename = ARGV[0]
erb = ERB.new(File.read(filename), nil, "-")

# hash create.
h = Hash.new
title = "title_key"
title_value = "title_val"
h.store(title, title_value)

detail = "detail_key"
detail_value = "detail_val"
h.store(detail, detail_value)

# list create.
list = Array.new
list.push(h)

print erb.result(binding())

■テンプレートファイル

<dl>
<%- i = 0 -%>
<%- for item in list -%>
<dt><%=h item['title_key'] %></dt>
<dd><%=h item['detail_key'] %></dd> 
<%- i += 1 -%>
<%- end -%>
</dl>

コマンドプロンプトより以下を実行してくれればOK
>ruby create_html.rb sample.rhtml
title_val
detail_val
かなり使いやすいですね。
もうちょっとデータの持ち方だけ考えればもっと使いやすくなりそうです。
今度は外部ファイルから静的HTML吐き出しをするプログラムを書いてみます。

追記
外部ファイルを読み込んで静的HTMLファイル吐き出しするプログラムを書きました

【参考サイト】

あわせて読みたいブログパーツ
フィードメーター - ウェブ-HACKS 「とりあえずやってみよう!」ブログ   
track feed
  • SEO対策 
  • _ 
  • _ 
  •  
  •  

このブログはクリエイティブ・コモンズでライセンスされています。
Google

Tags