属性の設定
Amrita2には、属性を設定する方法がいくつか用意されています。
以下のデータを使って、これを説明していきます。
setup do @data = { :mail=>{ :no=>142990, :title=>"[ANN] Amrita2 1.9.5" } } @expected = <<-EOF <a href='http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/142990'>[ruby-talk:142990][ANN] Amrita2 1.9.5</a> EOF end
@dataがテンプレート内に埋めこむべきデータで、@expectedが求める出力結果です。
NVar
NVar(Numbered Variables)というフィルターを使うと、そのブロック内部の$1,$2,$3..という文字列を、指定したデータに置き換えます。
specify "NVar" do t = Amrita2::Template.new <<-END <<a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/$1" :mail|NVar[:no,:title] < [ruby-talk:$1]$2 >>> END t.render_with(@data).should_be_samexml_as(@expected) end
Attr
Attrというフィルターを使うと、ハッシュから指定した属性を展開します。
specify "Attr with erb" do t = Amrita2::Template.new <<-'END' <% mail = @data[:mail] mail[:href] = "http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/#{mail[:no]}" mail[:body] = "[ruby-talk:#{mail[:no]}]#{mail[:title]}" %> <<a :mail|Attr[:href]>> END t.render_with(binding).should_be_samexml_as(@expected) end
:bodyという要素は、そのXML要素のテキスト部分に展開されます。