*** /tmp/unknown/TWiki.pmAdA_XF Mon Jul 1 19:57:03 2002
--- /tmp/unknown/TWiki.pm.modAdAMiL Mon Jul 1 19:57:03 2002
***************
*** 75,80 ****
--- 75,81 ----
$superAdminGroup $doSuperAdminGroup
$cgiQuery @publicWebList
$formatVersion $OS
+ $headerPatternNum $prevLevel @levelArray
);
# TWiki::Store config:
***************
*** 128,136 ****
@publicWebList = ();
$viewScript = "view";
! # Header patterns based on '+++'. The '###' are reserved for numbered headers
! $headerPatternDa = '^---+(\++|\#+)\s+(.+)\s*$'; # '---++ Header', '---## Header'
! $headerPatternSp = '^\t(\++|\#+)\s+(.+)\s*$'; # ' ++ Header', ' + Header'
$headerPatternHt = '^\s*(.+?)\s*'; # '
Header
$debugUserTime = 0;
--- 129,142 ----
@publicWebList = ();
$viewScript = "view";
! # Header patterns based on '+++'.
! $headerPatternDa = '^---+(\++|\#+)\s+(.+)\s*$'; # '---++ Header'
!
! #David Weller: modification for Numbered Headers
! # Header patterns based on '###'.
! $headerPatternNum = '^---+(\#+)\s+(.+)\s*$'; # '---## Header'
!
! $headerPatternSp = '^\t(\++)\s+(.+)\s*$'; # ' ++ Header', ' + Header'
$headerPatternHt = '^\s*(.+?)\s*'; # 'Header
$debugUserTime = 0;
***************
*** 330,336 ****
my @list = ();
foreach ( split( /\n/, &TWiki::Store::readWebTopic( $web, $topicname ) ) ) {
! next unless /^\s\*\s[A-Za-z0-9\.]+\s+\-\s+/;
push @list, $1 if (/([\w\-\.\+]+\@[\w\-\.\+]+)/);
}
--- 336,342 ----
my @list = ();
foreach ( split( /\n/, &TWiki::Store::readWebTopic( $web, $topicname ) ) ) {
! next unless /^\s\*\s[A-Za-z0-9\.\%]+\s+\-\s+/;
push @list, $1 if (/([\w\-\.\+]+\@[\w\-\.\+]+)/);
}
***************
*** 726,734 ****
--- 732,743 ----
# called by search, mailnotify & changes after calling readFileHead
my $htext = $theText;
+ # Format e-mail to add spam padding (HTML tags removed later)
+ $htext =~ s/([\s\(])(?:mailto\:)*([a-zA-Z0-9\-\_\.\+]+)\@([a-zA-Z0-9\-\_\.]+)\.([a-zA-Z0-9\-\_]+)(?=[\s\.\,\;\:\!\?\)])/$1 . &mailtoLink( $2, $3, $4 )/geo;
$htext =~ s/<\!\-\-.*?\-\->//gos; # remove all HTML comments
$htext =~ s/<\!\-\-.*$//os; # remove cut HTML comment
$htext =~ s/<[^>]*>//go; # remove all HTML tags
+ $htext =~ s/\ //go; # remove space entity
$htext =~ s/%WEB%/$theWeb/go; # resolve web
$htext =~ s/%TOPIC%/$theTopic/go; # resolve topic
$htext =~ s/%WIKITOOLNAME%/$wikiToolName/go; # resolve TWiki tool name
***************
*** 1137,1148 ****
&TWiki::Store::readWebTopic( $web, $topicname ), $topicname, $web ) );
}
! @list = grep { /(<\/?[pP][rR][eE]>)|($headerPatternDa)|($headerPatternSp)|($headerPatternHt)/ } @list;
my $insidePre = 0;
my $i = 0;
my $tabs = "";
my $anchor = "";
my $highest = 99;
foreach $line ( @list ) {
if( $line =~ /^.*<[pP][rR][eE]>.*$/ ) {
$insidePre = 1;
--- 1146,1171 ----
&TWiki::Store::readWebTopic( $web, $topicname ), $topicname, $web ) );
}
! @list = grep { /(<\/?[pP][rR][eE]>)|($headerPatternDa)|($headerPatternSp)|($headerPatternHt)|($headerPatternNum)/ } @list;
my $insidePre = 0;
+ # Header patterns based on '+++'
+ #$headerPatternDa = '^---+(\++|\#+)\s+(.+)\s*$'; # '---++ Header', '---## Header'
+
+ #David Weller: modification for Numbered Headers
+ # Header patterns based on '###'.
+ $headerPatternNum = '^---+(\#+)\s+(.+)\s*$'; # '---## Header'
+
+ #$headerPatternSp = '^\t(\++)\s+(.+)\s*$'; # ' ++ Header', ' + Header'
+ #$headerPatternHt = '^\s*(.+?)\s*'; # 'Header
my $i = 0;
my $tabs = "";
my $anchor = "";
my $highest = 99;
+
+ #David Weller: Numbered Header modification
+ my $tocIsNumbered;
+ #end Numbered Header Modification
+
foreach $line ( @list ) {
if( $line =~ /^.*<[pP][rR][eE]>.*$/ ) {
$insidePre = 1;
***************
*** 1154,1160 ****
}
if (!$insidePre) {
$level = $line ;
! if ( $line =~ /$headerPatternDa/ ) {
$level =~ s/$headerPatternDa/$1/go ;
$level = length $level;
$line =~ s/$headerPatternDa/$2/go ;
--- 1177,1192 ----
}
if (!$insidePre) {
$level = $line ;
! #David Weller: Numbered Header modification
! $tocIsNumbered = 0;
! if ( $line =~ /$headerPatternNum/ ) {
! $level =~ s/$headerPatternNum/$1/go ;
! $tocIsNumbered = 1;
! $level = length $level;
! $line =~ s/$headerPatternNum/$2/go ;
! $anchor = makeAnchorName( $line );
! #end Numbered Header Modification
! } elsif ( $line =~ /$headerPatternDa/ ) {
$level =~ s/$headerPatternDa/$1/go ;
$level = length $level;
$line =~ s/$headerPatternDa/$2/go ;
***************
*** 1172,1177 ****
--- 1204,1249 ----
$anchor = makeAnchorName( $line );
}
if( ( $line ) && ( $level <= $depth ) ) {
+
+ #David Weller: Numbered Header modification
+ my $levelArrayIndex = 0;
+ my $levelArrayValue = 0;
+
+ if ($tocIsNumbered) {
+ if (!$prevLevel) {
+ $prevLevel = $depth;
+ #populate a list to track the count of each level
+ @levelArray = ("x") x $level;
+ }
+
+ $levelArrayIndex = $level-1;
+ $levelArrayValue = $levelArray[$levelArrayIndex];
+
+ if ($level < $prevLevel) { #"x" out deeper values
+ for (my $i=$level;$i < $depth; $i++) {
+ $levelArray[$i] = "x";
+ }
+ }
+ if ($levelArrayValue eq "x") {
+ #our first visit to this level
+ $levelArray[$levelArrayIndex] = 0;
+ }
+ #Level should have scalar context by now
+ $levelArray[$levelArrayIndex]++;
+
+ $prevLevel = $level;
+
+ #now create the display string
+ my $numberedHeader = "";
+ for(my $i=0; $i < $level; $i++){
+ $numberedHeader .= $levelArray[$i] . ".";
+ }
+ #now slap everything together (including hard spaces)
+ $line = $numberedHeader . " " . $line;
+ }
+
+ #end Numbered header modification
+
$highest = $level if( $level < $highest );
$tabs = "";
for( $i=0 ; $i<$level ; $i++ ) {
***************
*** 1187,1193 ****
$line =~ s/([\s\(])([A-Z]+[a-z]+[A-Z]+[a-zA-Z0-9]*)/$1$2/go; # 'TopicName'
$line =~ s/([\s\(])([A-Z]{3,})/$1$2/go; # 'TLA'
# create linked bullet item
! $line = "$tabs* $line";
$result .= "\n$line";
}
}
--- 1259,1273 ----
$line =~ s/([\s\(])([A-Z]+[a-z]+[A-Z]+[a-zA-Z0-9]*)/$1$2/go; # 'TopicName'
$line =~ s/([\s\(])([A-Z]{3,})/$1$2/go; # 'TLA'
# create linked bullet item
!
! #David Weller: Numbered Header modification
! if ($tocIsNumbered) {
! $line = "$line
";
! } else {
! $line = "$tabs* $line";
! }
! #end Numbered Header Modification
!
$result .= "\n$line";
}
}
***************
*** 1688,1694 ****
# =========================
sub makeAnchorHeading
{
! my( $theText, $theLevel ) = @_;
# - Need to build ''
# type markup.
--- 1768,1774 ----
# =========================
sub makeAnchorHeading
{
! my( $theText, $theLevel, $levelChars ) = @_;
# - Need to build ''
# type markup.
***************
*** 1705,1710 ****
--- 1785,1839 ----
$hasAnchor = 1 if( $text =~ m/(^|[\s\(])([A-Z]{3,})/ );
$hasAnchor = 1 if( $text =~ m/(^|[\s\(])([A-Z]+[a-z0-9]*)\.([A-Z]+[a-z]+[A-Z]+[a-zA-Z0-9]*)/ );
$hasAnchor = 1 if( $text =~ m/(^|[\s\(])([A-Z]+[a-z]+[A-Z]+[a-zA-Z0-9]*)/ );
+
+
+ #David Weller: Numbered Header modification
+
+ my $depth = 6; #hardcoded value. TOC uses this param, but not this sub
+
+ # Need to modify $theText before letting header tags get written
+ # if the level chars are # signs
+
+ my $headerIsNumbered = 1 if ($levelChars =~ /^\#+/);
+
+ if ($headerIsNumbered) {
+ if (!$prevLevel) {
+ #TOC has already undef'ed prevLevel
+ $prevLevel = $depth;
+
+ #populate a list to track the count of each level
+ @levelArray = ("x") x $theLevel;
+ }
+
+ my $levelArrayIndex = $theLevel-1;
+ my $levelArrayValue = $levelArray[$levelArrayIndex];
+
+ if ($theLevel < $prevLevel) { #"x" out deeper values
+ for (my $i=$theLevel;$i < $depth; $i++) {
+ $levelArray[$i] = "x";
+ }
+ }
+ if ($levelArrayValue eq "x") {
+ #our first visit to this level
+ $levelArray[$levelArrayIndex] = 0;
+ }
+ #Level should have scalar context by now
+ $levelArray[$levelArrayIndex]++;
+
+ $prevLevel = $theLevel;
+
+ #now create the display string
+ my $numberedHeader = "";
+ for(my $i=0; $i < $theLevel; $i++){
+ $numberedHeader .= $levelArray[$i] . ".";
+ }
+ #now slap everything together (including hard spaces)
+ $theText = $numberedHeader . " " . $theText;
+
+ }
+ #end Numbered Header Modifications
+
+
if( $hasAnchor ) {
# FIXME: '
WikiName' has an
# empty tag, which is not HTML conform
***************
*** 1967,1977 ****
# Headings
# '...
' HTML rule
! s/$headerPatternHt/&makeAnchorHeading($2,$1)/geoi;
# '\t+++++++' rule
! s/$headerPatternSp/&makeAnchorHeading($2,(length($1)))/geo;
! # '----+++++++' rule
! s/$headerPatternDa/&makeAnchorHeading($2,(length($1)))/geo;
# Horizontal rule
s/^---+/
/o;
--- 2096,2108 ----
# Headings
# '...
' HTML rule
! s/$headerPatternHt/&makeAnchorHeading($2,$1,$1)/geoi;
# '\t+++++++' rule
! s/$headerPatternSp/&makeAnchorHeading($2,(length($1)),$1)/geo;
! # '----+++++++'
! s/$headerPatternDa/&makeAnchorHeading($2,(length($1)),$1)/geo;
! # '----######' rule
! s/$headerPatternNum/&makeAnchorHeading($2,(length($1)),$1)/geo;
# Horizontal rule
s/^---+/
/o;