Pangloss::Language::Error - errors specific to Languages.


Pangloss documentation Contained in the Pangloss distribution.

Index


Code Index:

NAME

Top

Pangloss::Language::Error - errors specific to Languages.

SYNOPSIS

Top

  use Pangloss::Language::Error;
  use Pangloss::StoredObject::Error;

  throw Pangloss::Language::Error(flag => eExists, language => $language);
  throw Pangloss::Language::Error(flag => eNonExistent, iso_code => $iso_code);
  throw Pangloss::Language::Error(flag => eInvalid, language => $language,
                                  invalid => {eIsoCodeRequired => 1});

  # with caught errors:
  print $e->language->iso_code;

DESCRIPTION

Top

Language Errors class. Inherits interface from Pangloss::StoredObject::Error. May contain a language object associated with the error.

EXPORTED FLAGS

Top

Validation errors: eIsoCodeRequired eDirectionRequired

METHODS

Top

$e->language

set/get Pangloss::Language for this error.

$bool = $e->isIsoCodeRequired, $e->isDirectionRequired

Test if this error's flag is equal to the named flag.

AUTHOR

Top

Steve Purkis <spurkis@quiup.com>

SEE ALSO

Top

Pangloss::Error, Pangloss::Language, Pangloss::Languages


Pangloss documentation Contained in the Pangloss distribution.
package Pangloss::Language::Error;

use strict;
use warnings::register;

use Pangloss::Language;

use base      qw( Exporter Pangloss::StoredObject::Error );
use accessors qw( language );

our $VERSION  = ((require Pangloss::Version), $Pangloss::VERSION)[1];
our $REVISION = (split(/ /, ' $Revision: 1.10 $ '))[2];
our @EXPORT   = qw( eIsoCodeRequired eDirectionRequired );

use constant eIsoCodeRequired   => 'language_iso_code_required';
use constant eDirectionRequired => 'language_direction_required';

sub new {
    my $class = shift;
    my %args  = @_;
    local $Error::Depth = $Error::Depth + 1;
    if (my $iso_code = delete $args{iso_code}) {
	$args{language} = new Pangloss::Language()->iso_code($iso_code);
    }
    $class->SUPER::new(map { /^language$/ ? '-language' : $_; } %args);
}

sub isIsoCodeRequired {
    return shift->is(eIsoCodeRequired);
}

sub isDirectionRequired {
    return shift->is(eDirectionRequired);
}

sub stringify {
    my $self = shift;
    my $str  = $self->SUPER::stringify . ':language';
    $str    .= '=' . $self->language->key if $self->language;
    return $str;
}

1;

__END__

#------------------------------------------------------------------------------