Add built local::lib
[catagits/Gitalist.git] / local-lib5 / man / man3 / Template::Stash::Context.3pm
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"
134 Template::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"
148 This is an alternate stash object which includes a patch from 
149 Craig Barratt to implement various new virtual methods to allow
150 dotted template variable to denote if object methods and subroutines
151 should be called in scalar or list context.  It adds a little overhead
152 to each stash call and I'm a little wary of applying that to the core
153 default stash without investigating the effects first. So for now,
154 it's implemented as a separate stash module which will allow us to 
155 test it out, benchmark it and switch it in or out as we require.
156 .PP
157 This is what Craig has to say about it:
158 .PP
159 Here's a better set of features for the core.  Attached is a new version
160 of Stash.pm (based on \s-1TT2\s0.02) that:
161 .PP
162 * supports the special op \*(L"scalar\*(R" that forces scalar context on
163 function calls, eg:
164 .PP
165 .Vb 1
166 \&    cgi.param("foo").scalar
167 .Ve
168 .PP
169 calls cgi.param(\*(L"foo\*(R") in scalar context (unlike my wimpy
170 scalar op from last night).  Array context is the default.
171 .PP
172 With non-function operands, scalar behaves like the perl
173 version (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.
176 If applied to a function the function is not called.  Eg:
177 .PP
178 .Vb 1
179 \&    cgi.param("foo").ref
180 .Ve
181 .PP
182 does *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
186 arrays and promotes scalars to one-element arrays.
187 .PP
188 * allows scalar ops to be applied to arrays and hashes in place,
189 eg: \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
192 to one-element arrays (like an implicit \*(L"array\*(R").  So you can
193 do things like \s-1SCALAR\s0.size, \s-1SCALAR\s0.join and get a useful result.
194 .PP
195 This also means you can now use x.0 to safely get the first element
196 whether x is an array or scalar.
197 .PP
198 The new Stash.pm passes the \s-1TT2\s0.02 test suite.  But I haven't tested the
199 new 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"
203 Andy Wardley <abw@wardley.org>
204 .PP
205 <http://wardley.org/|http://wardley.org/>
206 .SH "VERSION"
207 .IX Header "VERSION"
208 1.63, distributed as part of the
209 Template 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
216 This module is free software; you can redistribute it and/or
217 modify it under the same terms as Perl itself.
218 .SH "SEE ALSO"
219 .IX Header "SEE ALSO"
220 Template::Stash