<?xml version="1.0"  encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xml="http://www.w3.org/XML/1998/namespace"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
  version="2.1">

    <description>JSP-ELで利用可能な汎用的な関数を提供します。</description>
    <display-name>JSP Standard EL Functions</display-name>
	<tlib-version>2.1</tlib-version>
	<short-name>f</short-name>
	<uri>http://amateras.sf.jp/functions</uri>

	<function>
		<description><![CDATA[
			指定した文字列に含まれるHTMLタグをエスケープします。
		]]></description>
		<name>h</name>
		<function-class>jp.sf.amateras.functions.Functions</function-class>
		<function-signature>java.lang.String h(java.lang.Object)</function-signature>
	</function>

	<function>
		<description><![CDATA[
			指定した文字列をURLエンコードします。
		]]></description>
		<name>u</name>
		<function-class>jp.sf.amateras.functions.Functions</function-class>
		<function-signature>java.lang.String u(java.lang.String)</function-signature>
	</function>

	<function>
		<description><![CDATA[
			指定した文字列の改行を&lt;br&gt;タグに変換します。
		]]></description>
		<name>br</name>
		<function-class>jp.sf.amateras.functions.Functions</function-class>
		<function-signature>java.lang.String br(java.lang.String)</function-signature>
	</function>

	<function>
		<description><![CDATA[
			指定した文字列に含まれるタブや半角スペースを&amp;nbsp;に変換します。
			<p/>
			連続した半角スペースの最初の1つめは&amp;nbsp;に変換しません。
			また、タブ文字は半角スペース4つ分の空白に変換します。
		]]></description>
		<name>nbsp</name>
		<function-class>jp.sf.amateras.functions.Functions</function-class>
		<function-signature>java.lang.String nbsp(java.lang.String)</function-signature>
	</function>

	<function>
		<description>
			文字列を*（アスタリスク）に変換します。
		</description>
		<name>mask</name>
		<function-class>jp.sf.amateras.functions.Functions</function-class>
		<function-signature>java.lang.String mask(java.lang.String)</function-signature>
	</function>

	<function>
		<description><![CDATA[
			<code>java.util.Date</code>オブジェクトを日付形式（デフォルトではyyyy/MM/dd）にフォーマットします。
		]]></description>
		<name>date</name>
		<function-class>jp.sf.amateras.functions.Functions</function-class>
		<function-signature>java.lang.String date(java.util.Date)</function-signature>
	</function>

	<function>
		<description><![CDATA[
			<code>java.util.Date</code>オブジェクトを日時形式（デフォルトではyyyy/MM/dd HH:mm:ss）にフォーマットします。
		]]></description>
		<name>datetime</name>
		<function-class>jp.sf.amateras.functions.Functions</function-class>
		<function-signature>java.lang.String datetime(java.util.Date)</function-signature>
	</function>

	<function>
		<description><![CDATA[
			<code>java.util.Date</code>オブジェクトを時間形式（デフォルトではHH:mm:ss）にフォーマットします。
		]]></description>
		<name>time</name>
		<function-class>jp.sf.amateras.functions.Functions</function-class>
		<function-signature>java.lang.String time(java.util.Date)</function-signature>
	</function>

	<function>
		<description><![CDATA[
			数値を指定したパターンでフォーマットします。
		]]></description>
		<name>number</name>
		<function-class>jp.sf.amateras.functions.Functions</function-class>
		<function-signature>java.lang.String number(java.util.Object, java.lang.String)</function-signature>
	</function>

	<function>
		<description><![CDATA[
			文字列の先頭から指定文字数までを切り出します。
		]]></description>
		<name>cut</name>
		<function-class>jp.sf.amateras.functions.Functions</function-class>
		<function-signature>java.lang.String cut(java.lang.String, int)</function-signature>
	</function>

	<function>
		<description><![CDATA[
			文字列に含まれるURLをリンクに変換します。
		]]></description>
		<name>link</name>
		<function-class>jp.sf.amateras.functions.Functions</function-class>
		<function-signature>java.lang.String link(java.lang.String)</function-signature>
	</function>

	<function>
		<description><![CDATA[
			オブジェクトをJSON形式の文字列に変換します。
			JSONへの変換には<a href="http://jsonic.sourceforge.jp/">JSONIC</a>を使用します。
		]]></description>
		<name>json</name>
		<function-class>jp.sf.amateras.functions.Functions</function-class>
		<function-signature>java.lang.String json(java.lang.Object)</function-signature>
		<example><![CDATA[
<script type="text/javascript">
  var json = ${f:json(bean)};
  ...
</script>
		]]></example>
	</function>

	<function>
		<description><![CDATA[
			マップのキーと値からクエリ文字列を組み立てます。
		]]></description>
		<name>query</name>
		<function-class>jp.sf.amateras.functions.Functions</function-class>
		<function-signature>java.lang.String query(java.lang.Object)</function-signature>
		<example><![CDATA[
<a href="search.jsp?${f:query(map)}">link</a>
		]]></example>
	</function>
	
	<function>
		<description><![CDATA[
			文字列が正規表現にマッチするかどうかをテストします。
		]]></description>
		<name>matches</name>
		<function-class>jp.sf.amateras.functions.Functions</function-class>
		<function-signature>java.lang.String matches(java.lang.String, java.lang.String)</function-signature>
		<example><![CDATA[
<c:if test="${f:matches(value, '^(http|https)://.*')}">
  ...
</c:if>
		]]></example>
	</function>
	
	<function>
		<description><![CDATA[
			文字列を正規表現で置換します。
		]]></description>
		<name>replace</name>
		<function-class>jp.sf.amateras.functions.Functions</function-class>
		<function-signature>java.lang.String replace(java.lang.String, java.lang.String, java.lang.String)</function-signature>
	</function>
	
	<function>
		<description><![CDATA[
			JavaScriptの文字列リテラルに埋め込む場合に必要なエスケープ処理を行います。
			このメソッドでエスケープした結果はシングルクォートで囲まれることを想定しています。
		]]></description>
		<name>js</name>
		<function-class>jp.sf.amateras.functions.Functions</function-class>
		<function-signature>java.lang.String js(java.lang.String)</function-signature>
		<example><![CDATA[
var message = '${f:js(message)}';
		]]></example>
	</function>
	
	<function>
		<description><![CDATA[
			2つのオブジェクトを文字列として結合します。
			引数で渡されたオブジェクトがnullの場合は空文字列として扱います。
		]]></description>
		<name>concat</name>
		<function-class>jp.sf.amateras.functions.Functions</function-class>
		<function-signature>java.lang.String concat(java.lang.Object, java.lang.Object)</function-signature>
	</function>
	
	<function>
		<description><![CDATA[
			あるオブジェクトの中に、別のオブジェクトが含まれているかどうかをテストします。
			第一引数に指定可能なオブジェクトと、オブジェクトの型によるテスト方法の違いは以下の通りです。
			<dl>
				<dt>java.util.Collection</dt>
				<dd>コレクションの要素に<code>value2</code>が含まれているかどうかをテストします。</dd>
				<dt>java.util.Map</dt>
				<dd>マップの値に<code>value2</code>が含まれているかどうかをテストします。</dd>
				<dt>その他のオブジェクト</dt>
				<dd>文字列表現としての<code>value1</code>に部分文字列<code>value2</code>が含まれているかどうかをテストします。</dd>
			</dl>
		]]></description>
		<name>contains</name>
		<function-class>jp.sf.amateras.functions.Functions</function-class>
		<function-signature>boolean contains(java.lang.Object, java.lang.Object)</function-signature>
		<example><![CDATA[
<c:if test="${f:contains(list, element)}">
  ...
</c:if>
		]]></example>
	</function>
</taglib>

