Catalyst Maintainable web apps made easy! #137

Bonus slides: The parser

package DoQueue::Parser::Task;
Readonly my $ORDER => qr/(?:(\d+):)/;
Readonly my $TASK  => qr/([^[]+)/;
Readonly my $META  => qr/(?:\[(.+)\])/;

sub parse {
    my ($class, $in) = @_;
    if ( my ($order, $task, $metadata) = ($in =~ /$ORDER? $TASK $META?/xo) ){
        _trim($task);
        return { order    => $order || 0,
                 task     => $task,
                 metadata => DoQueue::Parser::Metadata->parse($metadata||''),
               };
    }

    croak 'parse error';
}

sub _trim {
    DoQueue::Parser::Metadata::_trim(@_);
}
Copyright © 2007 Jonathan Rockway