NAME

Complete::Sequence - Complete string from a sequence of choices

VERSION

This document describes version 0.002 of Complete::Sequence (from Perl distribution Complete-Sequence), released on 2019-12-17.

FUNCTIONS

complete_sequence

Usage:

complete_sequence(%args) -> array

Complete string from a sequence of choices.

Sometime you want to complete a string where its parts (sequence items) are formed from various pieces. For example, suppose your program "delete-user-data" accepts an argument that is in the form of:

USERNAME
UID "(" "current" ")"
UID "(" "historical" ")"

"EVERYONE"

Supposed existing users include budi, ujang, and wati with UID 101, 102, 103.

This can be written as:

[
    {
        alternative => [
            [qw/budi ujang wati/],
            {sequence => [
                [qw/101 102 103/],
                ["(current)", "(historical)"],
            ]},
            "EVERYONE",
        ],
    }
]

When word is empty (''), the offered completion is:

budi
ujang
wati

101
102
103

EVERYONE

When word is 101, the offered completion is:

101
101(current)
101(historical)

When word is 101(h, the offered completion is:

101(historical)

This function is not exported by default, but exportable.

Arguments ('*' denotes required arguments):

  • sequence* => array

    A sequence structure is an array of items. An item can be:

    • a scalar/string (a single string to choose from)

    • an array of strings (multiple strings to choose from)

    • a coderef (will be called to extract an item)

      Coderef will be called with $stash argument which contains various information, e.g. the index of the sequence item (item_index), the completed parts (completed_item_words), the current word (cur_word), etc.

    • a hash (another sequence or alternative of items)

    If you want to specify another sub-sequence of items:

    {sequence => [ ... ]}   # put items in here

    If you want to specify an alternative of sub-sequences or sub-alternative:

    {alternative => [ ... ]}    # put items in here
  • word* => str (default: "")

    Word to complete.

Return value: (array)

ENVIRONMENT

COMPLETE_SEQUENCE_TRACE

Bool. If set to true, will display more log statements for debugging.

HOMEPAGE

Please visit the project's homepage at https://metacpan.org/release/Complete-Sequence.

SOURCE

Source repository is at https://github.com/perlancar/perl-Complete-Sequence.

BUGS

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

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

Complete::Path. Conceptually, "complete_sequence" is similar to complete_path from Complete::Path. Except unlike a path, a sequence does not (necessarily) have path separator.

Complete

AUTHOR

perlancar <perlancar@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2019 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.