<?xml version="1.0" encoding="UTF-8" ?>
<!--

    Copyright 2004-2010 the Seasar Foundation and the Others.

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
    either express or implied. See the License for the specific language
    governing permissions and limitations under the License.

-->

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
  version="2.0">

  <description>Cubby functions</description>
  <display-name>Cubby functions</display-name>
  <tlib-version>1.0</tlib-version>
  <short-name>f</short-name>
  <uri>http://www.seasar.org/cubby/functions</uri>

  <function>
    <description>配列やコレクションに指定したオブジェクトが含まれるかどうかを判定します。</description>
    <name>contains</name>
    <function-class>
      org.seasar.cubby.tags.CubbyFunctions
    </function-class>
    <function-signature>
      java.lang.Boolean contains( java.lang.Object, java.lang.Object )
    </function-signature>
    <example>
      &lt;c:if test="${f:contains(idlist, '1001')}"&gt; ...
      &lt;/c:if&gt;
    </example>
  </function>

  <function>
    <description>Map に指定したキーが含まれるかどうかを判定します。</description>
    <name>containsKey</name>
    <function-class>
      org.seasar.cubby.tags.CubbyFunctions
    </function-class>
    <function-signature>
      java.lang.Boolean containsKey( java.util.Map, java.lang.Object )
    </function-signature>
    <example>
      &lt;c:if test="${f:containsKey(idmap, '1001')}"&gt; ...
      &lt;/c:if&gt;
    </example>
  </function>

  <function>
    <description>Map に指定した値が含まれるかどうかを判定します。</description>
    <name>containsValue</name>
    <function-class>
      org.seasar.cubby.tags.CubbyFunctions
    </function-class>
    <function-signature>
      java.lang.Boolean containsValue( java.util.Map, java.lang.Object )
    </function-signature>
    <example>
      &lt;c:if test="${f:containsValue(idmap, '値1')}"&gt; ...
      &lt;/c:if&gt;
    </example>
  </function>

  <function>
    <description>
      指定したカンマ区切りの文字列をインデックス値でサイクルして出力します。
      主に行毎に色分けする場合にCSSのクラス名を出力する場合に使用します。
      下記の例では、status.indexを2で割って余りが0の場合「odd」、1の場合「even」が出力されます。
    </description>
    <name>odd</name>
    <function-class>
      org.seasar.cubby.tags.CubbyFunctions
    </function-class>
    <function-signature>
      java.lang.String odd( java.lang.Integer, java.lang.String )
    </function-signature>
    <example>
      &lt;c:forEach var="todo" items="${action.todoList}"
      varStatus="status"&gt; &lt;tr class="${f:odd(status.index,
      'odd,even')}"&gt; ... &lt;/tr&gt; &lt;/c:forEach&gt;
    </example>
  </function>

  <function>
    <description>
      HTML をエスケープします。JSTL の out タグの代わりに使用します。 EL
      式で出力された文字列はエスケープされないため、エスケープを行いたい場合はこの function を使用します。
    </description>
    <name>out</name>
    <function-class>
      org.seasar.cubby.tags.CubbyFunctions
    </function-class>
    <function-signature>
      java.lang.String out( java.lang.Object )
    </function-signature>
    <example>${f:out(user.name)}さんこんにちは</example>
  </function>

  <function>
    <description>
      文字列 をBase64形式でエンコードします。JSTL の url タグの代わりに使用します。 
      HttpServletRequest#getCharacterEncoding()で取得した文字コードでエンコードされます。
    </description>
    <name>url</name>
    <function-class>
      org.seasar.cubby.tags.CubbyFunctions
    </function-class>
    <function-signature>
      java.lang.String url( java.lang.Object )
    </function-signature>
    <example>${f:url(wiki.pageName)}</example>
  </function>

  <function>
    <description>
      Date 型のオブジェクトをフォーマットして出力します。JSTL の dateFormat タグの代わりに使用します。
    </description>
    <name>dateFormat</name>
    <function-class>
      org.seasar.cubby.tags.CubbyFunctions
    </function-class>
    <function-signature>
      java.lang.String dateFormat( java.lang.Object, java.lang.String )
    </function-signature>
    <example>${f:dateFormat(todo.limitDate, "yyyy-MM-dd")}</example>
  </function>

  <function>
    <description>
      第1引数の条件が true のときは第2引数を属性の値として出力し、第1引数の条件が false のときは属性自体を出力しません。
      条件によって disabled や checked などの属性の出力する・しないを制御したい場合に使用します。
      出力する・しないの制御はカスタムタグで行うので、t:input/t:select/t:textarea と組み合わせて使用してください。
    </description>
    <name>ifrender</name>
    <function-class>
      org.seasar.cubby.tags.CubbyFunctions
    </function-class>
    <function-signature>
      java.lang.Object ifrender ( java.lang.Boolean, java.lang.Object )
    </function-signature>
  </function>
</taglib>
