Data::FormValidator::Constraints::Business::DK::CPR - constraint for Danish CPR


Business-DK-CPR documentation Contained in the Business-DK-CPR distribution.

Index


Code Index:

NAME

Top

Data::FormValidator::Constraints::Business::DK::CPR - constraint for Danish CPR

VERSION

Top

The documentation describes version 0.01 of Data::FormValidator::Constraints::Business::DK::CPR

SYNOPSIS

Top

  use Data::FormValidator;
  use Data::FormValidator::Constraints::Business::DK::CPR qw(valid_cpr);

    my $dfv_profile = {
        required => [qw(cpr)],
        constraint_methods => {
            cpr => valid_cpr(),
        }
    };

    my $dfv_profile = {
        required => [qw(cpr)],
        constraint_methods => {
            cpr => valid_cpr(),
        },
        untaint_all_constraints => 1,
    };




DESCRIPTION

Top

This module exposes a set of subroutines which are compatible with Data::FormValidator. The module implements contraints as specified in Data::FormValidator::Constraints.

SUBROUTINES AND METHODS

Top

valid_cpr

Checks whether a CPR is valid (see: SYNOPSIS) and Business::DK::CPR

match_valid_cpr

Untaints a given CPR (see: SYNOPSIS and BUGS AND LIMITATIONS)

EXPORTS

Top

Data::FormValidator::Constraints::Business::DK::CPR exports on request:

valid_dk_cpr
match_valid_cpr

DIAGNOSTICS

Top

* Please refer to Data::FormValidator for documentation on this

CONFIGURATION AND ENVIRONMENT

Top

The module requires no special configuration or environment to run.

DEPENDENCIES

Top

* Data::FormValidator
* Business::DK::CPR

INCOMPATIBILITIES

Top

The module has no known incompatibilities.

BUGS AND LIMITATIONS

Top

The tests seem to reflect that untainting takes place, but the match_valid_cpr is not called at all, so how this untaiting is expected integrated into Data::FormValidator is still not settled (SEE: TODO)

TEST AND QUALITY

Top

Coverage of the test suite is at 57.6%

TODO

Top

* Get the untaint functionality tested thoroughly, that would bring the coverage to 100%, the match_valid_cpr does not seem to be run.
* Comply with Data::FormValidator, especially for untainting

SEE ALSO

Top

* Data::FormValidator
* Data::FormValidator::Constraints
* Data::FormValidator::Result
* Business::DK::CPR

BUG REPORTING

Top

Please report issues via CPAN RT:

  http://rt.cpan.org/NoAuth/Bugs.html?Dist=Business-DK-CPR

or by sending mail to

  bug-Business-DK-CPR@rt.cpan.org

AUTHOR

Top

Jonas B. Nielsen, (jonasbn) - <jonasbn@cpan.org>

COPYRIGHT

Top

LICENSE

Top

Business-DK-CPR and related is released under the artistic license

The distribution is licensed under the Artistic License, as specified by the Artistic file in the standard perl distribution (http://www.perl.com/language/misc/Artistic.html).


Business-DK-CPR documentation Contained in the Business-DK-CPR distribution.

package Data::FormValidator::Constraints::Business::DK::CPR;

# $Id: CPR.pm 5577 2008-11-15 21:59:40Z jonasbn $

use strict;
use warnings;
use vars qw(@ISA $VERSION @EXPORT_OK);
use Business::DK::CPR qw(validate);
use Scalar::Util qw(blessed);
use Carp qw(croak);

use base 'Exporter';

@EXPORT_OK = qw(valid_cpr match_valid_cpr);

use constant VALID   => 1;
use constant INVALID => undef;

$VERSION = '0.01';

sub valid_cpr {
    return sub {
        my $dfv = shift;

        if ( !blessed $dfv || !$dfv->isa('Data::FormValidator::Results') ) {
            croak('Must be called using \'constraint_methods\'!');
        }

        my $cpr = $dfv->get_current_constraint_value;

        if ( ref $dfv ) {
            $dfv->name_this('valid_cpr');
        }

        if ( validate($cpr) ) {
            return VALID;
        } else {
            return INVALID;
        }
        }
}

sub match_valid_cpr {
    my $dfv = shift;

    # if $dfv is a ref then we are called as 'constraint_method'
    # else as 'constraint'

    my $cpr = ref $dfv ? $dfv->get_current_constraint_value : $dfv;

    my ($untainted_cpr) = $cpr =~ m/\A(\d{10})\Z/msx;

    return $dfv->untainted_constraint_value($untainted_cpr);
}

1;

__END__