%PDF- %PDF-
Direktori : /usr/share/doc/perl-Template-Toolkit-2.24/old/modules/Template/ |
Current File : //usr/share/doc/perl-Template-Toolkit-2.24/old/modules/Template/Iterator.html |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN"> <html> <head> <title>Template::Iterator</title> <link rel="stylesheet" type="text/css" href="../../css/blue.css" title="Clear Blue"> <link rel="alternate stylesheet" type="text/css" href="../../css/orange.css" title="Clear Orange"> <link rel="alternate stylesheet" type="text/css" href="../../css/green.css" title="Clear Green"> <link rel="alternate stylesheet" type="text/css" href="../../css/purple.css" title="Clear Purple"> <link rel="alternate stylesheet" type="text/css" href="../../css/grey.css" title="Clear Grey"> <!--[if IE 6]> <link rel="stylesheet" type="text/css" href="../../css/ie6.css" /> <![endif]--> <link rel="stylesheet" type="text/css" href="/css/print.css" media="print"> <script type="text/javascript" src="../../js/tt2.js"></script> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <meta name="author" content="Andy Wardley"> </head> <body id="body"> <div id="layout"> <div id="header"> <a href="../../index.html" id="logo" alt="" title="Click for the Home Page"><span class="alt">TT2 Home Page</span></a> <ul id="trail"> <li><a href="../../modules/index.html">Modules</a></li> <li><a href="../../modules/Template/index.html">Template::*</a></li> <li class="last"><a href="../../modules/Template/Iterator.html">Iterator.pm</a></li> </ul> <div class="controls"> <a href="#" class="menu show" onclick="widescreen_off(); return false" title="Show Menu"> <span class="about">Click to view the menu. It's very nice.</span> </a> <a href="#" class="menu hide" onclick="widescreen_on(); return false" title="Hide Menu"> <span class="about">Click to hide the menu and go all widescreen!</span> </a> <div class="pager"> <a href="../../modules/Template/Grammar.html" title="Template::Grammar" class="go back">Back<span class="about"><h4>Template::Grammar</h4>Parser state/rule tables for the TT grammar</span></a> <a href="../../modules/Template/index.html" title="Template::* Modules" class="go up">Up<span class="about"><h4>Template::* Modules</h4></span></a> <a href="../../modules/Template/Namespace/index.html" title="Template::Namespace::* Modules" class="go next">Next<span class="about"><h4>Template::Namespace::* Modules</h4></span></a> </div> </div> <h1 class="headline">Template::Iterator</h1> <h2 class="subhead">Data iterator used by the FOREACH directive</h1> </div> <div id="page"> <div id="sidebar"> <a href="../../index.html" id="logo"></a> <div id="menu"> <ul class="menu"> <li class="l0 first"><a href="../../manual/index.html">Manual</a></li> <li class="l0"><a href="../../modules/index.html" class="warm">Modules</a></li> <li class="l1"><a href="../../modules/Template.html">Template.pm</a></li> <li class="l1"><a href="../../modules/Template/index.html" class="warm">Template::*</a></li> <li class="l2"><a href="../../modules/Template/Base.html">Base.pm</a></li> <li class="l2"><a href="../../modules/Template/Config.html">Config.pm</a></li> <li class="l2"><a href="../../modules/Template/Constants.html">Constants.pm</a></li> <li class="l2"><a href="../../modules/Template/Context.html">Context.pm</a></li> <li class="l2"><a href="../../modules/Template/Directive.html">Directive.pm</a></li> <li class="l2"><a href="../../modules/Template/Document.html">Document.pm</a></li> <li class="l2"><a href="../../modules/Template/Exception.html">Exception.pm</a></li> <li class="l2"><a href="../../modules/Template/Filters.html">Filters.pm</a></li> <li class="l2"><a href="../../modules/Template/Grammar.html">Grammar.pm</a></li> <li class="l2"><a href="../../modules/Template/Iterator.html" class="warm">Iterator.pm</a></li> <li class="l2"><a href="../../modules/Template/Namespace/index.html">Namespace::*</a></li> <li class="l2"><a href="../../modules/Template/Parser.html">Parser.pm</a></li> <li class="l2"><a href="../../modules/Template/Plugin.html">Plugin.pm</a></li> <li class="l2"><a href="../../modules/Template/Plugin/index.html">Plugin::*</a></li> <li class="l2"><a href="../../modules/Template/Plugins.html">Plugins.pm</a></li> <li class="l2"><a href="../../modules/Template/Provider.html">Provider.pm</a></li> <li class="l2"><a href="../../modules/Template/Service.html">Service.pm</a></li> <li class="l2"><a href="../../modules/Template/Stash.html">Stash.pm</a></li> <li class="l2"><a href="../../modules/Template/Stash/index.html">Stash::*</a></li> <li class="l2"><a href="../../modules/Template/Test.html">Test.pm</a></li> <li class="l2"><a href="../../modules/Template/VMethods.html">VMethods.pm</a></li> <li class="l2"><a href="../../modules/Template/View.html">View.pm</a></li> <li class="l0"><a href="../../tools/index.html">Tools</a></li> <li class="l0 last"><a href="../../tutorial/index.html">Tutorial</a></li> </ul> <div class="foot"></div> </div> </div> <div id="content"> <div class="section"> <div class="head"> <h1 id="contents" onclick="switch_section(this)" title="Click title to show/hide section content.">Contents</h1> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <ul class="toc"> <li class=""><a href="#SYNOPSIS">SYNOPSIS</a></li> <li class=""><a href="#DESCRIPTION">DESCRIPTION</a></li> <li class=""><a href="#PUBLIC_METHODS">PUBLIC METHODS</a></li> <li class="sub"><a href="#method_new">new($data) </a></li> <li class="sub"><a href="#method_get_first">get_first()</a></li> <li class="sub"><a href="#method_get_next">get_next()</a></li> <li class="sub"><a href="#method_get_all">get_all()</a></li> <li class="sub"><a href="#method_size">size()</a></li> <li class="sub"><a href="#method_max">max()</a></li> <li class="sub"><a href="#method_index">index()</a></li> <li class="sub"><a href="#method_count">count()</a></li> <li class="sub"><a href="#method_first">first()</a></li> <li class="sub"><a href="#method_last">last()</a></li> <li class="sub"><a href="#method_prev">prev()</a></li> <li class="sub"><a href="#method_next">next()</a></li> <li class=""><a href="#AUTHOR">AUTHOR</a></li> <li class=""><a href="#COPYRIGHT">COPYRIGHT</a></li> <li class=""><a href="#SEE_ALSO">SEE ALSO</a></li> </ul> </div> </div> <div class="pod"> <div class="section"> <div class="head"> <h1 id="SYNOPSIS" onclick="switch_section(this)" title="Click title to show/hide section content.">SYNOPSIS</h1> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <pre>my $iter = Template::Iterator->new(\@data, \%options);</pre> </div> </div> <div class="section"> <div class="head"> <h1 id="DESCRIPTION" onclick="switch_section(this)" title="Click title to show/hide section content.">DESCRIPTION</h1> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> The <code>Template::Iterator</code> module defines a generic data iterator for use by the <code>FOREACH</code> directive. </p> <p> It may be used as the base class for custom iterators. </p> </div> </div> <div class="section"> <div class="head"> <h1 id="PUBLIC_METHODS" onclick="switch_section(this)" title="Click title to show/hide section content.">PUBLIC METHODS</h1> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <div class="subsection"> <div class="head"> <h2 id="method_new" class="method" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">new($data) </h2> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> Constructor method. A reference to a list of values is passed as the first parameter. Subsequent calls to <a href="#method_get_first">get_first()</a> and <a href="#method_get_next">get_next()</a> calls will return each element from the list. </p> <pre>my $iter = Template::Iterator->new([ 'foo', 'bar', 'baz' ]);</pre> <p> The constructor will also accept a reference to a hash array and will expand it into a list in which each entry is a hash array containing a '<code>key</code>' and '<code>value</code>' item, sorted according to the hash keys. </p> <pre>my $iter = Template::Iterator->new({ foo => 'Foo Item', bar => 'Bar Item', });</pre> <p> This is equivalent to: </p> <pre>my $iter = Template::Iterator->new([ { key => 'bar', value => 'Bar Item' }, { key => 'foo', value => 'Foo Item' }, ]);</pre> <p> When passed a single item which is not an array reference, the constructor will automatically create a list containing that single item. </p> <pre>my $iter = Template::Iterator->new('foo');</pre> <p> This is equivalent to: </p> <pre>my $iter = Template::Iterator->new([ 'foo' ]);</pre> <p> Note that a single item which is an object based on a blessed ARRAY references will NOT be treated as an array and will be folded into a list containing that one object reference. </p> <pre>my $list = bless [ 'foo', 'bar' ], 'MyListClass'; my $iter = Template::Iterator->new($list);</pre> <p> equivalent to: </p> <pre>my $iter = Template::Iterator->new([ $list ]);</pre> <p> If the object provides an <code>as_list()</code> method then the <a href="../../modules/Template/Iterator.html">Template::Iterator</a> constructor will call that method to return the list of data. For example: </p> <pre>package MyListObject; sub new { my $class = shift; bless [ @_ ], $class; }</pre> <pre>package main; my $list = MyListObject->new('foo', 'bar'); my $iter = Template::Iterator->new($list);</pre> <p> This is then functionally equivalent to: </p> <pre>my $iter = Template::Iterator->new([ $list ]);</pre> <p> The iterator will return only one item, a reference to the <code>MyListObject</code> object, <code>$list</code>. </p> <p> By adding an <code>as_list()</code> method to the <code>MyListObject</code> class, we can force the <code>Template::Iterator</code> constructor to treat the object as a list and use the data contained within. </p> <pre>package MyListObject; ... sub as_list { my $self = shift; return $self; } package main; my $list = MyListObject->new('foo', 'bar'); my $iter = Template::Iterator->new($list);</pre> <p> The iterator will now return the two items, '<code>foo</code>' and '<code>bar</code>', which the <code>MyObjectList</code> encapsulates. </p> </div> </div> <div class="subsection"> <div class="head"> <h2 id="method_get_first" class="method" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">get_first()</h2> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> Returns a <code>($value, $error)</code> pair for the first item in the iterator set. The <code>$error</code> returned may be zero or undefined to indicate a valid datum was successfully returned. Returns an error of <code>STATUS_DONE</code> if the list is empty. </p> </div> </div> <div class="subsection"> <div class="head"> <h2 id="method_get_next" class="method" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">get_next()</h2> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> Returns a <code>($value, $error)</code> pair for the next item in the iterator set. Returns an error of <code>STATUS_DONE</code> if all items in the list have been visited. </p> </div> </div> <div class="subsection"> <div class="head"> <h2 id="method_get_all" class="method" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">get_all()</h2> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> Returns a <code>(\@values, $error)</code> pair for all remaining items in the iterator set. Returns an error of <code>STATUS_DONE</code> if all items in the list have been visited. </p> </div> </div> <div class="subsection"> <div class="head"> <h2 id="method_size" class="method" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">size()</h2> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> Returns the size of the data set or undef if unknown. </p> </div> </div> <div class="subsection"> <div class="head"> <h2 id="method_max" class="method" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">max()</h2> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> Returns the maximum index number (i.e. the index of the last element) which is equivalent to <a href="#method_size">size()</a> - <code>1</code>. </p> </div> </div> <div class="subsection"> <div class="head"> <h2 id="method_index" class="method" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">index()</h2> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> Returns the current index number which is in the range <code>0</code> to <a href="#method_max">max()</a>. </p> </div> </div> <div class="subsection"> <div class="head"> <h2 id="method_count" class="method" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">count()</h2> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> Returns the current iteration count in the range <code>1</code> to <a href="#method_size">size()</a>. This is equivalent to <a href="#method_index">index()</a> + <code>1</code>. </p> </div> </div> <div class="subsection"> <div class="head"> <h2 id="method_first" class="method" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">first()</h2> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> Returns a boolean value to indicate if the iterator is currently on the first iteration of the set. </p> </div> </div> <div class="subsection"> <div class="head"> <h2 id="method_last" class="method" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">last()</h2> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> Returns a boolean value to indicate if the iterator is currently on the last iteration of the set. </p> </div> </div> <div class="subsection"> <div class="head"> <h2 id="method_prev" class="method" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">prev()</h2> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> Returns the previous item in the data set, or <code>undef</code> if the iterator is on the first item. </p> </div> </div> <div class="subsection"> <div class="head"> <h2 id="method_next" class="method" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">next()</h2> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> Returns the next item in the data set or <code>undef</code> if the iterator is on the last item. </p> </div> </div> </div> </div> <div class="section"> <div class="head"> <h1 id="AUTHOR" onclick="switch_section(this)" title="Click title to show/hide section content.">AUTHOR</h1> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> Andy Wardley <abw@wardley.org> <a href="http://wardley.org/">http://wardley.org/</a> </p> </div> </div> <div class="section"> <div class="head"> <h1 id="COPYRIGHT" onclick="switch_section(this)" title="Click title to show/hide section content.">COPYRIGHT</h1> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> Copyright (C) 1996-2007 Andy Wardley. All Rights Reserved. </p> <p> This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. </p> </div> </div> <div class="section"> <div class="head"> <h1 id="SEE_ALSO" onclick="switch_section(this)" title="Click title to show/hide section content.">SEE ALSO</h1> <a href="#body" class="top" title="Back up to the top of the page" >Top</a> </div> <div class="body"> <p> <a href="../../modules/Template.html">Template</a> </p> </div> </div> </div></div> <br class="clear" /> <div class="pageinfo"> /modules/Template/Iterator.html last modified 10:54:55 31-May-2007 </div> </div> <div id="footer"> <a href="http://opensource.org/" class="osi"></a> <div class="controls"> <div class="pager"> <a href="../../modules/Template/Grammar.html" title="Template::Grammar" class="go back">Back<span class="about"><h4>Template::Grammar</h4></span></a> <a href="../../modules/Template/index.html" title="Template::* Modules" class="go up">Up<span class="about"><h4>Template::* Modules</h4></span></a> <a href="../../modules/Template/Namespace/index.html" title="Template::Namespace::* Modules" class="go next">Next<span class="about"><h4>Template::Namespace::* Modules</h4></span></a> </div> </div> <div class="copyright"> Copyright © 1996-2007 <a href="http://wardley.org/">Andy Wardley</a>. All Rights Reserved. </div> <div class="licence"> The <a href="http://template-toolkit.org/">Template Toolkit</a> is <a href="http://opensource.org/">Open Source</a> software. You can redistribute and/or modify it under the terms of the <a href="http://www.opensource.org/licenses/gpl-license.php">GNU Public Licence</a> or the <a href="http://www.opensource.org/licenses/artistic-license.php">Perl Artistic Licence</a>. </div> </div> <div id="palette"> <ul> <li class="first"><a href="#" class="blue" onclick="set_style('Clear Blue')"></a></li> <li><a href="#" class="orange" onclick="set_style('Clear Orange')"></a></li> <li><a href="#" class="green" onclick="set_style('Clear Green')"></a></li> <li><a href="#" class="purple" onclick="set_style('Clear Purple')"></a></li> <li><a href="#" class="grey" onclick="set_style('Clear Grey')"></a></li> </ul> </div> </div> </body> </html>