Add built local::lib
[catagits/Gitalist.git] / local-lib5 / man / man3 / Template::Stash::Context.3pm
CommitLineData
3fea05b9 1.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.3
2.\"
3.\" Standard preamble:
4.\" ========================================================================
5.de Sh \" Subsection heading
6.br
7.if t .Sp
8.ne 5
9.PP
10\fB\\$1\fR
11.PP
12..
13.de Sp \" Vertical space (when we can't use .PP)
14.if t .sp .5v
15.if n .sp
16..
17.de Vb \" Begin verbatim text
18.ft CW
19.nf
20.ne \\$1
21..
22.de Ve \" End verbatim text
23.ft R
24.fi
25..
26.\" Set up some character translations and predefined strings. \*(-- will
27.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28.\" double quote, and \*(R" will give a right double quote. | will give a
29.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
30.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
31.\" expand to `' in nroff, nothing in troff, for use with C<>.
32.tr \(*W-|\(bv\*(Tr
33.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34.ie n \{\
35. ds -- \(*W-
36. ds PI pi
37. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
39. ds L" ""
40. ds R" ""
41. ds C` ""
42. ds C' ""
43'br\}
44.el\{\
45. ds -- \|\(em\|
46. ds PI \(*p
47. ds L" ``
48. ds R" ''
49'br\}
50.\"
51.\" If the F register is turned on, we'll generate index entries on stderr for
52.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53.\" entries marked with X<> in POD. Of course, you'll have to process the
54.\" output yourself in some meaningful fashion.
55.if \nF \{\
56. de IX
57. tm Index:\\$1\t\\n%\t"\\$2"
58..
59. nr % 0
60. rr F
61.\}
62.\"
63.\" For nroff, turn off justification. Always turn off hyphenation; it makes
64.\" way too many mistakes in technical documents.
65.hy 0
66.if n .na
67.\"
68.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69.\" Fear. Run. Save yourself. No user-serviceable parts.
70. \" fudge factors for nroff and troff
71.if n \{\
72. ds #H 0
73. ds #V .8m
74. ds #F .3m
75. ds #[ \f1
76. ds #] \fP
77.\}
78.if t \{\
79. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80. ds #V .6m
81. ds #F 0
82. ds #[ \&
83. ds #] \&
84.\}
85. \" simple accents for nroff and troff
86.if n \{\
87. ds ' \&
88. ds ` \&
89. ds ^ \&
90. ds , \&
91. ds ~ ~
92. ds /
93.\}
94.if t \{\
95. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101.\}
102. \" troff and (daisy-wheel) nroff accents
103.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110.ds ae a\h'-(\w'a'u*4/10)'e
111.ds Ae A\h'-(\w'A'u*4/10)'E
112. \" corrections for vroff
113.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115. \" for low resolution devices (crt and lpr)
116.if \n(.H>23 .if \n(.V>19 \
117\{\
118. ds : e
119. ds 8 ss
120. ds o a
121. ds d- d\h'-1'\(ga
122. ds D- D\h'-1'\(hy
123. ds th \o'bp'
124. ds Th \o'LP'
125. ds ae ae
126. ds Ae AE
127.\}
128.rm #[ #] #H #V #F C
129.\" ========================================================================
130.\"
131.IX Title "Template::Stash::Context 3"
132.TH Template::Stash::Context 3 "2009-04-07" "perl v5.8.7" "User Contributed Perl Documentation"
133.SH "NAME"
134Template::Stash::Context \- Experimetal stash allowing list/scalar context definition
135.SH "SYNOPSIS"
136.IX Header "SYNOPSIS"
137.Vb 2
138\& use Template;
139\& use Template::Stash::Context;
140.Ve
141.PP
142.Vb 2
143\& my $stash = Template::Stash::Context\->new(\e%vars);
144\& my $tt2 = Template\->new({ STASH => $stash });
145.Ve
146.SH "DESCRIPTION"
147.IX Header "DESCRIPTION"
148This is an alternate stash object which includes a patch from
149Craig Barratt to implement various new virtual methods to allow
150dotted template variable to denote if object methods and subroutines
151should be called in scalar or list context. It adds a little overhead
152to each stash call and I'm a little wary of applying that to the core
153default stash without investigating the effects first. So for now,
154it's implemented as a separate stash module which will allow us to
155test it out, benchmark it and switch it in or out as we require.
156.PP
157This is what Craig has to say about it:
158.PP
159Here's a better set of features for the core. Attached is a new version
160of Stash.pm (based on \s-1TT2\s0.02) that:
161.PP
162* supports the special op \*(L"scalar\*(R" that forces scalar context on
163function calls, eg:
164.PP
165.Vb 1
166\& cgi.param("foo").scalar
167.Ve
168.PP
169calls cgi.param(\*(L"foo\*(R") in scalar context (unlike my wimpy
170scalar op from last night). Array context is the default.
171.PP
172With non-function operands, scalar behaves like the perl
173version (eg: no-op for scalar, size for arrays, etc).
174.PP
175* supports the special op \*(L"ref\*(R" that behaves like the perl ref.
176If applied to a function the function is not called. Eg:
177.PP
178.Vb 1
179\& cgi.param("foo").ref
180.Ve
181.PP
182does *not* call cgi.param and evaluates to \*(L"\s-1CODE\s0\*(R". Similarly,
183\&\s-1HASH\s0.ref, \s-1ARRAY\s0.ref return what you expect.
184.PP
185* adds a new scalar and list op called \*(L"array\*(R" that is a no-op for
186arrays and promotes scalars to one-element arrays.
187.PP
188* allows scalar ops to be applied to arrays and hashes in place,
189eg: \s-1\fIARRAY\s0.repeat\fR\|(3) repeats each element in place.
190.PP
191* allows list ops to be applied to scalars by promoting the scalars
192to one-element arrays (like an implicit \*(L"array\*(R"). So you can
193do things like \s-1SCALAR\s0.size, \s-1SCALAR\s0.join and get a useful result.
194.PP
195This also means you can now use x.0 to safely get the first element
196whether x is an array or scalar.
197.PP
198The new Stash.pm passes the \s-1TT2\s0.02 test suite. But I haven't tested the
199new features very much. One nagging implementation problem is that the
200\&\*(L"scalar\*(R" and \*(L"ref\*(R" ops have higher precedence than user variable names.
201.SH "AUTHOR"
202.IX Header "AUTHOR"
203Andy Wardley <abw@wardley.org>
204.PP
205<http://wardley.org/|http://wardley.org/>
206.SH "VERSION"
207.IX Header "VERSION"
2081.63, distributed as part of the
209Template Toolkit version 2.19, released on 27 April 2007.
210.SH "COPYRIGHT"
211.IX Header "COPYRIGHT"
212.Vb 1
213\& Copyright (C) 1996\-2007 Andy Wardley. All Rights Reserved.
214.Ve
215.PP
216This module is free software; you can redistribute it and/or
217modify it under the same terms as Perl itself.
218.SH "SEE ALSO"
219.IX Header "SEE ALSO"
220Template::Stash