--- trunk/Estraier.pm 2006/08/06 12:19:19 164 +++ trunk/Estraier.pm 2006/08/06 12:48:02 166 @@ -4,7 +4,7 @@ use strict; use warnings; -our $VERSION = '0.07_2'; +our $VERSION = '0.07_3'; =head1 NAME @@ -182,9 +182,10 @@ if ($line =~ m/^%VECTOR\t(.+)$/) { my @fields = split(/\t/, $1); - for my $i ( 0 .. ($#fields - 1) ) { - $self->{kwords}->{ $fields[ $i ] } = $fields[ $i + 1 ]; - $i++; + if ($#fields % 2 == 1) { + $self->{kwords} = { @fields }; + } else { + warn "can't decode $line\n"; } next; } elsif ($line =~ m/^%/) { @@ -268,6 +269,27 @@ push @{ $self->{htexts} }, $self->_s($text); } +=head2 add_vectors + +Add a vectors + + $doc->add_vector( + 'vector_name' => 42, + 'another' => 12345, + ); + +=cut + +sub add_vectors { + my $self = shift; + return unless (@_); + + # this is ugly, but works + die "add_vector needs HASH as argument" unless ($#_ % 2 == 1); + + $self->{kwords} = {@_}; +} + =head2 id @@ -362,7 +384,7 @@ } if ($self->{kwords}) { - $draft .= '%%VECTOR'; + $draft .= '%VECTOR'; while (my ($key, $value) = each %{ $self->{kwords} }) { $draft .= "\t$key\t$value"; }