12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #! /usr/bin/perl
- use strict;
- # Get list of links to class src packages from Javadoc
- #system("curl http://static.springsource.org/spring-security/site/docs/3.0.x/apidocs/allclasses-frame.html > allclasses-frame.html");
- my @all_classes = `cat allclasses-frame.html`;
- $#all_classes > 0 || die "No lines in Javadoc";
- # Src XREF format
- #<a href="org/springframework/security/vote/AbstractAccessDecisionManager.html" target="classFrame">AbstractAccessDecisionManager</a>
- # Javadoc format
- #<A HREF="org/springframework/security/acls/afterinvocation/AbstractAclProvider.html" title="class in org.springframework.security.acls.afterinvocation" target="classFrame">AbstractAclProvider</A>
- my %classnames_to_src;
- while ($_ = pop @all_classes) {
- next unless $_ =~ /<A HREF="(.*)" title.*>(([a-zA-Z0-9_]+?))<\/A>/;
- print "Adding class $1, $2\n";
- $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#anchor
- my %id_to_html;
- my %class_index;
- # Build map of html pages links
- while (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/titles
- my @class_references = split /;/,`xsltproc --xinclude index-classes.xsl springsecurity.xml`;
- # Get unique values
- my %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;
|