# DateTime::Format::Builder::Parser::generic - perldoc - [phpMan]

## NAME
    [DateTime::Format::Builder::Parser::generic](https://www.chedong.com/phpMan.php/perldoc/DateTime%3A%3AFormat%3A%3ABuilder%3A%3AParser%3A%3Ageneric/markdown) - Useful routines

## VERSION
    version 0.83

## METHODS
### Useful
   new
    Standard constructor. Returns a blessed hash; any arguments are placed in the hash. This is
    useful for storing information between methods.

   generic_parser
    This is a method provided solely for the benefit of "Parser" implementations. It semi-neatly
    abstracts a lot of the work involved.

    Basically, it takes parameters matching the assorted callbacks from the parser declarations and
    makes a coderef out of it all.

    Currently recognized callbacks are:

    *   on_match

    *   on_fail

    *   preprocess

    *   postprocess

### Methods for subclassing
    These are methods you should define when writing your own subclass.

    Note: these methods do not exist in this class. There is no point trying to call
    "$self->[SUPER::do_match](https://www.chedong.com/phpMan.php/perldoc/SUPER%3A%3Adomatch/markdown)( ... )".

   do_match
    "do_match" is the first phase. Arguments are the date and @args. "self", "label", "args". Return
    value must be defined if you match successfully.

   post_match
    "post_match" is called after the appropriate callback out of "on_match"/"on_fail" is done. It's
    passed the date, the return value from "do_match" and the parsing hash.

    Its return value is used as the "post" argument to the "postprocess" callback, and as the second
    argument to "make".

   make
    "make" takes the original input, the return value from "post_match" and the parsing hash and
    should return a "DateTime" object or undefined.

### Delegations
    For use of "Parser", this module also delegates "valid_params" and "params". This is just
    convenience to save typing the following:

        [DateTime::Format::Builder::Parser](https://www.chedong.com/phpMan.php/perldoc/DateTime%3A%3AFormat%3A%3ABuilder%3A%3AParser/markdown)->valid_params(...)

    Instead we get to type:

        $self->valid_params(...);
        __PACKAGE__->valid_params(...);

## WRITING A SUBCLASS
    Rather than attempt to explain how it all works, I think it's best if you take a look at
    Regex.pm and Strptime.pm as examples and work from there.

## SEE ALSO
    "<datetime@perl.org>" mailing list.

    <http://datetime.perl.org/>

    perl, DateTime, [DateTime::Format::Builder](https://www.chedong.com/phpMan.php/perldoc/DateTime%3A%3AFormat%3A%3ABuilder/markdown), [DateTime::Format::Builder::Parser](https://www.chedong.com/phpMan.php/perldoc/DateTime%3A%3AFormat%3A%3ABuilder%3A%3AParser/markdown).

## SUPPORT
    Bugs may be submitted at <<https://github.com/houseabsolute/DateTime-Format-Builder/issues>>.

    I am also usually active on IRC as 'autarch' on "irc://irc.perl.org".

## SOURCE
    The source code repository for DateTime-Format-Builder can be found at
    <<https://github.com/houseabsolute/DateTime-Format-Builder>>.

## AUTHORS
    *   Dave Rolsky <<autarch@urth.org>>

    *   Iain Truskett <<spoon@cpan.org>>

## COPYRIGHT AND LICENSE
    This software is Copyright (c) 2020 by Dave Rolsky.

    This is free software, licensed under:

      The Artistic License 2.0 (GPL Compatible)

    The full text of the license can be found in the LICENSE file included with this distribution.

