*** /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 '

text

' # type markup. --- 1768,1774 ---- # ========================= sub makeAnchorHeading { ! my( $theText, $theLevel, $levelChars ) = @_; # - Need to build '

text

' # 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;