Template Toolkit: �������: ������ � �������
Template Toolkit(������� ��������) |
|
||
|
������ � ������� |
|
����������
- ��������
- �������� � Template Toolkit
- ������������� Template Toolkit
• ����� ������� ������ - ��������� XML
- ��������� �������
- �����
- ������
- ��������� �����
�������� |
[ ������ ] [ ������� ] [ ������ ] |
������ ������� �������� ������� ������������ Template Toolkit �� ������ � ������ ������ � �������, ��������������� � ��������� �������� � ������. ������� ���� �������� ������ ������� (Dave Cross) � ������� ���� ������������ � �������� ������ �� http://www.perl.com/ � 2001 ����. |
�������� � Template Toolkit |
[ ������ ] [ ������� ] [ ������ ] |
���������� ��� ������� Perl, ������� ����������� �������� "�����������" � ������������ �������. ���� �� ����������� � ���� ������ ��� ������������� DBI, ������ ������ �� ���� ��� ������������� ������ �� ������� LWP ��� ������� XML ��� ������������� XML::Parser ��� ������ �� ��� ����������, �� �������� ����� ������ � ���������� Perl. � �������, ��� 2000 ��� ������ ����� �������� ��� ������ ������ ('must have') ������ - Template Toolkit. � �� ������ � ���� ���������, ���� �� �������� Template Toolkit ��� ������� '������ ����� ������� ('Best New Module') �� ��������� ����� ����������� �� Perl (Perl Conference). Template Toolkit ������ 2.0 (��������� ����� ����������� ��� TT2) ��� �� ���� ������� � ����� CPAN. ������������� � ������� TT2 ���� ������ (Andy Wardley <abw@wardley.org>). ������ ����� �� ����������� ������ ���� �� ������ � ��������� Text::Metatext, ������� �� ������ ����� ������ (Fred Brooks) ��� ��������� ���������, � ���������� ���� ����� �������� �������� (���, �� ������� ����, �������� ������������) �������� �� ������ � ��������� ��� Perl. TT2 ������������� ����������� ����� ����-������������ (������) � �������� � ���� ���������� ������. ���� �� ��������� ���������� - �������� ������������ ���-������� � ������� ����� �������� TT2 ������� ������ ��������� ���� �����������. � ���� ������ � ������� ��������, ��� TT2 ������� �� ������ � ���-�����������. |
������������� Template Toolkit |
[ ������ ] [ ������� ] [ ������ ] |
������� ��������� ��� �� ����� ������������ TT2 ��� ��������� �������� ����� � �������. TT2 - ��������-��������������� ������. ����� �������� ��� � CPAN, � ����������� ���������, ������������ ��� � ����� ��������� ��������� ������, ��������� ������ �������� � ��� ��� ������: use Template; my $tt = Template->new;
�����������,
��� ��������� �������, ��� ����� ������� ����� $tt->process('my_template', \%data) || die $tt->error;
�� ��������
��� ����� �������� � my @teams = ({ name => 'Man Utd', played => 16, won => 12, drawn => 3, lost => 1 }, { name => 'Bradford', played => 16, won => 2, drawn => 5, lost => 9 }); my %data = ( name => 'English Premier League', season => '2000/01', teams => \@teams );
�� ������� ��� �������� � �������, � ������� ����� �������� ������ ��
�������: ���� ������, ������� �� ����� ������������ ��� ��������� ���� ������. League Standings League Name: [% name %] Season: [% season %] Teams: [% FOREACH team = teams -%] [% team.name %] [% team.played -%] [% team.won %] [% team.drawn %] [% team.lost %] [% END %] ��������� ����� ������� � ����� ������� ���� ��������� ���������: League Standings League Name: English Premier League Season: 2000/01 Teams: Man Utd 16 12 3 1 Bradford 16 2 5 9 ����� ���������, ��� ��������� ������� ����� ��� ���������. ������� ��������� ���������.
�������� ������ � ��������� ���������, �������� �������� �������. ������ ������ ������ �� ���������� ������ ���������� ������ � ������ �������������. �����, ��������� ������� �������������, ��� ������������� ����� Perl, �� ����� ����� ������ �������� ������ ������������ � ������.
��������� ��������� ���������� ������, ����� TT2 ���������
��������� ������� �� ���������� ���������� ��������� ������.
������, ������������ ���������� �������� ����� ���� ���������,
���������, ������, ��������� � ���� ���������. ���������
��������� ����������������� ���� ������ � "������� ����������
�����", ����� ���������� ���������� ��������. � ���� �������
������ ������� ���� �����, �� ����� ������� ������� �������
����� ���� ��������, � ������� ������ � �������������� ���������
����� �������������� ����������� ������� ����� ������� ���������������� ���������� ���������� ����, ��� �������, �������������� � ����� ������� �������, ��� ��� ������� �� ������������ ����. ������ ����� ���������� �������� ���������� �����, ��������� � ������ �������, ���������� ������� � ����������� ����� � ��������� � ����� �����. ������� �������� ��� ���� � ������ ������ � ���� ���� �� �����. ���� ������� ����� ���������� ����� �����, ����������� ������� ����� �������� � ������������ ������. ���� � ��� �� ��������, ������, ����� � ���������, � ����� ������� � ����������� ���� ����� ����������� �� �������� � ��������. �������������, ���� � ��� ���� ������ �� ��������, � ������� ���������� ��� ������� ������ � ����������� �����, ������ � ���������, ������� � ����������� �����, �������� �� �������� � �������� (����� ���������� ���������), �� ������ ��� ��������� �������� (������� �����, ��������� ���� � ���� ����� � ����). ������� ���������� ����� ����, �� ����������� �������� ����� ���������. �� ����� ��������� �������� ���: Man Utd,7,1,0,26,4,5,2,1,15,6 Arsenal,7,1,0,17,4,2,3,3,7,9 Leicester,4,3,1,10,8,4,2,2,7,4 ������� ������, ������� �������� ��� ������ � ������ ����� ����� ��������� �������� ��� (��� ��������� � �������� �������� ������� ������ - w, d � l ���������� ������, ����� � ��������� ��������������, f � a - ������� � ����������� ����; �������� h � a ����� ���������� ������� ���������� �������������� �������� � �������� ����������): my @cols = qw(name hw hd hl hf ha aw ad al af aa); my @teams; while (<>) { chomp; my %team; @team{@cols} = split /,/; push @teams, \%team; } ������ �� ����� ����� ������ �� ������ ������ � ���������� ��� ����������� ��������: foreach (@teams) { $_->{w} = $_->{hw} + $_->{aw}; $_->{d} = $_->{hd} + $_->{ad}; $_->{l} = $_->{hl} + $_->{al}; $_->{pl} = $_->{w} + $_->{d} + $_->{l}; $_->{f} = $_->{hf} + $_->{af}; $_->{a} = $_->{ha} + $_->{aa}; $_->{gd} = $_->{f} - $_->{a}; $_->{pt} = (3 * $_->{w}) + $_->{d}; } � ����� ������������� ������ �� ��������: @teams = sort { $b->{pt} <=> $b->{pt} || $b->{gd} <=> $a->{gd} } @teams; �, �������, ������� �������, ������������ ����� � ����: $teams[$_]->{pos} = $_ + 1 foreach 0 .. $#teams; ������ ��� ������ �� ���������� ��������� ������ �� ����� ������������� ��������� � �������������� ��������� �������. ������ ��� CSV �����, ����������� ������ � ����������� �������� � �������� �����������, ����� ��������� ��������� �������: [% FOREACH team = teams -%] [% team.pos %],[% team.name %],[% team.pl %],[% team.hw %], [%- team.hd %],[% team.hl %],[% team.hf %],[% team.ha %], [%- team.aw %],[% team.ad %],[% team.al %],[% team.af %], [%- team.aa %],[% team.gd %],[% team.pt %] [%- END %] ����� ��������� �����������: $tt->process('split.tt', { teams => \@teams }, 'split.csv') || die $tt->error; �� �������� ��������� �����: 1,Man Utd,16,7,1,0,26,4,5,2,1,15,6,31,39 2,Arsenal,16,7,1,0,17,4,2,3,3,7,9,11,31 3,Leicester,16,4,3,1,10,8,4,2,2,7,4,5,29
�������� ��������, �� ������������ ������ �������� � ������
���� �� ��� �� ������������ ���������� �� �������� � �������� ����, �� ����� �� ������������ ����� ������� ������: [% FOREACH team = teams -%] [% team.pos %],[% team.name %],[% team.pl %],[% team.w %], [%- team.d %],[% team.l %],[% team.f %],[% team.a %], [%- team.aa %],[% team.gd %],[% team.pt %] [% END -%] � ����� �������� �� ��������� �������: 1,Man Utd,16,12,3,1,41,10,6,31,39 2,Arsenal,16,9,4,3,24,13,9,11,31 3,Leicester,16,8,5,3,17,12,4,5,29 |
��������� XML |
[ ������ ] [ ������� ] [ ������ ] |
��������� ������ ��������� ����� � ����� TT2, ���� ��, ���������,
��������, ��� ���� ���� ����� ����� ����� ����������� ����� �������
use FootballLeague; use Template; my $league = FootballLeague->new(name => 'English Premier'); my $tt = Template->new; $tt->process('league_xml.tt', { league => $league }) || die $tt->error;
� ������ <?xml version="1.0"?> <!DOCTYPE LEAGUE SYSTEM "league.dtd"> <league name="[% league.name %]" season="[% league.season %]"> [% FOREACH team = league.teams -%] <team name="[% team.name %]" pos="[% team.pos %]" played="[% team.pl %]" goal_diff="[% team.gd %]" points="[% team.pt %]"> <stats type="home" win="[% team.hw %]" draw="[%- team.hd %]" lose="[% team.hl %]" for="[% team.hf %]" against="[% team.ha %]" /> <stats type="away" win="[% team.aw %]" draw="[%- team.ad %]" lose="[% team.al %]" for="[% team.af %]" against="[% team.aa %]" /> </team> [% END -%] </league>
�������� ��������, ��� ��������� �� �������� ������ |
��������� ������� |
[ ������ ] [ ������� ] [ ������ ] |
� �������� ���������� ������� �����������, ��� ��� ����� ������� ������� ���������� ���� � ��������� ��������. �������� �� �������� ��� ������ ��������� ����� � �� ��� ��� ����� ������������ ���������� ������. ����� ������������� ����� CSV �����, � ������ XML. ����-�� ����� ������ � ��������� �� �������� � �������� ����������, � ����-�� ������ �������� �����. � �����, ��� ����������� ������ ��������� �������, �� ������� �������������� ����������� � ���, ��� �� ����� ������������ ���� ������ ������. ��� ��� ����� ���������� ������� �������, ��� ���������� ����� ������ ����� ������������ � ���������� ���. use FootballLeague; use Template; my ($name, $type, $stats) = @_; my $league = FootballLeague->new(name => $name); my $tt = Template->new; $tt->process("league_${type}_$stats.tt", { league => $league } "league_$stats.$type") || die $tt->error; ��������, �� ������ ������� ������ ��������� �������: league.pl 'English Premier' xml split
� ���������� ����� ��������� ������ ��� ��� �������� ��������� �������� ���� Template Toolkit. ���� ����� �� ������� �������� ������ ������ - ��������, �� ������� ������� HTML �������� � �������� ���� � ���� �������� LaTeX - ��� ��� ��� ����� ����� ������� ��� ������� ���������� ������ � ������� ��� � ������������ � ������������ ����������� �� ������. ��� �� ����� ����� ������ ������� ��������� � ����. �������, ������ �� ���������, ������ ��� ������ ����� Template Toolkit ��� ������ ���������� ������������ ������ ��������� Perl. |
����� |
[ ������ ] [ ������� ] [ ������ ] |
���� ����� (Dave Cross <dave@dave.org.uk>) |
������ |
[ ������ ] [ ������� ] [ ������ ] |
Template Toolkit ������ 2.14, ���� ������ - 4 ������� 2004. |
��������� ����� |
[ ������ ] [ ������� ] [ ������ ] |
Copyright (C) 2001 Dave Cross <dave@dave.org.uk> ���� ������ �������� ��������-���������������� ����������� ������������; �� ������ �������������� �/��� �������������� ��� �� ��� �� ��������, ��� � Perl. |
http://www.template-toolkit.ru/