summaryrefslogtreecommitdiffstats
path: root/scripts/parse-descriptor.pl
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2014-08-07 13:51:02 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-08-07 13:53:09 -0700
commit71291159993b6243ff22b7c49f36eba3a674c44b (patch)
tree3928e1ed9dd9e21190b0be9d784735529d1ad4e4 /scripts/parse-descriptor.pl
parent5ea2c6c237c73ec933d8d6543a667eae7d53a9a6 (diff)
downloadsubsurface-71291159993b6243ff22b7c49f36eba3a674c44b.tar.gz
Improve generation of list of supported dive computers
Get it straight from the libdivecomputer sources used... Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'scripts/parse-descriptor.pl')
-rwxr-xr-x[-rw-r--r--]scripts/parse-descriptor.pl67
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>");