JSON-SchemaValidator

 view release on metacpan or  search on metacpan

lib/JSON/SchemaValidator.pm  view on Meta::CPAN

            my ($username, $hostname) = split /@/, $email;

            return 0 if length $hostname > 255;
            return 0 if grep { length > 63 } split /\./, $hostname;

            return 1;
        },
        ipv4 => sub {
            my ($ipv4) = @_;

            my @parts = split m/\./, $ipv4;

            return unless @parts > 0 && @parts < 5;

            for my $part (@parts) {
                return unless $part =~ m/^[0-9]+$/ && $part >= 0 && $part < 256;
            }

            return unless $parts[-1] > 0;

            return 1;
        },
        ipv6 => sub {
            my ($ipv6) = @_;

            my @parts = split m/\:/, $ipv6;

            return unless @parts > 0 && @parts < 9;

            for my $part (@parts) {
                next if $part eq '';

                return unless $part =~ m/^[0-9a-f]{1,4}$/i;
            }

            return 1;

lib/JSON/SchemaValidator/Pointer.pm  view on Meta::CPAN

sub pointer {
    my ($json, $pointer) = @_;

    return unless $pointer =~ m/^#/;

    $pointer = uri_unescape($pointer);

    $pointer =~ s{^#/?}{};

    my $top = $json;
    foreach my $part (split m{/}, $pointer) {
        $part =~ s{\~1}{\/}g;
        $part =~ s{\~0}{\~}g;

        if (ref $top eq 'HASH') {
            $top = $top->{$part};
        }
        elsif (ref $top eq 'ARRAY') {
            $top = $top->[$part];
        }
    }



( run in 2.002 seconds using v1.01-cache-2.11-cpan-71847e10f99 )