1 |
|
2 |
=head1 NAME
|
3 |
|
4 |
Message::Header::Default --- Internet Messages -- Definition
|
5 |
for Default Namespace of Header Fields
|
6 |
|
7 |
=cut
|
8 |
|
9 |
package Message::Header::Default;
|
10 |
use strict;
|
11 |
use vars qw($VERSION);
|
12 |
$VERSION=do{my @r=(q$Revision: 1.1 $=~/\d+/g);sprintf "%d."."%02d" x $#r,@r};
|
13 |
require Message::Header;
|
14 |
|
15 |
our %OPTION;
|
16 |
|
17 |
## Case sensibility of field name
|
18 |
$OPTION{case_sensible} = 1;
|
19 |
$OPTION{n11n_name} = \&_name_n11n;
|
20 |
$OPTION{n11n_prefix} = \&_name_n11n;
|
21 |
|
22 |
## Namespace URI of this namespace
|
23 |
$OPTION{namespace_uri} = 'urn:x-suika-fam-cx:msgpm:header:default';
|
24 |
|
25 |
## Force & hyphened prefix name of this namespace (ex. "prefix-name")
|
26 |
$OPTION{namespace_phname} = 'default';
|
27 |
$OPTION{namespace_phname_goodcase} = 'default';
|
28 |
|
29 |
## `Good' & dotted prefix name of this namespace (ex. "prefix.name", "prefix2.name")
|
30 |
$OPTION{namespace_good_prefix} = 'DEFAULT';
|
31 |
|
32 |
## Field body data type (specified by package name)
|
33 |
$OPTION{value_type} = {
|
34 |
':default' => ['Message::Field::Unstructured'],
|
35 |
};
|
36 |
|
37 |
##
|
38 |
|
39 |
$Message::Header::NS_phname2uri{$OPTION{namespace_phname}} = $OPTION{namespace_uri};
|
40 |
$Message::Header::NS_uri2phpackage{$OPTION{namespace_uri}} = __PACKAGE__;
|
41 |
|
42 |
## $self->_goodcase ($namespace_package_name, $field_name)
|
43 |
sub _goodcase ($$$) {
|
44 |
no strict 'refs';
|
45 |
my $self = shift;
|
46 |
my $nspack = shift;
|
47 |
my $name = shift;
|
48 |
if (${$nspack.'::OPTION'}{goodcase}->{$name}) {
|
49 |
return ${$nspack.'::OPTION'}{goodcase}->{$name};
|
50 |
}
|
51 |
$name =~ s/(?:^|-)[a-z]/uc $&/ge;
|
52 |
$name;
|
53 |
}
|
54 |
|
55 |
sub _name_n11n ($$$) {
|
56 |
no strict 'refs';
|
57 |
my $self = shift;
|
58 |
my $nspack = shift;
|
59 |
my $name = shift;
|
60 |
unless (${$nspack.'::OPTION'}{case_sensible}) {
|
61 |
lc $name;
|
62 |
} else {
|
63 |
$name;
|
64 |
}
|
65 |
}
|
66 |
|
67 |
package Message::Header::RFC822;
|
68 |
our %OPTION = %Message::Header::Default::OPTION;
|
69 |
$OPTION{namespace_uri} = 'urn:x-suika-fam-cx:msgpm:header:mail-rfc822';
|
70 |
$OPTION{namespace_phname} = 'rfc822';
|
71 |
$OPTION{namespace_phname_goodcase} = 'RFC822';
|
72 |
|
73 |
$OPTION{case_sensible} = 0;
|
74 |
|
75 |
$OPTION{goodcase} = {
|
76 |
fax => 'FAX',
|
77 |
'pics-label' => 'PICS-Label',
|
78 |
'list-url' => 'List-URL',
|
79 |
'list-id' => 'List-ID',
|
80 |
'message-id' => 'Message-ID',
|
81 |
'mime-version' => 'MIME-Version',
|
82 |
'nic' => 'NIC',
|
83 |
'nntp-posting-date' => 'NNTP-Posting-Date',
|
84 |
'nntp-posting-host' => 'NNTP-Posting-Host',
|
85 |
url => 'URL',
|
86 |
'x-dearfriend' => 'X-DearFriend',
|
87 |
'x-jsmail-priority' => 'X-JsMail-Priority',
|
88 |
'x-mime-autoconverted' => 'X-MIME-Autoconverted',
|
89 |
'x-mimeole' => 'X-MimeOLE',
|
90 |
'x-msmail-priority' => 'X-MSMail-Priority',
|
91 |
'x-nntp-posting-date' => 'X-NNTP-Posting-Date',
|
92 |
'x-nntp-posting-host' => 'X-NNTP-Posting-Host',
|
93 |
'x-uidl' => 'X-UIDL',
|
94 |
'x-uri' => 'X-URI',
|
95 |
'x-url' => 'X-URL',
|
96 |
};
|
97 |
$OPTION{to_be_goodcase} = \&Message::Header::Default::_goodcase;
|
98 |
|
99 |
$OPTION{value_type} = {
|
100 |
':default' => ['Message::Field::Unstructured'],
|
101 |
'date' => ['Message::Field::Date'],
|
102 |
};
|
103 |
|
104 |
$Message::Header::NS_phname2uri{$OPTION{namespace_phname}} = $OPTION{namespace_uri};
|
105 |
$Message::Header::NS_uri2phpackage{$OPTION{namespace_uri}} = __PACKAGE__;
|
106 |
|
107 |
package Message::Header::Resent;
|
108 |
our %OPTION = %Message::Header::RFC822::OPTION;
|
109 |
$OPTION{namespace_uri} = 'urn:x-suika-fam-cx:msgpm:header:mail-rfc822:resent';
|
110 |
$OPTION{namespace_phname} = 'resent';
|
111 |
$OPTION{namespace_phname_goodcase} = 'Resent';
|
112 |
$OPTION{namespace_phname_regex} = 'resent';
|
113 |
|
114 |
$Message::Header::NS_phname2uri{$OPTION{namespace_phname}} = $OPTION{namespace_uri};
|
115 |
$Message::Header::NS_uri2phpackage{$OPTION{namespace_uri}} = __PACKAGE__;
|
116 |
|
117 |
package Message::Header::Content;
|
118 |
our %OPTION = %Message::Header::RFC822::OPTION;
|
119 |
$OPTION{namespace_uri} = 'urn:x-suika-fam-cx:msgpm:header:mail-mime-entity';
|
120 |
$OPTION{namespace_phname} = 'content';
|
121 |
$OPTION{namespace_phname_goodcase} = 'Content';
|
122 |
$OPTION{namespace_phname_regex} = 'content';
|
123 |
|
124 |
$OPTION{goodcase} = {
|
125 |
'id' => 'ID',
|
126 |
'md5' => 'MD5',
|
127 |
'sgml-entity' => 'SGML-Entity',
|
128 |
};
|
129 |
|
130 |
$OPTION{value_type} = {
|
131 |
':default' => ['Message::Field::Unstructured'],
|
132 |
alias => ['Message::Field::URI'],
|
133 |
base => ['Message::Field::URI'],
|
134 |
disposition => ['Message::Field::ValueParams'],
|
135 |
features => ['Message::Field::Structured'],
|
136 |
id => ['Message::Field::MsgID'],
|
137 |
length => ['Message::Field::Numval'],
|
138 |
location => ['Message::Field::URI'],
|
139 |
md5 => ['Message::Field::Structured'],
|
140 |
'transfer-encoding' => ['Message::Field::ValueParams'],
|
141 |
type => ['Message::Field::ContentType'],
|
142 |
};
|
143 |
|
144 |
$Message::Header::NS_phname2uri{$OPTION{namespace_phname}} = $OPTION{namespace_uri};
|
145 |
$Message::Header::NS_uri2phpackage{$OPTION{namespace_uri}} = __PACKAGE__;
|
146 |
|
147 |
package Message::Header::XCGI;
|
148 |
our %OPTION = %Message::Header::Default::OPTION;
|
149 |
$OPTION{namespace_uri} = 'urn:x-suika-fam-cx:msgpm:header:http:cgi:x';
|
150 |
$OPTION{namespace_phname} = 'x-cgi';
|
151 |
$OPTION{namespace_phname_goodcase} = 'X-CGI';
|
152 |
|
153 |
$OPTION{case_sensible} = 0;
|
154 |
$OPTION{to_be_goodcase} = \&Message::Header::Default::_goodcase;
|
155 |
|
156 |
$Message::Header::NS_phname2uri{$OPTION{namespace_phname}} = $OPTION{namespace_uri};
|
157 |
$Message::Header::NS_uri2phpackage{$OPTION{namespace_uri}} = __PACKAGE__;
|
158 |
|
159 |
=head1 LICENSE
|
160 |
|
161 |
Copyright 2002 wakaba E<lt>w@suika.fam.cxE<gt>.
|
162 |
|
163 |
This program is free software; you can redistribute it and/or modify
|
164 |
it under the terms of the GNU General Public License as published by
|
165 |
the Free Software Foundation; either version 2 of the License, or
|
166 |
(at your option) any later version.
|
167 |
|
168 |
This program is distributed in the hope that it will be useful,
|
169 |
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
170 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
171 |
GNU General Public License for more details.
|
172 |
|
173 |
You should have received a copy of the GNU General Public License
|
174 |
along with this program; see the file COPYING. If not, write to
|
175 |
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
176 |
Boston, MA 02111-1307, USA.
|
177 |
|
178 |
=head1 CHANGE
|
179 |
|
180 |
See F<ChangeLog>.
|
181 |
$Date: 2002/03/21 04:33:44 $
|
182 |
|
183 |
=cut
|
184 |
|
185 |
1;
|