set state Z set Other "" proc ampize t { regsub -all {&} $t {\&} t regsub -all {<} $t {\<} t regsub -all {>} $t {\>} t regsub -all {[""]} $t {\"} t regsub -all {['']} $t {\'} t set t } while {[gets stdin buf]>=0} { if { $state == "PATTERN" } { set n [llength $buf] set Selector "" for {set i 0} {$i<$n} {incr i 2} { append Selector [lindex $buf $i] " " } set state CODE } elseif {[regexp {^[!]([[:alnum:]]+( class)?) methodsFor: '([^']*)'} $buf - cls - cat]} { # method def set Cls "$cls {$cat}" #set Cat $cat set Code "" set state PATTERN } elseif {[regexp {^[!]?([[:alnum:]]+) (subclass|commentStamp): } $buf - cls]} { # class def set state OTHER lappend Other ----------------------------------------------------------------------------- } elseif {[regexp {^[!]} $buf]} { # other stuff set state Z } if { $state=="OTHER" } { lappend Other $buf } if { $state=="CODE" } { upvar #0 METH__$Selector a lappend a($Cls) $buf } puts "" } puts
foreach line $Other {
  puts [ampize $line]
}
puts 
puts
foreach sel [lsort [info glob METH__*]] { upvar #0 $sel a set selector [string range $sel 6 end] puts
puts "

$selector

" puts
puts
foreach cls [lsort [array names a]] { puts
puts "$cls" puts
puts foreach t $a($cls) { puts [ampize $t] } puts puts
} puts
puts
} puts