diff options
Diffstat (limited to 'txt2tooltip.pl')
-rw-r--r-- | txt2tooltip.pl | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/txt2tooltip.pl b/txt2tooltip.pl new file mode 100644 index 0000000..313b236 --- /dev/null +++ b/txt2tooltip.pl @@ -0,0 +1,93 @@ +#!/bin/perl + +# Copyright (c) 2012 Todd T. Fries <todd@fries.net> +# +# Permission to use, copy, modify, and distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +# read in 'ascii2txt.pl' formatted man pages, spit out #defines for tooltips + +use strict; +use warnings; + +our $verbose = 0; + +my $line; +my @lines; +my @states = ("prekewords", "keywords", "postkeywords"); +my $state = 0; + +my $tipname; +my @tipinfo; +my $tiplines; +while(<STDIN>) { + chomp($line = $_); + if ($state == 0) { + if ($line =~ /following keywords:$/) { + $state++; + } + next; + } + if ($state == 1) { + if ($line =~ /^$/) { + next; + } + if ($line =~ /^[A-Z]/) { + showtip($tipname,@tipinfo); + $state++; + next; + } + if ($line =~ /^ {11,11}([a-z_]+)[ ]*(.*)$/) { + showtip($tipname,@tipinfo); + $tiplines = 1; + $tipname = $1; + @tipinfo = ($2); + next; + } + if ($line =~ /^ {39,39}(.*)$/) { + push @tipinfo, $1; + } + } +} + +sub showtip { + my ($tip,@info) = @_; + + my $text; + my $count = 1; + + if (length($tip) < 1) { + return; + } + + my $fmt; + for my $line (@info) { + $line =~ s/&/&/g; + $line =~ s/</</g; + $line =~ s/>/>/g; + $line =~ s/"/"/g; + $line =~ s/^ {6,6}/\\t/g; + $line =~ s/\\t {6,6}/\\t\\t/g; + $line =~ s/\\t {6,6}/\\t\\t/g; + if ($count > $#info) { + $fmt = " \"%s\"\n"; + } else { + $fmt = " \"%s\\n\" \\\n"; + } + $text .= sprintf $fmt,$line; + $count++; + } + + $tip = uc($tip); + printf "#define TT_%s%s",$tip,$text; +} +exit(0); |