0017 号 編集後記

お題:○○の冬

ささだ
締切りの冬。っていつもか。
zunda
ゆきだるまの冬。ゆきだるま式に増えるオシゴト。あぁ……
yanagi
大掃除の冬。部屋も ToDo も……
青木
冬眠の冬。原稿も冬眠。
かずひこ
冬といえば、シューベルトの歌曲集「冬の旅」。順番が逆だけど……
いむら
こたつ。こたつの冬って言わないか。家にこたつないし…

宿題

問題

今号の標準添付ライブラリ紹介では、汎用テンプレート エンジン ERB の紹介がありました。今回の宿題では、以下のメソッドによって似たようなテンプレート ベースの処理を作成してみましょう。

def expand(fmt, h)
  # 文字列 fmt 中の部分文字列 "${v}" を h["v"] で置き換える。
end

テストケース:

require 'test/unit'

def expand(fmt, h)
  # 文字列 fmt 中の部分文字列 "${v}" を h["v"] で置き換える。
end

class TestExpand < Test::Unit::TestCase
  def test_expand1()
    assert_equal("abc", expand("${v}bc", {'v'=>'a'}))
    assert_equal("abc", expand("a${v}c", {'v'=>'b', 'b'=>'x'}))
    assert_equal("abc", expand("${a}${b}${c}", {'a'=>'a', 'b'=>'b', 'c'=>'c'}))
  end
end

回答はこちらへ