[svn:parrot] r37743 - in trunk: lib/Parrot/Docs tools/docs
fperrad at svn.parrot.org
fperrad at svn.parrot.org
Thu Mar 26 11:01:49 UTC 2009
Author: fperrad
Date: Thu Mar 26 11:01:47 2009
New Revision: 37743
URL: https://trac.parrot.org/parrot/changeset/37743
Log:
[chm] compute an index
code from bsdz++ in TT #492
format output like HTML Help Workshop 4.1
Modified:
trunk/lib/Parrot/Docs/Group.pm
trunk/tools/docs/mk_chm.pl
Modified: trunk/lib/Parrot/Docs/Group.pm
==============================================================================
--- trunk/lib/Parrot/Docs/Group.pm Thu Mar 26 07:56:28 2009 (r37742)
+++ trunk/lib/Parrot/Docs/Group.pm Thu Mar 26 11:01:47 2009 (r37743)
@@ -194,17 +194,18 @@
return @contents;
}
+
sub build_toc_chm {
my $self = shift;
my $source = shift;
- my $indent = shift || q{ } x 6;
+ my $indent = shift || "\t";
my $toc = q{};
$toc .= qq{$indent<LI> <OBJECT type="text/sitemap">\n};
- $toc .= qq{$indent <param name="Name" value="$self->{NAME}">\n};
- $toc .= qq{$indent <param name="Local" value="$self->{INDEX_PATH}">\n}
+ $toc .= qq{$indent\t<param name="Name" value="$self->{NAME}">\n};
+ $toc .= qq{$indent\t<param name="Local" value="$self->{INDEX_PATH}">\n}
if ( exists $self->{INDEX_PATH} );
- $indent .= q{ } x 2;
+ $indent .= "\t";
$toc .= qq{$indent</OBJECT>\n};
$toc .= qq{$indent<UL>\n};
foreach my $content ( @{ $self->{CONTENTS} } ) {
@@ -219,10 +220,10 @@
my $file = $source->file_with_relative_path( $rel_path );
next if ( !$file->contains_pod && !$file->is_docs_link );
my $title = $file->title || $rel_path;
- $toc .= qq{$indent <LI> <OBJECT type="text/sitemap">\n};
- $toc .= qq{$indent <param name="Name" value="$title">\n};
- $toc .= qq{$indent <param name="Local" value="$rel_path.html">\n};
- $toc .= qq{$indent </OBJECT>\n};
+ $toc .= qq{$indent<LI> <OBJECT type="text/sitemap">\n};
+ $toc .= qq{$indent\t<param name="Name" value="$title">\n};
+ $toc .= qq{$indent\t<param name="Local" value="$rel_path.html">\n};
+ $toc .= qq{$indent\t</OBJECT>\n};
}
}
}
@@ -233,10 +234,10 @@
my $file = $source->file_with_relative_path( $rel_path );
next if ( !$file->contains_pod && !$file->is_docs_link );
my $title = $file->title || $rel_path;
- $toc .= qq{$indent <LI> <OBJECT type="text/sitemap">\n};
- $toc .= qq{$indent <param name="Name" value="$title">\n};
- $toc .= qq{$indent <param name="Local" value="$rel_path.html">\n};
- $toc .= qq{$indent </OBJECT>\n};
+ $toc .= qq{$indent<LI> <OBJECT type="text/sitemap">\n};
+ $toc .= qq{$indent\t<param name="Name" value="$title">\n};
+ $toc .= qq{$indent\t<param name="Local" value="$rel_path.html">\n};
+ $toc .= qq{$indent\t</OBJECT>\n};
}
}
}
@@ -244,6 +245,76 @@
return $toc;
}
+
+sub build_index_chm {
+ my $self = shift;
+ my $source = shift;
+
+ eval 'require Pod::PseudoPod::Index';
+ return q{} if $@;
+
+ sub Pod::PseudoPod::Index::ourkeys {
+ my $self = shift;
+ $self->scan($self->{'index'});
+ return $self->{'ourkeys'};
+ }
+
+ sub Pod::PseudoPod::Index::scan {
+ my ($self,$node) = @_;
+ foreach my $key (sort {lc($a) cmp lc($b)} keys %{$node}) {
+ next if $key eq 'page';
+ push @{$self->{'ourkeys'}}, $key;
+ $self->scan($node->{$key});
+ }
+ }
+
+
+ foreach my $content ( @{ $self->{CONTENTS} } ) {
+ my @to_process;
+ if ( ref $content && $content->isa( 'Parrot::Docs::Group' ) ) {
+ $content->build_index_chm( $source );
+ }
+ elsif ( ref $content ) {
+ push @to_process, @{ $content->{CONTENTS} };
+ }
+ else {
+ push @to_process, $content;
+ }
+
+ foreach my $item ( @to_process ) {
+ my @rel_paths = $self->file_paths_relative_to_source( $source, $item );
+ foreach my $rel_path (@rel_paths) {
+ my $file = $source->file_with_relative_path( $rel_path );
+
+ next if ( !$file->contains_pod && !$file->is_docs_link );
+ my $title = $file->title || $rel_path;
+
+ my $index_parser = Pod::PseudoPod::Index->new();
+ $index_parser->parse_file($file->{'PATH'});
+ my $ourkeys = $index_parser->ourkeys();
+
+ foreach my $k (@{$ourkeys}) {
+ push @{$source->{'_INDEX'}{$k}}, $rel_path;
+ }
+ }
+ }
+ }
+
+ my $index;
+ for my $key (%{$source->{_INDEX}}) {
+ next if ! defined $source->{_INDEX}{$key};
+ next if $key =~ /^\s*$/;
+ $index .= qq{\t<LI> <OBJECT type="text/sitemap">\n};
+ $index .= qq{\t\t<param name="Keyword" value="$key">\n};
+ foreach my $ref (@{$source->{_INDEX}{$key}}) {
+ (my $shortkey = $key) =~ s/( opcode \(PASM\)| directive| \(.*\)| \(.*\) instruction (PIR))//;
+ $index .= qq{\t\t<param name="Local" value="$ref.html#$shortkey">\n};
+ }
+ $index .= qq{\t\t</OBJECT>\n};
+ }
+ return $index;
+}
+
=back
=head1 SEE ALSO
Modified: trunk/tools/docs/mk_chm.pl
==============================================================================
--- trunk/tools/docs/mk_chm.pl Thu Mar 26 07:56:28 2009 (r37742)
+++ trunk/tools/docs/mk_chm.pl Thu Mar 26 11:01:47 2009 (r37743)
@@ -42,7 +42,8 @@
my $docs = Parrot::Docs::Section::Parrot->new;
my $dist = Parrot::Distribution->new;
-my $toc = $docs->build_toc_chm( $dist );
+my $toc = $docs->build_toc_chm( $dist );
+my $index = $docs->build_index_chm( $dist );
my $filename = 'docs/html/parrot.hhp';
open my $OUT, '>', $filename
@@ -72,15 +73,15 @@
$filename = 'docs/html/index.hhk';
open $OUT, '>', $filename
or die "Can't open $filename ($!)";
-print $OUT <<'TEXT';
+print $OUT <<"TEXT";
<HTML>
- <HEAD>
- </HEAD>
- <BODY>
- <UL>
- </UL>
- </BODY>
-</HTML>
+<HEAD>
+<meta name="generator" content="(Perl $])">
+</HEAD><BODY>
+<UL>
+$index
+</UL>
+</BODY></HTML>
TEXT
close $OUT;
@@ -89,79 +90,77 @@
or die "Can't open $filename ($!)";
print $OUT <<"TEXT";
<HTML>
- <HEAD>
- <meta name="generator" content="(Perl $])">
- </HEAD>
- <BODY>
- <OBJECT type="text/site properties">
- <param name="ImageType" value="Folder">
- </OBJECT>
- <UL>
+<HEAD>
+<meta name="generator" content="(Perl $])">
+</HEAD><BODY>
+<OBJECT type="text/site properties">
+ <param name="ImageType" value="Folder">
+</OBJECT>
+<UL>
$toc
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="Book">
- </OBJECT>
- <UL>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="Overview">
- <param name="Local" value="../book/ch01_overview.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="Getting Started">
- <param name="Local" value="../book/ch02_getting_started.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="PIR Basics">
- <param name="Local" value="../book/ch03_pir_basics.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="PIR Subroutines">
- <param name="Local" value="../book/ch04_pir_subroutines.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="PASM">
- <param name="Local" value="../book/ch05_pasm.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="Library">
- <param name="Local" value="../book/ch06_library.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="Testing and Debugging">
- <param name="Local" value="../book/ch07_testing_and_debugging.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="Architecture">
- <param name="Local" value="../book/ch08_architecture.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="Parrot Compiler Toolkit">
- <param name="Local" value="../book/ch09_pct.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="High Level Languages">
- <param name="Local" value="../book/ch10_hlls.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="PMC">
- <param name="Local" value="../book/ch11_pmcs.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="Opcodes">
- <param name="Local" value="../book/ch12_opcodes.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="References">
- <param name="Local" value="../book/ch13_reference.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="Appendix : Patch Submission">
- <param name="Local" value="../book/appX_patch_submission.html">
- </OBJECT>
- </UL>
- </UL>
- </BODY>
-</HTML>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Book">
+ </OBJECT>
+ <UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Overview">
+ <param name="Local" value="../book/ch01_overview.html">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Getting Started">
+ <param name="Local" value="../book/ch02_getting_started.html">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="PIR Basics">
+ <param name="Local" value="../book/ch03_pir_basics.html">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="PIR Subroutines">
+ <param name="Local" value="../book/ch04_pir_subroutines.html">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="PASM">
+ <param name="Local" value="../book/ch05_pasm.html">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Library">
+ <param name="Local" value="../book/ch06_library.html">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Testing and Debugging">
+ <param name="Local" value="../book/ch07_testing_and_debugging.html">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Architecture">
+ <param name="Local" value="../book/ch08_architecture.html">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Parrot Compiler Toolkit">
+ <param name="Local" value="../book/ch09_pct.html">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="High Level Languages">
+ <param name="Local" value="../book/ch10_hlls.html">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="PMC">
+ <param name="Local" value="../book/ch11_pmcs.html">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Opcodes">
+ <param name="Local" value="../book/ch12_opcodes.html">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="References">
+ <param name="Local" value="../book/ch13_reference.html">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Appendix : Patch Submission">
+ <param name="Local" value="../book/appX_patch_submission.html">
+ </OBJECT>
+ </UL>
+-</UL>
+</BODY></HTML>
TEXT
close $OUT;
More information about the parrot-commits
mailing list