NAME

Parqus - parse a search query string

VERSION

version 0.03

SYNOPSIS

    use Parqus;
    my $parser = Parqus->new( keywords => [ qw/name title/ ] );
    my $res;

    $res = $parser->process('title:"bar baz" foo title: meh');
    # {
    #   words    => ['foo'],
    #   keywords => {
    #                 title => [
    #                            'bar baz',
    #                            'meh',
    #                          ]
    #               },
    # }

    $res = $parser->process('title:"bar baz" title: meh');
    # {
    #   keywords => {
    #                 title => [
    #                            'bar baz',
    #                            'meh',
    #                          ]
    #               },
    # }

    $res = $parser->process('foo bar baz');
    # {
    #   words => ['foo', 'bar', 'baz'],
    # }

    $res = $parser->process('tag: inactive');
    # {
    #   errors => {
    #               'Parse Error: Invalid search query.'
    #             },
    # }

DESCRIPTION

Parqus (PArse QUery String) parses a search-engine like string into a perl structure

NEW

    my $parser = Parqus->new( %options );

OPTIONS

keywords

    keywords => [ qw/name title/ ]

the list of keywords you want to recognise.

value_regex

regular expression to capture words. (default: [qr![\w-]+!xms])

string_delimiters

array of characters used to delimit strings. (default: ['"])

SEE ALSO

Regexp::Grammars, Search::Query, Search::Query::Dialect::DBIxClass

AUTHOR

David Schmidt <davewood@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2020 by David Schmidt.

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