Adam Lesperance > Project-Euler-0.20 > Project::Euler::Lib::Types

Download:
Project-Euler-0.20.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  0
View/Report Bugs
Module Version: 0.20   Source  

NAME ^

Project::Euler::Lib::Types - Type definitions for Project::Euler

VERSION ^

version 0.20

SYNOPSIS ^

    use Project::Euler::Lib::Types  qw/ ProblemLink  PosInt /;

DESCRIPTION ^

(Most) all of the types that our modules use are defined here so that they can be reused and tested. This also helps prevent all of the namespace pollution from the global declarations.

SUBTYPES ^

Create the subtypes that we will use to validate the arguments defined by the extending classes.

ProblemLink

A URL pointing to a problem definition on http://projecteuler.net.

Definition

    as Str,
    message { sprintf(q{'%s' is not a valid link}, $_ // '#UNDEFINED#') },
    where { $_ =~ m{
                \A
                \Qhttp://projecteuler.net/index.php?section=problems&id=\E
                \d+
                \z
            }xms
    };

ProblemName

In an effort to limit text runoff, the problem name is limited to 80 characters. Similarly, the length must also be greater than 10 to ensure it is something useful. Also, only characters, numbers, spaces, and some punctuation (!@#$%^&*(){}[]<>,.\\/?;:'") are allowed

Definition

    as Str,
    message { sprintf(q{'%s' must be a string between 10 and 80 characters long}, $_ // '#UNDEFINED#') },
    where {
        length $_ > 10  and  length $_ < 80;
    };

PosInt

An integer greater than 0.

Definition

    as Int,
    message { sprintf(q{'%s' is not greater than 0}, $_ // '#UNDEFINED#') },
    where {
        $_ > 0
    }

PosIntArray

An array of PosInts.

NegInt

An integer less than 0.

Definition

    as Int,
    message { sprintf(q{'%s' is not less than 0}, $_ // '#UNDEFINED#') },
    where {
        $_ < 0
    }

NegIntArray

An array of NegInts.

MyDateTime

A DateTime:: object coerced using DateTime::Format::DateParse

Definition

    class_type MyDateTime, { class => 'DateTime' };
    coerce MyDateTime,
        from Str,
        via {
            DateTime::Format::DateParse->parse_datetime( $_ );
        };

ACKNOWLEDGEMENTS ^

AUTHOR ^

Adam Lesperance <lespea@gmail.com>

COPYRIGHT AND LICENSE ^

This software is copyright (c) 2010 by Adam Lesperance.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

syntax highlighting: