summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorRuss Allbery <eagle@eyrie.org>2008-08-18 05:35:37 +0000
committerRuss Allbery <eagle@eyrie.org>2008-08-18 05:35:37 +0000
commit0c71f2d87831ccb61f2f9c9c1b66041870448cc3 (patch)
tree1a27afa14988836ea29b634160c2ff27d8ab8f77 /bin
parentacf87b3a1a79f551c9c2a25e49d57233f16e9246 (diff)
Add an \rss command to set an RSS feed URL and title for the page and
output the appropriate tags in the document header in \heading. Clear \id information between documents. Update the documentation to note that it's useful with Subversion as well.
Diffstat (limited to 'bin')
-rwxr-xr-xbin/spin52
1 files changed, 41 insertions, 11 deletions
diff --git a/bin/spin b/bin/spin
index fcf78fc..9767b07 100755
--- a/bin/spin
+++ b/bin/spin
@@ -26,8 +26,8 @@ $URL = 'http://www.eyrie.org/~eagle/software/web/';
use strict;
use subs qw(expand parse parse_context);
use vars qw(%DEPEND $DOCID @EXCLUDES $FILE @FILES $FULLPATH $ID $OUTPUT
- %OUTPUT %SITEDESCS %SITELINKS $SOURCE $SPACE @STATE $STYLES $URL
- %VERSIONS %commands %macros %strings);
+ %OUTPUT @RSS %SITEDESCS %SITELINKS $SOURCE $SPACE @STATE $STYLES
+ $URL %VERSIONS %commands %macros %strings);
use Cwd qw(getcwd);
use FileHandle ();
@@ -769,6 +769,14 @@ sub do_heading {
$output .= qq( <link rel="stylesheet" href="$style");
$output .= qq( type="text/css" />\n);
}
+ if (@RSS) {
+ for my $rss (@RSS) {
+ my ($url, $title) = @$rss;
+ $output .= qq( <link rel="alternate" type="application/rss+xml");
+ $output .= qq( href="$url"\n);
+ $output .= qq( title="$title" />\n);
+ }
+ }
if ($FILE ne '-') {
$output .= sitelinks $file;
}
@@ -891,6 +899,16 @@ sub do_release {
}
}
+# Used to save RSS feed information for the page. Doesn't output anything
+# directly; the RSS feed information is used later in do_heading.
+sub do_rss {
+ my ($format, $url, $title) = @_;
+ $url = parse ($url);
+ $title = parse ($title);
+ push (@RSS, [ $url, $title ]);
+ return (1, '');
+}
+
# Used to end each page, this adds the navigation links and my standard
# address block.
sub do_signature {
@@ -985,6 +1003,7 @@ sub do_version {
pre => [ 1, \&do_pre ],
quote => [ 3, \&do_quote ],
release => [ 1, \&do_release ],
+ rss => [ 2, \&do_rss ],
rule => [ 0, \&do_rule ],
signature => [ 0, \&do_signature ],
strike => [ 1, \&do_strike ],
@@ -1050,6 +1069,8 @@ sub spin {
close OUT;
undef %macros;
undef %strings;
+ undef $DOCID;
+ undef @RSS;
}
##############################################################################
@@ -1654,11 +1675,11 @@ the file. \signature will take care of appending the signature, appending
navigation links, closing any open blocks, and any other cleanup that has to
happen at the end of a generated HTML page.
-It is also highly recommended, if you are using CVS or RCS for revision
-control, to put \id[$Z<>Id$] as the first command in each file. B<spin>
-will then take care of putting the last modified date in the footer for you
-based on the CVS timestamp (which may be more accurate than the last
-modified time of the thread file).
+It is also highly recommended, if you are using Subversion, CVS, or RCS
+for revision control, to put \id[$Z<>Id$] as the first command in each
+file. B<spin> will then take care of putting the last modified date in
+the footer for you based on the CVS timestamp (which may be more accurate
+than the last modified time of the thread file).
You can include other files with the \include command, although it has a few
restrictions. The \include command should appear either at the beginning of
@@ -1683,10 +1704,11 @@ used verbatim as a URL.
=item \id[$Z<>Id$]
-Tells B<spin> the CVS or RCS revision number and time. This string is
-embedded verbatim in an HTML comment near the beginning of the generated
-output as well as used for the last modified information added by the
-\signature command.
+Tells B<spin> the Subversion, CVS, or RCS revision number and time. This
+string is embedded verbatim in an HTML comment near the beginning of the
+generated output as well as used for the last modified information added
+by the \signature command. For this command to behave properly, it must
+be given before \heading.
=item \include[<file>]
@@ -1778,6 +1800,14 @@ tags. <work> can be omitted by passing an empty third argument. If \quote
is given a class argument of C<broken>, <text> will be treated as a series
of lines and a line break (<br>) will be added to the end of each line.
+=item \rss[<url>][<title>]
+
+Indicates that this page has a corresponding RSS feed at the URL <url>.
+The title of the RSS feed (particularly important if a page has more than
+one feed) is given by <title>. The feed links are included in the page
+header output by \heading, so this command must be given before \heading
+to be effective.
+
=item \rule
A horizontal rule, <hr> in HTML.