App-rdapper
view release on metacpan or search on metacpan
lib/App/rdapper.pm view on Meta::CPAN
sub error {
my ($package, $fmt, @params) = @_;
my $str = sprintf(_("Error: [_1]", $fmt), @params);
$err->say(colourise([qw(red)], $str));
exit 1;
}
sub colourise {
my ($cref, $str) = @_;
if (-t $out && !$nocolor) {
return colored($cref, $str);
} else {
return $str;
}
}
sub u { colourise([qw(underline)], shift) }
sub b { colourise([qw(bold)], shift) }
sub _ { decode($LH->encoding, $LH->maketext(@_)) }
#
# this function uses PPI to parse this file, extract the messages passed to _()
# and prints a .po file on STDOUT.
#
sub export_strings {
eval {
require PPI;
my $doc = PPI::Document->new(__FILE__);
$doc->prune(q{PPI::Token::Comment});
$doc->prune(q{PPI::Token::Whitespace});
my @msgs;
my @nodes = @{$doc->find(sub { 1 })};
for (my $i = 0 ; $i < scalar(@nodes) ; $i++) {
my $node = $nodes[$i];
if ($node->isa(q{PPI::Token::Magic}) && q{_} eq $node->content) {
my $next = $nodes[$i+1];
if ($next->isa(q{PPI::Structure::List})) {
my $msg = ($next->tokens)[1];
if (!$msg->isa(q{PPI::Token::Quote})) {
die(sprintf(
"%s: first argument to _() must be a string literal",
$msg->content,
));
}
push(@msgs, $msg->string);
}
}
}
foreach my $msg (uniq(@msgs)) {
printf("msgid \"%s\"\nmsgstr \"\"\n\n", $msg);
}
};
exit;
}
sub encode_idn {
my ($package, $name) = @_;
return Net::IDN::PP->encode($name);
}
1;
__END__
=pod
=head1 NAME
App::rdapper - a command-line L<RDAP|https://about.rdap.org> client.
=head1 SYNOPSIS
General form:
rdapper [OPTIONS] OBJECT
Examples:
rdapper example.com
rdapper --tld foo
rdapper 192.168.0.1
rdapper https://rdap.org/domain/example.com
rdapper --search "exampl*.com"
=head1 DESCRIPTION
C<rdapper> retrieves data about internet resources (domain names, IP addresses,
and autonymous systems) and outputs the information in a human-readable format.
=head1 OPTIONS
You can pass any internet resource as an argument; this may be:
=over
=item * a "forward" domain name such as C<example.com>;
=item * a top-level domain such as C<com>;
=item * a IPv4 or IPv6 address or CIDR prefix, such as C<192.168.0.1> or
C<2001:DB8::/32>;
=item * an Autonymous System Number such as C<AS65536>.
=item * a "reverse" domain name such as C<168.192.in-addr.arpa>;
( run in 0.536 second using v1.01-cache-2.11-cpan-5735350b133 )