source: branches/properties/HELP_SOURCE/genhelp/postprocess_genhelp.pl

Last change on this file was 10842, checked in by westram, 11 years ago
  • Property svn:executable set to *
File size: 2.0 KB
Line 
1#!/usr/bin/perl
2#
3# The main intention of this script is to make unchangable help files
4# delivered with some of the integrated software compatible with
5# the arb_hlp2xml help converter.
6
7use strict;
8use warnings;
9
10sub clustalTopic2Section($) {
11  my ($line) = @_;
12  if ($line =~ /^\s*\>\>\s*([^<>]+)\s*\<\<\s*(.*)$/o) {
13    # '>>topic<< moretext' -> 'SECTION topic moretext'
14    $line = "SECTION $1 $2\n";
15  }
16  return $line;
17}
18sub fancyitemind2star($) {
19  my ($line) = @_;
20  $line =~ s/^(\s+)[\+\=]\s/$1\* /;
21  return $line;
22}
23sub formatFormatHeadlines($) {
24  my ($line) = @_;
25  if ($line =~ /File\sFormat/o) {
26    $line =~ s/^\s+/  /g;
27  }
28  elsif ($line =~ /Example\s.*\sfile/o) {
29    $line =~ s/^\s+/   /g;
30  }
31  return $line;
32}
33sub readseq_promote_sections($) {
34  my ($line) = @_;
35  if ($line =~ /^\s+\|[\|]+\s+/) {
36    $line = "SECTION $'";
37  }
38  return $line;
39}
40
41sub main() {
42  my $args = scalar(@ARGV);
43  if ($args!=1) {
44    die "Usage: postprocess_genhelp.pl filename\n".
45      "(filters stdin to stdout, filename is only passed to trigger specific behavior)\n ";
46  }
47  my $filename = $ARGV[0];
48
49  my @reg = ();
50  my @fun = ();
51
52  if ($filename =~ /clustalw/) {
53    push @reg, qr/([^\s]\s)\s+([\(])/;
54    push @reg, qr/([\.:])(\s)\s+/;
55    push @fun, \&clustalTopic2Section;
56  }
57  elsif ($filename =~ /readseq/) {
58    push @reg, qr/([\.])(\s)\s+/;
59    push @reg, qr/(LINE\s)\s+([0-9]+)/;
60    push @fun, \&fancyitemind2star;
61    push @fun, \&readseq_promote_sections;
62    if ($filename =~ /Formats/) {
63      push @fun, \&formatFormatHeadlines;
64    }
65  }
66
67  my $titled = 0;
68
69  foreach (<STDIN>) {
70    chomp;
71    # convert all lines starting at column zero into SECTIONs
72    if (s/^([^ \#\n])/SECTION $1/) {
73      # convert first SECTION into TITLE
74      if ($titled==0) {
75        s/^SECTION/TITLE/;
76        $titled=1;
77      }
78    }
79
80    foreach my $re (@reg) {
81      while ($_ =~ $re) {
82        $_ = $`.$1.$2.$';
83      }
84    }
85    foreach my $fn (@fun) {
86      $_ = &$fn($_);
87    }
88    print $_."\n";
89  }
90}
91main();
Note: See TracBrowser for help on using the repository browser.