属性の設定

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要素のテキスト部分に展開されます。