YAML+ERB

前回の続きで、ERB に埋め込む情報を YAML で記述する実験。

# config.yml
books:
  -
    title: あいうえお
    author: かきくけこ
    price: 400
  -
    title: さしすせそ
    author: たちつてと
    price: 800
#!/usr/bin/ruby -Ku

require 'erb'
require 'yaml'

erb_doc = <<EOS
hello world 1
<% config['books'].each_with_index do |i,n| -%>
[<%= n %>] title:<%= i['title'] %> / author:<%= i['author'] %>
<% end -%>
hello world 2
EOS

class MyTemplate
  def initialize
    @config = YAML.load(File.new('config.yml'))
  end
  def config
    @config
  end
  def result(script)
    ERB.new(script, nil, '-').result(binding)
  end
end

puts MyTemplate.new.result(erb_doc)
# hello world 1
# [0] title:あいうえお / author:かきくけこ
# [1] title:さしすせそ / author:たちつてと
# hello world 2