On 09/24/2007 11:02 AM, Peter Karman wrote:
>
> On 09/23/2007 11:28 AM, Marcus Ramberg wrote:
>> Catalyst::Model::Search is a quite old module which have been living
>> in Catalyst trunk for quite a while. It's being used by MojoMojo, and
>> it just happened to work, so I pushed it to CPAN so that MojoMojo
>> could depend on it. If anyone want to clean it up or document the
>> Search base class, patches are more than welcome.
>>
>
> See attached.
>
oops. Forgot to include the 'required' boilerplate.
new version attached.
--
Peter Karman . [EMAIL PROTECTED] . http://peknet.com/
--- Search.pm.orig 2007-09-24 10:33:51.534326000 -0500
+++ Search.pm 2007-09-24 11:16:11.646096000 -0500
@@ -4,69 +4,157 @@
use NEXT;
use base qw/Catalyst::Base/;
-our $VERSION = '0.01';
+our $VERSION = '0.02';
-sub new {
+sub new {
my ( $self, $c ) = @_;
-
- return $self->NEXT::new( $c );
+ $self->init($c);
+ return $self->NEXT::new($c);
}
sub init {
my $self = shift;
-
+ my $c = shift;
+
Catalyst::Exception->throw(
- message => ( ref $self || $self ) . ' does not implement init()'
- );
+ message => ( ref $self || $self ) . ' does not implement init()' );
}
sub add {
my $self = shift;
-
+ my $data = shift;
+
Catalyst::Exception->throw(
- message => ( ref $self || $self ) . ' does not implement add()'
- );
+ message => ( ref $self || $self ) . ' does not implement add()' );
}
sub update {
my $self = shift;
-
+ my $data = shift;
+
Catalyst::Exception->throw(
- message => ( ref $self || $self ) . ' does not implement update()'
- );
+ message => ( ref $self || $self ) . ' does not implement update()' );
}
sub remove {
my $self = shift;
-
+ my $data = shift;
+
Catalyst::Exception->throw(
- message => ( ref $self || $self ) . ' does not implement remove()'
- );
+ message => ( ref $self || $self ) . ' does not implement remove()' );
}
sub query {
- my $self = shift;
-
+ my $self = shift;
+ my $query = shift;
+
Catalyst::Exception->throw(
- message => ( ref $self || $self ) . ' does not implement query()'
- );
+ message => ( ref $self || $self ) . ' does not implement query()' );
}
sub is_indexed {
my $self = shift;
-
- Catalyst::Exception->throw(
- message => ( ref $self || $self ) . ' does not implement is_indexed()'
- );
+ my $key = shift;
+
+ Catalyst::Exception->throw( message => ( ref $self || $self )
+ . ' does not implement is_indexed()' );
}
sub optimize {
my $self = shift;
-
- Catalyst::Exception->throw(
- message => ( ref $self || $self ) . ' does not implement optimize()'
- );
+
+ Catalyst::Exception->throw( message => ( ref $self || $self )
+ . ' does not implement optimize()' );
}
1;
__END__
+
+
+=head1 NAME
+
+Catalyst::Model::Search - base class for Catalyst search models
+
+=head1 SYNOPSIS
+
+ package Catalyst::Model::MySearchApp;
+ use base qw(Catalyst::Model::Search);
+
+ # must implement all the following methods
+ sub init {}
+ sub add {}
+ sub update {}
+ sub remove {}
+ sub query {}
+ sub is_indexed {}
+ sub optimize {}
+
+=head1 DESCRIPTION
+
+Catalyst::Model::Search is a base class for providing full-text search
+to a Catalyst application. The premise is that existing search projects
+can be integrated with Catalyst's Model framework using a common API, allowing
+you to swap in Xapian or KinoSearch or Plucene or Swish-e or
+I<YourSearchAppHere> without needing to change any Controller or View code.
+
+=head1 METHODS
+
+The following methods are implemented. Those methods
+that must be overridden in your subclass are marked as such.
+
+=head2 new
+
+The basic boilerplate new() required by Catalyst::Model subclasses.
+The init() method is called by new().
+
+=head2 init
+
+Setup your search indexes or any other initialization required.
+B<This method must be overridden.>
+
+=head2 add( I<data> )
+
+Add I<data> to an index.
+B<This method must be overridden.>
+
+=head2 update( I<data> )
+
+Update I<data> in an index.
+B<This method must be overridden.>
+
+=head2 remove( I<data> )
+
+Remove I<data> from an index.
+B<This method must be overridden.>
+
+=head2 query ( I<query> )
+
+Search an index for I<query>. In scalar context should return
+a Catalyst::Model::Search::Results object. In array context should
+return the value of a Results object's get_items() method.
+B<This method must be overridden.>
+
+=head2 is_indexed( I<key> )
+
+Test the index for the presence of a record identified by I<key>
+Returns true if the record is in the index.
+B<This method must be overridden.>
+
+=head2 optimize
+
+Perform optimizing magic on the index.
+B<This method must be overridden.>
+
+=head1 AUTHOR
+
+Andy Grundman, <[EMAIL PROTECTED]>
+Marcus Ramberg, <[EMAIL PROTECTED]>
+
+=head1 COPYRIGHT
+
+This program is free software, you can redistribute it and/or modify it under
+the same terms as Perl itself.
+
+=cut
+
+
_______________________________________________
List: [email protected]
Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/