summaryrefslogtreecommitdiffstats
path: root/ast/addlinks
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2018-01-09 19:26:44 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2018-01-09 19:26:44 (GMT)
commit1332d38f2805d986ea130e43218c0d2e870b4dc1 (patch)
treeaa72853cb8d0d8fcd53a6f5eddf196a374226706 /ast/addlinks
parent5e545ec8058cc5238dc870468b34b5d4617f307f (diff)
downloadblt-1332d38f2805d986ea130e43218c0d2e870b4dc1.zip
blt-1332d38f2805d986ea130e43218c0d2e870b4dc1.tar.gz
blt-1332d38f2805d986ea130e43218c0d2e870b4dc1.tar.bz2
update ast 8.6.2
Diffstat (limited to 'ast/addlinks')
-rwxr-xr-xast/addlinks163
1 files changed, 0 insertions, 163 deletions
diff --git a/ast/addlinks b/ast/addlinks
deleted file mode 100755
index 997dad6..0000000
--- a/ast/addlinks
+++ /dev/null
@@ -1,163 +0,0 @@
-#! /usr/bin/env perl
-
-# Read a set of labels (one per line) from the "global.labels" file.
-# Then read the input lines and create links for the first occurrence
-# of each label in each Latex section encountered (the links use \htmlref
-# to refer to HTX labels elsewhere in the document). Omit links wherever
-# they are not appropriate.
-
-# Read the list of labels for which links should be generated (these may
-# contain Latex escape characters, as they must exactly match the text from
-# which the link will be generated).
- open( LABELS, 'global.labels' );
- @labels = <LABELS>;
- close( LABELS );
-
-# Sort the labels into descending order of length. This is to avoid problems
-# with labels which are abbreviations of other labels.
- @labels = sort { length( $b ) <=> length( $a ) } @labels;
-
-# Build a regexp that will match any one of the labels.
- $pattern = "";
- for $label ( @labels ) {
-
-# Remove newlines from each label.
- $label =~ s/\n//g;
-
-# Labels must be whole words unless they start/end without an alphanumeric.
- $label_q = quotemeta( $label );
- if ( $label =~ m/^\w/ ) { $label_q = "\\b" . $label_q };
- if ( $label =~ m/\w$/ ) { $label_q = $label_q . "\\b" };
-
-# Build the regexp.
- $pattern = !$pattern ? $label_q : $pattern . "|" . $label_q;
- }
-
-# Loop through the input data.
- $sdiy = 0;
- $inr = 0;
- $source_line = 10;
- $verbatim = 0;
- while ( <> ) {
-
-# Detect the start of each type of document section.
- ( $s ) = /^ *\\section\{/; # Latex section
- ( $ss ) = /^ *\\subsection\{/; # Latex subsection
- ( $sss ) = /^ *\\subsubsection\{/; # Latex subsubsection
- ( $sr ) = /^ *\\sstroutine\{/; # SST routine description
-
-# We only consider sst diytopic sections to be of significance if they
-# introduce a listing of attributes or Functions. This is so that these
-# sections always contain links. SO if the previous line was a diytopic
-# line, see if this line contains the single word "Attributes" or
-# "Functions"
- if( $sdiy ) {
- ( $attrfun ) = /^ *(Attributes|Functions) *$/;
- $linkatfun = 0;
- $sdiy = 0;
- } else {
- ( $sdiy ) = /^ *\\sstdiytopic\{/;
- }
-
-# Do not make links in the introductory text in an Attributes or
-# Functions DIY section.
- if( $attrfun ) {
- if( /^ *\\sstitemlist\{/ ) { $linkatfun = 1 };
- } else {
- $linkatfun = 0;
- }
-
-# Watch for the end of the list of attributes or functions.
- if( $attrfun ) {
- if( /^ *\} *$/ ) {
- $attrfun = 0;
- $linkatfun = 0;
- }
- }
-
-# Note if a new section has started.
- $sx = ( $s || $ss || $sss || $sr );
- if ( $sx ) {
-
-# Set a flag to indicate which type of section we are in.
- $ins = $inss = $insss = $inr = 0;
- if ( $s ) { $ins = 1 };
- if ( $ss ) { $inss = 1 };
- if ( $sss ) { $insss = 1 };
- if ( $sr ) { $inr = 1 };
-
-# Clear the count of source lines for this section.
- $source_line = 0;
-
-# Clear the array of flags indicating which labels have been used.
- undef %used;
- }
-
-# Note if we are in a Latex "verbatim" or "terminalv" environment.
- if ( /^ *\\begin\{(verbatim|terminalv)\} *$/ ) { $verbatim = 1 };
-
-# Count the source lines read from each section.
- $source_line++;
-
-# Obtain an array of all the labels matched in the current source line.
- @match = /$pattern/og;
-
-# Consider generating a link for each label matched.
- for $label ( @match ) {
- $label_q = quotemeta( $label );
-
-# In an SST routine description, extract the name of the routine from
-# the second source line and mark the label of that name "used". This
-# prevents links being made to this section from within itself.
- if ( $inr && $source_line == 2 ) {
- $used{ $label }++;
- $label_x = $_;
- $label_x =~ s/\W//g;
- #s/$/\\sstlabel{$label_x}/;
- }
-
-# If we are in a Functions or Attributes section, see if the match occurs
-# at the start of the line and is followed by a colon. If it is, it is the
-# name of the main Function or Attribute being described and so should be
-# linkified.
- $atfun = ( $linkatfun && ( /^ *$label_q:/ ) );
-
-# Is this a caption? Do not replace entries in first part of caption
-# that appears in TOC LOF
- $iscap = /\\caption/;
-
-# Check if a link should be made. Omit links in "verbatim" environments,
-# in any line which starts a new section (because labels don't work properly
-# if they get into the table of contents), in the 4th line of an SST
-# routine description (because these also go into the TOC), or if the label
-# has already been used in this section. We always linkify any match if it
-# is in a list of Function or Attribute descriptions, if it is at the start
-# of the line and is followed by a colon.
- if ( $atfun || ( !$verbatim &&
- !$iscap &&
- !$sx &&
- !( $inr && ( $source_line == 4 ) ) &&
- !$used{ $label } ) ) {
-
-# Increment the number of usages of this label.
- $used{ $label }++;
-
-# Labels must be whole words unless they start/end without an alphanumeric.
- if ( $label =~ m/^\w/ ) { $label_q = "\\b" . $label_q };
- if ( $label =~ m/\w$/ ) { $label_q = $label_q . "\\b" };
-
-# Form a version of the label with non alphanumerics removed.
- $label_x = $label;
- #$label_x =~ s/\W//g;
-
-# Edit each instance of the label in the source line to insert an \htmlref.
- s/$label_q/\\htmlref{$label}{$label_x}/;
- }
- }
-
-# Detect the end of "verbatim" environments.
- if ( /^ *\\end\{(verbatim|terminalv)\} *$/ ) { $verbatim = 0 };
-
-# Output the modified line.
- print;
- }