glossary: Add definitions for dangling and unreachable objects
[git/mingw/4msysgit/kblees.git] / Documentation / sort_glossary.pl
blobe0bc552a645f482445d5be33b3b662cead324aa0
1 #!/usr/bin/perl
3 %terms=();
5 while(<>) {
6 if(/^(\S.*)::$/) {
7 my $term=$1;
8 if(defined($terms{$term})) {
9 die "$1 defined twice\n";
11 $terms{$term}="";
12 LOOP: while(<>) {
13 if(/^$/) {
14 last LOOP;
16 if(/^ \S/) {
17 $terms{$term}.=$_;
18 } else {
19 die "Error 1: $_";
25 sub format_tab_80 ($) {
26 my $text=$_[0];
27 my $result="";
28 $text=~s/\s+/ /g;
29 $text=~s/^\s+//;
30 while($text=~/^(.{1,72})(|\s+(\S.*)?)$/) {
31 $result.=" ".$1."\n";
32 $text=$3;
34 return $result;
37 sub no_spaces ($) {
38 my $result=$_[0];
39 $result=~tr/ /_/;
40 return $result;
43 print 'GIT Glossary
44 ============
46 This list is sorted alphabetically:
50 @keys=sort {uc($a) cmp uc($b)} keys %terms;
51 $pattern='(\b(?<!link:git-)'.join('\b|\b(?<!link:git-)',reverse @keys).'\b)';
52 foreach $key (@keys) {
53 $terms{$key}=~s/$pattern/sprintf "<<ref_".no_spaces($1).",$1>>";/eg;
54 print '[[ref_'.no_spaces($key).']]'.$key."::\n"
55 .format_tab_80($terms{$key})."\n";
58 print '
60 Author
61 ------
62 Written by Johannes Schindelin <Johannes.Schindelin@gmx.de> and
63 the git-list <git@vger.kernel.org>.
65 GIT
66 ---
67 Part of the link:git.html[git] suite