# -*- tcl -*- # # $Id: toc.wiki,v 1.6 2005/09/28 04:51:19 andreas_kupries Exp $ # # Engine to convert a doctoc document into Wiki markup. # # Copyright (c) 2003 Andreas Kupries # Freely redistributable. # ###################################################################### dt_source _toc_common.tcl ; # Shared code ###################################################################### proc toc_postprocess {wiki} { # Strip empty lines out of the generated wiki source # and trim leading blanks, except in code samples. # set lines [list] foreach line [split $wiki \n] { if {[string match " |*" $line]} { # Verbatim / example lappend lines [string trimright $line] } elseif {[string match ". *" $line]} { # Verbatim / regular lappend lines [string range [string trimright $line] 1 end] } elseif {[string match " \* *" $line]} { # Itemized lists. lappend lines [string map {[ [[ ] ]]} [string trimright $line]] } elseif {[string match " 1. *" $line]} { # Enumerated lists lappend lines [string map {[ [[ ] ]]} [string trimright $line]] } elseif {[regexp "^ (\[^:\]): " $line]} { # Definition list lappend lines [string map {[ [[ ] ]]} [string trimright $line]] } elseif {[string match " *" $line]} { # Unwanted indentation lappend lines [string map {[ [[ ] ]]} [string trim $line]] } else { # Everything else lappend lines [string map {[ [[ ] ]]} [string trimright $line]] } } set wiki [join $lines \n]\n regsub {^[ ]+} $wiki {} wiki return $wiki } proc fmt_plain_text {text} {if {$text != {}} {return \n} else {return {}}} ################################################################ ## Backend for wiki markup proc fmt_toc_begin {label title} {return "Table of Contents '''$label'''\n'''[string trim $title]'''"} proc fmt_toc_end {} {return {}} proc fmt_division_start {title symfile} {return '''[string trim $title]'''} proc fmt_division_end {} {return {}} proc fmt_item {file label desc} {return " \[$label\]: $file -- $desc"} proc fmt_comment {text} {return {}} ################################################################