<?xml version="1.0"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You 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.
-->

<document>

 <properties>
  <title>Jelly Tag Reference (ant:fileScanner)</title>
  <author email="dion@apache.org">Dion Gillard</author>
 </properties>

  <body>

    <section name="Home Page">
      <p>See 
        <a href="http://commons.apache.org/jelly/libs/ant/">http://commons.apache.org/jelly/libs/ant/</a>
      </p>
    </section>

    <section name="Description">
      <p>
        This tag creates a <code>FileScanner</code> object so that you can loop over the contents of an Ant
        <a href="http://ant.apache.org/manual/CoreTypes/fileset.html">fileset</a>.
      </p>
      <p>
        The <code>FileScanner</code> object has the following useful methods:
        <ul>
          <li><code>Iterator iterator()</code>: returns an iterator of the files in the nested filesets.</li>
          <li><code>Iterator directories()</code>: returns an iterator of the directories in the nested filesets.</li>
          <li><code>boolean hasFiles()</code>: returns true if there are files in the nested filesets..</li>
        </ul>
      </p>
    </section>
    
    <section name="Attributes">
      <table>
        <tr>
          <th>Name</th>
          <th>Description</th>
          <th>Required</th>
        </tr>
        <tr>
          <td>var</td>
          <td>The variable name for the <code>FileScanner</code> object</td>
          <td>Yes</td>
        </tr>
      </table>
    </section>
    
    <section name="Nested Elements">
      <table>
        <tr>
          <th>Name</th>
          <th>Description</th>
          <th>Required</th>
        </tr>
        <tr>
          <td>fileset</td>
          <td>Any valid ant <a href="http://ant.apache.org/manual/CoreTypes/fileset.html">fileset</a>.</td>
          <td>No</td>
        </tr>
      </table>
    </section>

    <section name="Examples">
      <source><![CDATA[
<j:jelly xmlns:j="jelly:core" xmlns:ant="jelly:ant">
  <ant:fileScanner var="pluginProjects">
    <ant:fileset dir="${basedir}">
      <ant:include name="jelly-tags/*/project.xml" />
    </ant:fileset>
  </ant:fileScanner>

  <j:forEach items="${pluginProjects.iterator()}" var="plugin">
    <!-- process using ${plugin} variable -->
  </j:forEach>
</j:jelly>
]]></source>
    </section>
    
  </body>
</document>