package Getopt::Kingpin::Flag;
use 5.008001;
use strict;
use warnings;
use Getopt::Kingpin::Base -base;
our $VERSION = "0.10";
has _placeholder => undef;
has _hidden => 0;
sub placeholder {
my $self = shift;
my $placeholder = shift;
$self->_placeholder($placeholder);
return $self;
}
sub hidden {
my $self = shift;
$self->_hidden(1);
return $self;
}
sub help_str {
my $self = shift;
my $ret = ["", "", ""];
if (defined $self->short_name) {
$ret->[0] = sprintf "-%s", $self->short_name;
}
my $default = $self->_default;
my $printable_default = defined $default;
if (ref $default) {
$printable_default = Scalar::Util::blessed($default) && overload::Method($default, q[""]);
}
if ($self->type eq "Bool") {
$ret->[1] = sprintf "--%s", $self->name;
} elsif ($self->is_hash) {
if (defined $self->_placeholder and $self->_placeholder =~ /=/) {
$ret->[1] = sprintf '--%s %s', $self->name, $self->_placeholder;
} elsif (defined $self->_placeholder) {
$ret->[1] = sprintf '--%s KEY=%s', $self->name, $self->_placeholder;
} else {
$ret->[1] = sprintf "--%s KEY=VALUE", $self->name;
}
} else {
if (defined $self->_placeholder) {
$ret->[1] = sprintf '--%s=%s', $self->name, $self->_placeholder;
} elsif ($printable_default) {
$ret->[1] = sprintf '--%s="%s"', $self->name, $default;
} else {
$ret->[1] = sprintf "--%s=%s", $self->name, uc $self->name;
}
}
$ret->[2] = defined $self->description ? $self->description : "";
return $ret;
}
1;
__END__
=encoding utf-8
=head1 NAME
Getopt::Kingpin::Flag - command line option object
=head1 SYNOPSIS
use Getopt::Kingpin;
my $kingpin = Getopt::Kingpin->new;
my $name = $kingpin->flag('name', 'set name')->string();
$kingpin->parse;
printf "name : %s\n", $name;
=head1 DESCRIPTION
Getopt::Kingpin::Flag is used from Getopt::Kingpin.
=head1 METHOD
=head2 new()
Create Getopt::Kingpin::Flag object.
=head2 placeholder()
Set placeholder value for flag in the help.
=head2 hidden()
If set hidden(), flag does not appear in the help.
=head2 help_str()
Return help messages.
=head1 LICENSE
Copyright (C) sago35.
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
=head1 AUTHOR
sago35 E<lt>sago35@gmail.comE<gt>
=cut