diff options
Diffstat (limited to 'scripts/parse-descriptor.pl')
-rwxr-xr-x[-rw-r--r--] | scripts/parse-descriptor.pl | 67 |
1 files changed, 47 insertions, 20 deletions
diff --git a/scripts/parse-descriptor.pl b/scripts/parse-descriptor.pl index e29658bee..19d4085e8 100644..100755 --- a/scripts/parse-descriptor.pl +++ b/scripts/parse-descriptor.pl @@ -1,37 +1,64 @@ +#!/bin/perl +# +# Extract supported divecomputers from libdivecomputer source +# +# Usage: +# +# parse-descriptor.pl <path to libdivecomputer/src/descriptor.c> <outfile> +# +# depending on suffix of the outfile it creates the right content for +# either a text file or and html file use Carp; #set command line arguments my ($infi, $outfi) = @ARGV; my ($type) = $outfi =~ /\.([^.]+)$/; +if ($infi !~ /.*descriptor.c/) { + croak "run as $ARGV[0] <path to descriptor.c> <outputfile>\n"; +} + open(my $fh, "<", $infi) || croak "can't open $infi: $!"; open(STDOUT, ">", $outfi) || croak "can't open $outfi: $!"; my $lastVend = ""; +my @descriptors = (); while (<$fh>) { - my ($vend, $mod, $set) = split('\t', $_); - if ($type eq "html") { - if ($vend eq $lastVend) { - printf(", %s", $mod); - } else { - if ($lastVend eq "") { - printf("<dl><dt>%s</dt><dd>\n\t<ul>\n\t <li>%s", $vend, $mod); - } else { - printf("</li>\n\t</ul>\n </dd>\n <dt>%s</dt><dd>\n\t<ul>\n\t <li>%s", $vend, $mod); - } + if (/^\s*{\s*"([^\,]*)"\s*,\s*"([^\,]*)"\s*,\s*([^\,]*).*}/) { + push(@descriptors, "$1,$2"); } - } else { - if ($vend eq $lastVend) { - printf(", %s", $mod); +} +my @sortedDescriptors = sort @descriptors; +foreach (@sortedDescriptors) { + ($vend, $mod) = split(',', $_); + if ($type eq "html") { + if ($vend eq $lastVend) { + printf(", %s", $mod); + } else { + if ($lastVend lt "Uemis" && $vend gt "Uemis") { + printf("</li>\n\t</ul>\n </dd>\n <dt>Uemis</dt><dd>\n\t<ul>\n\t <li>Zürich SDA"); + } + if ($lastVend eq "") { + printf("<dl><dt>%s</dt><dd>\n\t<ul>\n\t <li>%s", $vend, $mod); + } else { + printf("</li>\n\t</ul>\n </dd>\n <dt>%s</dt><dd>\n\t<ul>\n\t <li>%s", $vend, $mod); + } + } } else { - if ($lastVend eq "") { - printf("%s: %s", $vend, $mod); - } else { - printf("\n%s: %s", $vend, $mod); - } + if ($vend eq $lastVend) { + printf(", %s", $mod); + } else { + if ($lastVend lt "Uemis" && $vend gt "Uemis") { + printf("\nUemis: Zürich SDA"); + } + if ($lastVend eq "") { + printf("%s: %s", $vend, $mod); + } else { + printf("\n%s: %s", $vend, $mod); + } + } } - } - $lastVend = $vend; + $lastVend = $vend; } if ($type eq "html") { print("</li>\n\t</ul>\n </dd>\n</dl>"); |