| Pangloss documentation | Contained in the Pangloss distribution. |
Pangloss::Search::Results - collection of terms resulting from a search
use Pangloss::Search::Results; my $results = new Pangloss::Search::Results; $results->add( @terms ); my ($concept) = $results->concepts; my $results2 = $results->by_concept( $concept ); my ($lang) = $results->languages; my $results3 = $results->by_language( $lang ); my @terms = $results->list;
A collection of Panglos::Terms indexed by concept and language. Inherits from Pangloss::Terms.
TODO: document API methods.
Ordering by category, translator, and proofreader should be fairly easy to add in the future.
Steve Purkis <spurkis@quiup.com>
Pangloss::Search, Pangloss::Search::Results::Pager
Pangloss::Terms, Pangloss::Users, Pangloss::Concepts, Pangloss::Languages, Pangloss::Categories,
| Pangloss documentation | Contained in the Pangloss distribution. |
package Pangloss::Search::Results; use strict; use warnings::register; use Pangloss::Users; use Pangloss::Concepts; use Pangloss::Languages; use Pangloss::Categories; use UNIVERSAL qw( isa ); use base qw( Pangloss::Terms ); use accessors qw( parent concepts languages categories translators proofreaders ); our $VERSION = ((require Pangloss::Version), $Pangloss::VERSION)[1]; our $REVISION = (split(/ /, ' $Revision: 1.7 $ '))[2]; sub init { my $self = shift; $self->categories( Pangloss::Categories->new ) ->languages( Pangloss::Languages->new ) ->proofreaders( Pangloss::Users->new ) ->translators( Pangloss::Users->new ) ->concepts( Pangloss::Concepts->new ) ->SUPER::init(@_); } sub add { my $self = shift; foreach my $term (@_) { next unless (isa( $term, 'Pangloss::Term' )); my $key = $term->key; next if ($self->exists( $key )); # jump through hoops because we store keys instead of references: my $concept = $self->parent->concepts->get( $term->concept ); my $lang = $self->parent->languages->get( $term->language ); #my $xlator = $self->parent->users->get( $term->creator ); #my $proofer = $self->parent->users->get( $term->status->creator ); #my $cat = $self->parent->categories->get( $concept->category ); $self->concepts->add( $concept ) unless $self->concepts->exists( $concept ); $self->languages->add( $lang ) unless $self->languages->exists( $lang ); #$self->translators->add( $xlator ) unless $self->translators->exists( $xlator ); #$self->proofreaders->add( $proofer ) unless $self->proofreaders->exists( $proofer ); #$self->categories->add( $category ) unless $self->categories->exists( $category ); #$self->{-concepts}->{$term->concept}++; #$self->{-languages}->{$term->language}++; $self->collection->{$key} = $term; } return $self; } sub by_concept { my $self = shift; my $concept = Pangloss::Terms->get_values_key(shift); my $results = $self->class->new->parent($self); foreach my $key ($self->keys) { $results->add( $self->get( $key ) ) if (Pangloss::Term->get_concept_from_key( $key ) eq $concept); } return $results; } sub by_language { my $self = shift; my $language = Pangloss::Languages->get_values_key(shift); my $results = $self->class->new->parent($self); foreach my $key ($self->keys) { $results->add( $self->get( $key ) ) if (Pangloss::Term->get_language_from_key( $key ) eq $language); } return $results; } 1; __END__ #------------------------------------------------------------------------------