2025-09-05 09:42:21 +02:00

123 lines
3.0 KiB
Perl
Executable File

# ------------------------------------------------------------------------------
# (C) Crown copyright Met Office. All rights reserved.
# For further details please refer to the file COPYRIGHT.txt
# which you should have received as part of this distribution.
# ------------------------------------------------------------------------------
use strict;
use warnings;
package Fcm::Interactive::InputGetter;
use Carp qw{croak};
################################################################################
# Constructor
sub new {
my ($class, $args_ref) = @_;
return bless({%{$args_ref}}, $class);
}
################################################################################
# Methods: get_*
for my $key (
############################################################################
# Returns the title of the prompt
'title',
############################################################################
# Returns the message of the prompt
'message',
############################################################################
# Returns the of the prompt
'type',
############################################################################
# Returns the default return value
'default',
) {
no strict qw{refs};
my $getter = "get_$key";
*$getter = sub {
my ($self) = @_;
return $self->{$key};
}
}
################################################################################
# Invokes the getter
sub invoke {
my ($self) = @_;
croak("Fcm::Interactive::InputGetter->invoke() not implemented.");
}
1;
__END__
=head1 NAME
Fcm::Interactive::TxtInputGetter
=head1 SYNOPSIS
use Fcm::Interactive::TxtInputGetter;
$answer = Fcm::Interactive::get_input(
title => 'My title',
message => 'Would you like to ...?',
type => 'yn',
default => 'n',
);
=head1 DESCRIPTION
An object of this abstract class is used by
L<Fcm::Interactive|Fcm::Interactive> to get a user reply.
=head1 METHODS
=over 4
=item new($args_ref)
Constructor, normally invoked via L<Fcm::Interactive|Fcm::Interactive>.
Input options are: I<title>, for a short title of the prompt, I<message>, for
the message prompt, I<type> for the prompt type, and I<default> for the default
value of the return value.
Prompt type can be YN (yes or no), YNA (yes, no or all) or input (for an input
string).
=item get_title()
Returns the title of the prompt.
=item get_message()
Returns the message of the prompt.
=item get_type()
Returns the type of the prompt, can be YN (yes or no), YNA (yes, no or all) or
input (for an input string).
=item get_default()
Returns the default return value of invoke().
=item invoke()
Gets an input string from the user, and returns it. Sub-classes must override
this method.
=back
=head1 SEE ALSO
L<Fcm::Interactive|Fcm::Interactive>,
L<Fcm::Interactive::TxtInputGetter|Fcm::Interactive::TxtInputGetter>,
L<Fcm::Interactive::GUIInputGetter|Fcm::Interactive::GUIInputGetter>
=head1 COPYRIGHT
E<169> Crown copyright Met Office. All rights reserved.
=cut