File: FieldGroup.pod

package info (click to toggle)
libmail-box-perl 2.068-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 3,576 kB
  • ctags: 1,493
  • sloc: perl: 22,358; makefile: 49
file content (463 lines) | stat: -rw-r--r-- 9,141 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463

=head1 NAME

Mail::Message::Head::FieldGroup - a sub set of fields in a header


=head1 INHERITANCE

 Mail::Message::Head::FieldGroup
   is a Mail::Reporter

 Mail::Message::Head::FieldGroup is extended by
   Mail::Message::Head::ListGroup
   Mail::Message::Head::ResentGroup
   Mail::Message::Head::SpamGroup


=head1 SYNOPSIS

Never instantiated directly.


=head1 DESCRIPTION

Some fields have a combined meaning: a set of fields which represent
one intermediate step during the transport of the message (a
I<resent group>, implemented in L<Mail::Message::Head::ResentGroup|Mail::Message::Head::ResentGroup>), 
fields added by mailing list software (implemented in
L<Mail::Message::Head::ListGroup|Mail::Message::Head::ListGroup>), or fields added by Spam detection
related software (implemented by L<Mail::Message::Head::SpamGroup|Mail::Message::Head::SpamGroup>).
Each set of fields can be extracted or added as group with objects
which are based on the implementation in this class.



=head1 METHODS


=head2 Constructors


$obj-E<gt>B<clone>

=over 4

Make a copy of this object.  The collected fieldnames are copied and the
list type information.  No deep copy is made for the header: this is
only copied as reference.

=back

$obj-E<gt>B<from>(HEAD|MESSAGE)

=over 4

Create a group of fields based on the specified MESSAGE or message HEAD.
This may return one or more of the objects, which depends on the
type of group.  Mailing list fields are all stored in one object,
where resent and spam groups can appear more than once.

=back

$obj-E<gt>B<implementedTypes>

Mail::Message::Head::FieldGroup-E<gt>B<implementedTypes>

=over 4

Returns a list of strings containing all possible return values for
L<type()|Mail::Message::Head::FieldGroup/"Access to the header">.

=back

Mail::Message::Head::FieldGroup-E<gt>B<new>(FIELDS, OPTIONS)

=over 4

Construct an object which maintains one set of header FIELDS.  The
FIELDS may be specified as C<Mail::Message::Field> objects or as key-value
pairs.  The OPTIONS and FIELDS (as key-value pair) can be mixed: they are
distinguished by their name, where the fields always start with a capital.
The field objects must aways lead the OPTIONS.

 Option  --Defined in     --Default
 head                       undef
 log       Mail::Reporter   'WARNINGS'
 software                   undef
 trace     Mail::Reporter   'WARNINGS'
 type                       undef
 version                    undef

. head HEAD

=over 4

The header HEAD object is used to store the grouped fields in.
If no header is specified, a L<Mail::Message::Head::Partial|Mail::Message::Head::Partial> is created
for you.  If you wish to scan the existing fields in a header, then use
the L<from()|Mail::Message::Head::FieldGroup/"Constructors"> method.

=back

. log LEVEL

. software STRING

=over 4

Name of the software which produced the fields.

=back

. trace LEVEL

. type STRING

=over 4

Group name for the fields.  Often the same, or close
to the same STRING, as the C<software> option contains.

=back

. version STRING

=over 4

Version number for the software which produced the fields.

=back

=back

=head2 The header


$obj-E<gt>B<add>((FIELD, VALUE) | OBJECT)

=over 4

Add a field to the header, using the field group.  When the field group
is already attached to a real message header, it will appear in that
one as well as being registed in this set.  If no header is defined,
the field only appears internally.

I<Example:> adding a field to a detached list group


 my $this = Mail::Message::Head::ListGroup->new(...);
 $this->add('List-Id' => 'mailbox');
 $msg->addListGroup($this);
 $msg->send;

I<Example:> adding a field to an attached list group


 my $lg = Mail::Message::Head::ListGroup->from($msg);
 $lg->add('List-Id' => 'mailbox');

=back

$obj-E<gt>B<addFields>([FIELDNAMES])

=over 4

Add some FIELDNAMES to the set.

=back

$obj-E<gt>B<attach>(HEAD)

=over 4

Add a group of fields to a message HEAD.  The fields will be cloned(!)
into the header, so that the field group object can be used again.

I<Example:> attaching a list group to a message


 my $lg = Mail::Message::Head::ListGroup->new(...);
 $lg->attach($msg->head);
 $msg->head->addListGroup($lg);   # same

 $msg->head->addSpamGroup($sg);   # also implemented with attach

=back

$obj-E<gt>B<delete>

=over 4

Remove all the header lines which are combined in this fields group,
from the header.

=back

$obj-E<gt>B<fieldNames>

=over 4

Return the names of the fields which are used in this group.

=back

$obj-E<gt>B<fields>

=over 4

Return the fields which are defined for this group.

=back

$obj-E<gt>B<head>

=over 4

Returns the header object, which includes these fields.

=back

=head2 Access to the header


$obj-E<gt>B<software>

=over 4

Returns the name of the software as is defined in the headers.  The may
be slightly different from the return value of L<type()|Mail::Message::Head::FieldGroup/"Access to the header">, but usually
not too different.

=back

$obj-E<gt>B<type>

=over 4

Returns an abstract name for the field group; which software is
controling it.  C<undef> is returned in case the type is not known.
Valid names are group type dependent: see the applicable manual
pages.  A list of all types can be retreived with L<implementedTypes()|Mail::Message::Head::FieldGroup/"Constructors">.

=back

$obj-E<gt>B<version>

=over 4

Returns the version number of the software used to produce the fields.
Some kinds of software do leave such a trace, other cases will return
C<undef>

=back

=head2 Internals


$obj-E<gt>B<collectFields>([NAME])

=over 4

Scan the header for fields which are usually contained in field group
with the specified NAME.  For mailinglist groups, you can not specify
a NAME: only one set of headers will be found (all headers are considered
to be produced by exactly one package of mailinglist software).

This method is automatically called when a field group is
constructed via L<from()|Mail::Message::Head::FieldGroup/"Constructors"> on an existing header or message.

Returned are the names of the list header fields found, in scalar
context the amount of fields.  An empty list/zero indicates that there
was no group to be found.

Please warn the author of MailBox if you see that to few
or too many fields are included.

=back

$obj-E<gt>B<detected>(TYPE, SOFTWARE, VERSION)

=over 4

Sets the values for the field group type, software, and version,
prossibly to C<undef>.

=back

=head2 Error handling


$obj-E<gt>B<AUTOLOAD>

=over 4

See L<Mail::Reporter/"Error handling">

=back

$obj-E<gt>B<addReport>(OBJECT)

=over 4

See L<Mail::Reporter/"Error handling">

=back

$obj-E<gt>B<defaultTrace>([LEVEL]|[LOGLEVEL, TRACELEVEL]|[LEVEL, CALLBACK])

Mail::Message::Head::FieldGroup-E<gt>B<defaultTrace>([LEVEL]|[LOGLEVEL, TRACELEVEL]|[LEVEL, CALLBACK])

=over 4

See L<Mail::Reporter/"Error handling">

=back

$obj-E<gt>B<details>

=over 4

Produce information about the detected/created field group, which may be
helpful during debugging.  A nicely formatted string is returned.

=back

$obj-E<gt>B<errors>

=over 4

See L<Mail::Reporter/"Error handling">

=back

$obj-E<gt>B<log>([LEVEL [,STRINGS]])

Mail::Message::Head::FieldGroup-E<gt>B<log>([LEVEL [,STRINGS]])

=over 4

See L<Mail::Reporter/"Error handling">

=back

$obj-E<gt>B<logPriority>(LEVEL)

Mail::Message::Head::FieldGroup-E<gt>B<logPriority>(LEVEL)

=over 4

See L<Mail::Reporter/"Error handling">

=back

$obj-E<gt>B<logSettings>

=over 4

See L<Mail::Reporter/"Error handling">

=back

$obj-E<gt>B<notImplemented>

=over 4

See L<Mail::Reporter/"Error handling">

=back

$obj-E<gt>B<print>([FILEHANDLE])

=over 4

Print the group to the specified FILEHANDLE or GLOB.  This is probably only
useful for debugging purposed.  The output defaults to the selected file
handle.

=back

$obj-E<gt>B<report>([LEVEL])

=over 4

See L<Mail::Reporter/"Error handling">

=back

$obj-E<gt>B<reportAll>([LEVEL])

=over 4

See L<Mail::Reporter/"Error handling">

=back

$obj-E<gt>B<trace>([LEVEL])

=over 4

See L<Mail::Reporter/"Error handling">

=back

$obj-E<gt>B<warnings>

=over 4

See L<Mail::Reporter/"Error handling">

=back

=head2 Cleanup


$obj-E<gt>B<DESTROY>

=over 4

See L<Mail::Reporter/"Cleanup">

=back

$obj-E<gt>B<inGlobalDestruction>

=over 4

See L<Mail::Reporter/"Cleanup">

=back




=head1 DIAGNOSTICS

I<Error:> Package $package does not implement $method.

Fatal error: the specific package (or one of its superclasses) does not
implement this method where it should. This message means that some other
related classes do implement this method however the class at hand does
not.  Probably you should investigate this and probably inform the author
of the package.






=head1 REFERENCES

See the MailBox website at L<http://perl.overmeer.net/mailbox/> for more details.

=head1 COPYRIGHTS

Distribution version 2.068.
Written by Mark Overmeer (mark@overmeer.net).  See the ChangeLog for
other contributors.

Copyright (c) 2001-2006 by the author(s). All rights reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.