/[suikacvs]/test/cvs
Suika

Diff of /test/cvs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4 by wakaba, Sat Mar 16 08:54:39 2002 UTC revision 1.5 by wakaba, Wed Mar 20 09:56:52 2002 UTC
# Line 52  when C<stringify>.  (Default = 0) Line 52  when C<stringify>.  (Default = 0)
52  );  );
53  my @field_type_Structured = qw(cancel-lock content-language  my @field_type_Structured = qw(cancel-lock content-language
54    content-transfer-encoding    content-transfer-encoding
55    encrypted importance mime-version precedence user-agent x-cite    encrypted followup-to importance mime-version newsgroups
56      path precedence user-agent x-cite
57    x-face x-mail-count    x-face x-mail-count
58    x-msmail-priority x-priority x-uidl xref);    x-msmail-priority x-priority x-uidl xref);
59  for (@field_type_Structured)  for (@field_type_Structured)
# Line 75  for (@field_type_MsgID) Line 76  for (@field_type_MsgID)
76    {$DEFAULT{field_type}->{$_} = 'Message::Field::Structured'}    {$DEFAULT{field_type}->{$_} = 'Message::Field::Structured'}
77  my @field_type_Received = qw(received x-received);  my @field_type_Received = qw(received x-received);
78  for (@field_type_Received)  for (@field_type_Received)
79    {$DEFAULT{field_type}->{$_} = 'Message::Field::Structured'}    {$DEFAULT{field_type}->{$_} = 'Message::Field::Received'}
80  my @field_type_Param = qw(content-disposition content-type  my @field_type_Param = qw(content-disposition content-type
81    x-brother x-daughter x-face-type x-respect x-moe    x-brother x-daughter x-face-type x-respect x-moe
82    x-syster x-wife);    x-syster x-wife);
# Line 89  for (@field_type_URI) Line 90  for (@field_type_URI)
90  my @field_type_ListID = qw(list-id);  my @field_type_ListID = qw(list-id);
91  for (@field_type_ListID)  for (@field_type_ListID)
92    {$DEFAULT{field_type}->{$_} = 'Message::Field::Structured'}    {$DEFAULT{field_type}->{$_} = 'Message::Field::Structured'}
93    my @field_type_Subject = qw(content-description subject title);
94    for (@field_type_Subject)
95      {$DEFAULT{field_type}->{$_} = 'Message::Field::Subject'}
96    
97  =head2 Message::Header->new ([%option])  =head2 Message::Header->new ([%option])
98    
# Line 146  sub field ($$) { Line 150  sub field ($$) {
150    for my $field (@{$self->{field}}) {    for my $field (@{$self->{field}}) {
151      if ($field->{name} eq $name) {      if ($field->{name} eq $name) {
152        unless (wantarray) {        unless (wantarray) {
153          return $self->_field_body ($field->{body}, $name);          $field->{body} = $self->_field_body ($field->{body}, $name);
154            return $field->{body};
155        } else {        } else {
156          push @ret, $self->_field_body ($field->{body}, $name);          $field->{body} = $self->_field_body ($field->{body}, $name);
157            push @ret, $field->{body};
158        }        }
159      }      }
160    }    }
# Line 172  sub field_name ($$) { Line 178  sub field_name ($$) {
178  sub field_body ($$) {  sub field_body ($$) {
179    my $self = shift;    my $self = shift;
180    my $i = shift;    my $i = shift;
181    $self->_field_body ($self->{field}->[$i]->{body}, $self->{field}->[$i]->{name});    $self->{field}->[$i]->{body}
182       = $self->_field_body ($self->{field}->[$i]->{body}, $self->{field}->[$i]->{name});
183      $self->{field}->[$i]->{body};
184  }  }
185    
186  sub _field_body ($$$) {  sub _field_body ($$$) {
187    my $self = shift;    my $self = shift;
188    my ($body, $name) = @_;    my ($body, $name) = @_;
189    if (ref $body) {    unless (ref $body) {
     return $body;  
   } else {  
190      my $type = $self->{option}->{field_type}->{$name}      my $type = $self->{option}->{field_type}->{$name}
191              || $self->{option}->{field_type}->{_DEFAULT};              || $self->{option}->{field_type}->{_DEFAULT};
192      eval "use $type";      eval "require $type";
193      return $type->parse ($body);      unless ($body) {
194          $body = $type->new (field_name => $name);
195        } else {
196          $body = $type->parse ($body, field_name => $name);
197        }
198    }    }
199      $body;
200  }  }
201    
202  =head2 $self->field_name_list ()  =head2 $self->field_name_list ()
# Line 214  sub add ($$$) { Line 225  sub add ($$$) {
225    my $self = shift;    my $self = shift;
226    my ($name, $body) = (lc shift, shift);    my ($name, $body) = (lc shift, shift);
227    return 0 if $name =~ /$REG{UNSAFE_field_name}/;    return 0 if $name =~ /$REG{UNSAFE_field_name}/;
228      $body = $self->_field_body ($body, $name);
229    push @{$self->{field}}, {name => $name, body => $body};    push @{$self->{field}}, {name => $name, body => $body};
230    $self;    $body;
231  }  }
232    
233  =head2 $self->relace ($field_name, $field_body)  =head2 $self->relace ($field_name, $field_body)
# Line 308  sub stringify ($;%) { Line 320  sub stringify ($;%) {
320      my $name = $field->{name};      my $name = $field->{name};
321      next unless $field->{name};      next unless $field->{name};
322      next if !$OPT{mail_from} && $name eq 'mail-from';      next if !$OPT{mail_from} && $name eq 'mail-from';
323        my $fbody = scalar $field->{body};
324        next unless $fbody;
325      $name =~ s/((?:^|-)[a-z])/uc($1)/ge if $OPT{capitalize};      $name =~ s/((?:^|-)[a-z])/uc($1)/ge if $OPT{capitalize};
326      push @ret, $name.': '.$self->fold ($field->{body});      push @ret, $name.': '.$self->fold ($fbody);
327    }    }
328    my $ret = join ("\n", @ret);    my $ret = join ("\n", @ret);
329    $ret? $ret."\n": "";    $ret? $ret."\n": "";

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24