| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 | #! /usr/bin/perluse strict;# Get list of links to class src packagessystem("curl http://static.springframework.org/spring-security/site/xref/allclasses-frame.html > allclasses-frame.html");my @all_classes = `cat allclasses-frame.html`;$#all_classes > 0 || die "No lines in xref";#<a href="org/springframework/security/vote/AbstractAccessDecisionManager.html" target="classFrame">AbstractAccessDecisionManager</a>my %classnames_to_src;while ($_ = pop @all_classes) {	next unless $_ =~ /<a href="(.*)" target="classFrame">(([a-zA-Z0-9_]+?))<\/a>/;	$classnames_to_src{$2} = $1;}#my @docbook = glob("*.xml");my @docbook;# Read the includes rather than using globbing to get the ordering right for the index.open MAINDOC, "<springsecurity.xml";while(<MAINDOC>) {	if (/href="(.*\.xml)"/) {		push @docbook, $1;	}}# Hash of xml:id (i.e. anchor) to filename.html#anchormy %id_to_html;my %class_index;# Build map of html pages linkswhile (my $file = pop @docbook) {	open FILE, $file or die "$!";		print "\nProcessing: $file\n\n";	my $file_id;	while(<FILE>) {		if (/.* xml:id="([a-z0-9-]+?)"/) {			$file_id = $1;			last;		}	}	$id_to_html{$file_id} = "$file_id.html#$file_id"; 	while (<FILE>) {		next unless /.* xml:id="([a-z0-9-]+?)"/;		print "$1\n";		$id_to_html{$1} = "$file_id.html#$1";	}	close FILE;}# Get the list of class/interface names and their section ids/titlesmy @class_references = split /;/,`xsltproc --xinclude index-classes.xsl springsecurity.xml`;# Get unique valuesmy %seen = ();@class_references = grep { !$seen{$_}++} @class_references;print "\nThere are $#class_references references to classes and interfaces.\n";my %id_to_title;my %classnames_to_ids = ();foreach my $class_id_title (@class_references) {	(my $class, my $id, my $title) = split /:/, $class_id_title;	$title =~ s/</</;	$title =~ s/>/>/;	$id_to_title{$id} = $title;	push( @{$classnames_to_ids{$class}}, $id );}open INDEX, ">classindex.xml" || die "Couldn't open output file\n";print INDEX "<index>\n";foreach my $class (sort keys %classnames_to_ids) {	print INDEX "<class name='$class'"; 	if (exists $classnames_to_src{$class}) {		print INDEX " src-xref='$classnames_to_src{$class}'";	}	print INDEX ">\n";	foreach my $id (@{$classnames_to_ids{$class}}) {		print INDEX "    <link href='$id_to_html{$id}' title='$id_to_title{$id}'/>\n";	}	print INDEX "</class>\n"		}print INDEX "</index>\n";close INDEX;
 |