Changeset 3944 for lang/perl/Senna

Show
Ignore:
Timestamp:
01/02/08 00:32:22 (6 years ago)
Author:
daisuke
Message:

lang/perl/Senna; Update calling syntax for ->create(), update tests.

Location:
lang/perl/Senna/trunk
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/Senna/trunk/lib/Senna/Index.pm

    r3941 r3944  
    1414{ 
    1515    my $class = shift; 
    16     my %args  = @_; 
    1716 
    18     $args{key_size} ||= 0; 
    19     $args{flags}    ||= 0; 
    20     my @xs_args = @args{ qw(path key_size flags initial_n_segments encoding) }; 
    21     pop @xs_args while @xs_args && ! defined $xs_args[-1]; 
    22     $class->XS_create(@xs_args); 
     17    my @fields = qw(path key_size flags initial_n_segments encoding); 
     18    my $count = scalar @_; 
     19    if ($count == 1) { 
     20        if (ref $_[0] eq 'HASH') { 
     21            @_ = map { $_[0]->{$_} } @fields; 
     22        } 
     23    } elsif ($count != 5) { 
     24        my %args  = @_; 
     25        @_ = @args{ @fields }; 
     26    } 
     27 
     28    pop @_ while @_ && ! defined $_[-1]; 
     29    $class->XS_create(@_); 
    2330} 
    2431 
     
    96103=head2 create 
    97104 
     105Creates a new index. 
     106 
     107  my $index = Senna::Index->create( 
     108    $path, $key_size, $flags, $initial_n_segments, $encoding 
     109  ); 
     110  my $index = Senna::Index->create({ 
     111    path               => $path, 
     112    key_size           => $key_size,  
     113    flags              => $flags, 
     114    initial_n_segments => $initial_n_segments, 
     115    encoding           => $encoding 
     116  }); 
     117 
     118For backwards compatibility, if given anything other than 1 or 5 arguments, 
     119create() assumes that you've been given a key value pair like so: 
     120 
     121  my $index = Senna::Index->create( 
     122    path               => $path, 
     123    key_size           => $key_size,  
     124    flags              => $flags, 
     125    initial_n_segments => $initial_n_segments, 
     126    encoding           => $encoding 
     127  ); 
     128 
     129However, note that this form is DEPRECATED. Use the HASHREF form instead 
     130 
    98131=head2 open 
    99132 
  • lang/perl/Senna/trunk/t/index/01_create.t

    r3767 r3944  
    1010{ 
    1111    my $temp  = File::Temp->new( UNLINK => 1 ); 
    12     my $index = Senna::Index->create( path => $temp->filename ); 
     12    my $index = Senna::Index->create({ path => $temp->filename }); 
    1313    ok( $index ); 
    1414    isa_ok( $index, "Senna::Index" ); 
  • lang/perl/Senna/trunk/t/index/02_open.t

    r3767 r3944  
    11use strict; 
    2 use Test::More (tests => 7); 
     2use Test::More (tests => 10); 
    33use File::Temp; 
    44 
     
    66{ 
    77    use_ok("Senna"); 
     8    use_ok("Senna::Constants", qw(SEN_ENC_DEFAULT)); 
    89} 
    910 
    1011{ 
    1112    my $temp  = File::Temp->new( UNLINK => 1 ); 
    12     my $index = Senna::Index->create( path => $temp->filename ); 
     13    my $index = Senna::Index->create({ path => $temp->filename }); 
    1314    ok( $index ); 
    1415    isa_ok( $index, "Senna::Index" ); 
    1516    is( $index->path, $temp->filename ); 
     17 
     18    my $info = $index->info; 
     19    ok($info); 
     20    is($info->flags, 0); 
     21 
    1622    ok( $index->close); 
    1723 
  • lang/perl/Senna/trunk/t/index/03_simple.t

    r3937 r3944  
    2020 
    2121{ 
    22     my $index = Senna::Index->create( 
     22    my $index = Senna::Index->create({ 
    2323        path               => $temp->filename, 
    2424        key_size           => 0, 
    2525        initial_n_segments => 256, 
    2626        flags              => SEN_INDEX_MORPH_ANALYSE | SEN_INDEX_NORMALIZE 
    27     ); 
     27    }); 
    2828 
    2929    open(my $fh, '<', $file) or