aboutsummaryrefslogtreecommitdiff
path: root/bin/nato
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2022-08-15 18:35:11 -0300
committerEuAndreh <eu@euandre.org>2022-08-15 18:35:11 -0300
commit633068d5d2256f07e2c3e42ae40be97c28c42356 (patch)
tree8aad78850ef4227eae849bc13c7cfaaf774d29e4 /bin/nato
parentbin/serve: Add working version (diff)
downloaddotfiles-633068d5d2256f07e2c3e42ae40be97c28c42356.tar.gz
dotfiles-633068d5d2256f07e2c3e42ae40be97c28c42356.tar.xz
bin/nato: Add working version
Diffstat (limited to 'bin/nato')
-rwxr-xr-xbin/nato97
1 files changed, 97 insertions, 0 deletions
diff --git a/bin/nato b/bin/nato
new file mode 100755
index 0000000..6ea66b5
--- /dev/null
+++ b/bin/nato
@@ -0,0 +1,97 @@
+#!/usr/bin/env perl
+
+use v5.34;
+use strict;
+use warnings;
+use feature 'signatures';
+no warnings 'experimental';
+use Getopt::Std ();
+
+sub usage($fh) {
+ print $fh <<~'EOF'
+ Usage:
+ nato
+ nato -h
+ EOF
+}
+
+sub help($fh) {
+ print $fh <<~'EOF'
+
+ Options:
+ -h, --help show this message
+
+
+ Translate the given input to the NATO phonetic alphabet.
+
+
+ Examples:
+
+ Spell 'EuAndreh':
+
+ $ echo 'EuAndreh' | nato
+ Echo Uniform Alfa November Delta Romeo Echo Hotel
+ EOF
+}
+
+for (@ARGV) {
+ last if $_ eq '--';
+ if ($_ eq '--help') {
+ usage *STDOUT;
+ help *STDOUT;
+ exit
+ }
+}
+
+my %opts;
+if (!Getopt::Std::getopts('h', \%opts)) {
+ usage *STDERR;
+ exit 2;
+}
+
+my %DICT = (
+ 'a' => 'Alfa',
+ 'b' => 'Bravo',
+ 'c' => 'Charlie',
+ 'd' => 'Delta',
+ 'e' => 'Echo',
+ 'f' => 'Foxtrot',
+ 'g' => 'Golf',
+ 'h' => 'Hotel',
+ 'i' => 'India',
+ 'j' => 'Juliett',
+ 'k' => 'Kilo',
+ 'l' => 'Lima',
+ 'm' => 'Mike',
+ 'n' => 'November',
+ 'o' => 'Oscar',
+ 'p' => 'Papa',
+ 'q' => 'Quebec',
+ 'r' => 'Romeo',
+ 's' => 'Sierra',
+ 't' => 'Tango',
+ 'u' => 'Uniform',
+ 'v' => 'Victor',
+ 'w' => 'Whiskey',
+ 'x' => 'X-ray',
+ 'y' => 'Yankee',
+ 'z' => 'Zulu',
+ '1' => 'One',
+ '2' => 'Two',
+ '3' => 'Three',
+ '4' => 'Four',
+ '5' => 'Five',
+ '6' => 'Six',
+ '7' => 'Seven',
+ '8' => 'Eight',
+ '9' => 'Nine',
+ '0' => 'Zero',
+);
+
+while (<STDIN>) {
+ for my $c (split //, $_) {
+ my $char = $DICT{lc $c};
+ print "$char " if defined $char;
+ }
+ print "\n";
+}