Provided by: libregexp-pattern-perl_0.1.4-1_all bug

NAME

       Regexp::Pattern - Collection of regexp patterns

SPECIFICATION VERSION

       0.1.0

VERSION

       This document describes version 0.1.4 of Regexp::Pattern (from Perl distribution Regexp-
       Pattern), released on 2016-12-31.

SYNOPSIS

        use Regexp::Pattern; # exports re()

        my $re = re('YouTube::video_id');
        say "ID does not look like a YouTube video ID" unless $id =~ /\A$re\z/;

        # a dynamic pattern (generated on-demand) with generator arguments
        my $re2 = re('Example::re3', {variant=>"B"});

DESCRIPTION

       Regexp::Pattern is a convention for organizing reusable regexp patterns in modules.

   Structure of an example Regexp::Pattern::* module
        package Regexp::Pattern::Example;

        our %RE = (
            # the minimum spec
            re1 => { pat => qr/\d{3}-\d{4}/ },

            # more complete spec
            re2 => {
                summary => 'This is regexp for blah',
                description => <<'_',

        A longer description.

        _
                pat => qr/.../,
            },

            # dynamic (regexp generator)
            re3 => {
                summary => 'This is a regexp for blah blah',
                description => <<'_',

        ...

        _
                gen => sub {
                    my %args = @_;
                    my $variant = $args{variant} || 'A';
                    if ($variant eq 'A') {
                        return qr/\d{3}-\d{3}/;
                    } else { # B
                        return qr/\d{3}-\d{2}-\d{5}/;
                    }
                },
                gen_args => {
                    variant => {
                        summary => 'Choose variant',
                        schema => ['str*', in=>['A','B']],
                        default => 'A',
                        req => 1,
                    },
                },
            },
        );

       A Regexp::Pattern::* module must declare a package global hash variable named %RE. Hash
       keys are pattern names, hash values are defhashes (see DefHash).  At the minimum, it
       should be:

        { pat => qr/.../ },

       Regexp pattern should be written as "qr//" literal, or (less desirable) as a string
       literal. Regexp should not be anchored ("qr/^...$/") unless necessary.  Regexp should not
       contain capture groups unless necessary.

   Using a Regexp::Pattern::* module
       A "Regexp::Pattern::*" module can be used manually by itself, as it contains simply data
       that can be grabbed using a normal means, e.g.:

        use Regexp::Pattern::Example;

        say "Input does not match blah"
            unless $input =~ /\A$Regexp::Pattern::Example::RE{re1}{pat}\z/;

       "Regexp::Pattern" (this module) also provides "re()" function to help retrieve the regexp
       pattern.

FUNCTIONS

   re
       Exported by default. Get a regexp pattern by name from a "Regexp::Pattern::*" module.

       Syntax:

        re($name[, \%args ]) => $re

       $name is MODULE_NAME::PATTERN_NAME where MODULE_NAME is name of a "Regexp::Pattern::*"
       module without the "Regexp::Pattern::" prefix and PATTERN_NAME is a key to the %RE package
       global hash in the module. A dynamic pattern can accept arguments for its generator, and
       you can pass it as hashref in the second argument of "re()".

       Die when pattern by name $name cannot be found (either the module cannot be loaded or the
       pattern with that name is not found in the module).

HOMEPAGE

       Please visit the project's homepage at <https://metacpan.org/release/Regexp-Pattern>.

SOURCE

       Source repository is at <https://github.com/perlancar/perl-Regexp-Pattern>.

BUGS

       Please report any bugs or feature requests on the bugtracker website
       <https://rt.cpan.org/Public/Dist/Display.html?Name=Regexp-Pattern>

       When submitting a bug or request, please include a test-file or a patch to an existing
       test-file that illustrates the bug or desired feature.

SEE ALSO

       Regexp::Common. Regexp::Pattern is an alternative to Regexp::Common.  Regexp::Pattern
       offers simplicity and lower startup overhead. Instead of a magic hash, you retrieve
       available regexes from normal data structure or via the provided "re()" function.

       Regexp::Common::RegexpPattern, a bridge module to use patterns in "Regexp::Pattern::*"
       modules via Regexp::Common.

       Regexp::Pattern::RegexpCommon, a bridge module to use patterns in "Regexp::Common::*"
       modules via Regexp::Pattern.

       App::RegexpPatternUtils

AUTHOR

       perlancar <perlancar@cpan.org>

COPYRIGHT AND LICENSE

       This software is copyright (c) 2016 by perlancar@cpan.org.

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