From 966018aab231cbebdfa49b7a65cb7f455cc6a775 Mon Sep 17 00:00:00 2001 From: Daniel Asher Resnick Date: Wed, 25 Nov 2020 20:03:30 -0600 Subject: [PATCH] kml.pl: Can remove placemarks --- kml.pl | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/kml.pl b/kml.pl index 5551892..a64f0cd 100755 --- a/kml.pl +++ b/kml.pl @@ -13,6 +13,10 @@ my $xpc = XML::LibXML::XPathContext->new($dom); $xpc->registerNs('k', "http://earth.google.com/kml/2.2"); my $mode = shift; +unless(defined($mode)) +{ + USAGE(); +} if ($mode eq 'add') { my ($name, $coordinates) = @ARGV; @@ -26,7 +30,26 @@ if ($mode eq 'add') } elsif ($mode eq 'remove') { - say "Remove mode"; + # say "Remove mode"; + my ($name) = @ARGV; + unless (defined($name)) + { + say "No place name provided to delete operation"; + USAGE(1); + } + $name = to_id($name); + my ($placemark) = $xpc->findnodes("//k:Placemark[\@id=\"$name\"]"); + if(defined($placemark)) + { + $placemark->unbindNode(); + print $dom->toString(1); + } + else + { + say "$name was not found in $filename"; + exit(1); + } + # say $placemark->toString(1); } elsif ($mode eq 'set') { @@ -34,6 +57,7 @@ elsif ($mode eq 'set') } else { + say "Invalid operation"; USAGE(1); } @@ -41,7 +65,7 @@ sub USAGE { my $code = shift; say "USAGE: "; - exit($code); + exit($code || 0); } sub add_empty_child {