#!/bin/perl # # Extract supported divecomputers from libdivecomputer source # # Usage: # # parse-descriptor.pl # # 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] \n"; } open(my $fh, "<", $infi) || croak "can't open $infi: $!"; open(STDOUT, ">", $outfi) || croak "can't open $outfi: $!"; my $lastVend = ""; my $lastMod = ""; my @descriptors = (); while (<$fh>) { if (/^\s*{\s*"([^\,]*)"\s*,\s*"([^\,]*)"\s*,\s*([^\,]*).*}/) { push(@descriptors, "$1,$2"); } } my @sortedDescriptors = sort @descriptors; foreach (@sortedDescriptors) { ($vend, $mod) = split(',', $_); next if ($vend eq $lastVend && $mod eq $lastMod); if ($type eq "html") { if ($vend eq $lastVend) { printf(", %s", $mod); } else { if ($lastVend lt "Uemis" && $vend gt "Uemis") { printf("\n \n
Uemis
    \n\t
  • Zürich SDA"); } if ($lastVend eq "") { printf("
    %s
      \n\t
    • %s", $vend, $mod); } else { printf("
    \n
    \n
    %s
      \n\t
    • %s", $vend, $mod); } } } else { 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; $lastMod = $mod; } if ($type eq "html") { print("
    • \n\t
    \n
    \n
    "); } close $fh;