analogy between html markup and typedlist

FM

Principle

Never thought about that fact ? Nested Tcl scripts look like markup documents. Let's compare :

html file :
<html>
   <head>
   </head>
   <body>
      <div id="1">
         <p></p>
      </div>
      <div id="2">
         <ul>
             <li></li>
             <li></li>
         </ul>
      </div>
   </body>
</html>

Nested Tcl script :

html --\
  [head --]\
  [body --
     [div -- [attributes id 1]\
        [p --]\
     ]\
     [div -- [attributes id 2]\
        [ul --\
           [li --]\
           [li --]\
        ]\
     ]\
  ]

NEM And they both look like SEXPs...

Lars H, 2010-02-03: And for a more Tcl-native counterpart, there is data is code, which differs from your example mostly in using {…} where you have […]. This has the advantage of leveraging the power of list and friends for building these structures, making serialisation trivial. (FM reports below that he hasn't yet gotten serialisation into […] syntax to work correctly.) TDL might also be relevant.

Here's an attempt to deal with this fact using typedlist. Only p, h*, b, i, img, s, body markup done in this example.

implementation

package require img::jpeg
package require base64

namespace eval htnstw {}
namespace eval htnstw::tag {
    # basic configuration
    foreach tl [set tags [list body h1 h2 h3 h4 h5 h6 h7 p img a b i u s ul li ol span &]] {
        typedlist create $tl
    }

    variable Init [dict create \
                       body [body -background white \
                                 -bgstipple {} \
                                 -borderwidth 0 \
                                 -elide 0 \
                                 -fgstipple {} \
                                 -font fontName \
                                 -foreground black \
                                 -justify left \
                                 -lmargin1 10 \
                                 -lmargin2 10 \
                                 -offset 0 \
                                 -overstrike 0 \
                                 -relief flat \
                                 -rmargin 10 \
                                 -spacing1 20 \
                                 -spacing2 0 \
                                 -spacing3 30 \
                                 -tabs [] \
                                 -tabstyle [] \
                                 -underline 0 \
                                 -wrap word]\
                       h1 [h1 -background white \
                               -bgstipple {} \
                               -borderwidth 0 \
                               -elide 0 \
                               -fgstipple {} \
                               -font fontName \
                               -foreground black \
                               -justify left \
                               -lmargin1 0 \
                               -lmargin2 50 \
                               -offset 0 \
                               -overstrike 0 \
                               -relief flat \
                               -rmargin 0 \
                               -spacing1 20 \
                               -spacing2 0 \
                               -spacing3 30 \
                               -tabs [] \
                               -tabstyle [] \
                               -underline 0 \
                               -wrap word]\
                       h2 [h2 -background white \
                               -bgstipple {} \
                               -borderwidth 0 \
                               -elide 0 \
                               -fgstipple {} \
                               -font fontName \
                               -foreground black \
                               -justify left \
                               -lmargin1 0 \
                               -lmargin2 50 \
                               -offset 0 \
                               -overstrike 0 \
                               -relief flat \
                               -rmargin 0 \
                               -spacing1 20 \
                               -spacing2 0 \
                               -spacing3 30 \
                               -tabs [] \
                               -tabstyle [] \
                               -underline 0 \
                               -wrap word]\
                       h3 [h3 -background white \
                               -bgstipple {} \
                               -borderwidth 0 \
                               -elide 0 \
                               -fgstipple {} \
                               -font fontName \
                               -foreground black \
                               -justify left \
                               -lmargin1 0 \
                               -lmargin2 50 \
                               -offset 0 \
                               -overstrike 0 \
                               -relief flat \
                               -rmargin 0 \
                               -spacing1 20 \
                               -spacing2 0 \
                               -spacing3 30 \
                               -tabs [] \
                               -tabstyle [] \
                               -underline 0 \
                               -wrap word]\
                       h4 [h4 -background white \
                               -bgstipple {} \
                               -borderwidth 0 \
                               -elide 0 \
                               -fgstipple {} \
                               -font fontName \
                               -foreground black \
                               -justify left \
                               -lmargin1 0 \
                               -lmargin2 50 \
                               -offset 0 \
                               -overstrike 0 \
                               -relief flat \
                               -rmargin 0 \
                               -spacing1 20 \
                               -spacing2 0 \
                               -spacing3 30 \
                               -tabs [] \
                               -tabstyle [] \
                               -underline 0 \
                               -wrap word]\
                       h5 [h5 -background white \
                               -bgstipple {} \
                               -borderwidth 0 \
                               -elide 0 \
                               -fgstipple {} \
                               -font fontName \
                               -foreground black \
                               -justify left \
                               -lmargin1 0 \
                               -lmargin2 50 \
                               -offset 0 \
                               -overstrike 0 \
                               -relief flat \
                               -rmargin 0 \
                               -spacing1 20 \
                               -spacing2 0 \
                               -spacing3 30 \
                               -tabs [] \
                               -tabstyle [] \
                               -underline 0 \
                               -wrap word]\
                       h6 [h6 -background white \
                               -bgstipple {} \
                               -borderwidth 0 \
                               -elide 0 \
                               -fgstipple {} \
                               -font fontName \
                               -foreground black \
                               -justify left \
                               -lmargin1 0 \
                               -lmargin2 50 \
                               -offset 0 \
                               -overstrike 0 \
                               -relief flat \
                               -rmargin 0 \
                               -spacing1 20 \
                               -spacing2 0 \
                               -spacing3 30 \
                               -tabs [] \
                               -tabstyle [] \
                               -underline 0 \
                               -wrap word]\
                       h7 [h7 -background white \
                               -bgstipple {} \
                               -borderwidth 0 \
                               -elide 0 \
                               -fgstipple {} \
                               -font fontName \
                               -foreground black \
                               -justify left \
                               -lmargin1 0 \
                               -lmargin2 50 \
                               -offset 0 \
                               -overstrike 0 \
                               -relief flat \
                               -rmargin 0 \
                               -spacing1 20 \
                               -spacing2 0 \
                               -spacing3 30 \
                               -tabs [] \
                               -tabstyle [] \
                               -underline 0 \
                               -wrap word]\
                       p [p -background white \
                              -bgstipple {} \
                              -borderwidth 0 \
                              -elide 0 \
                              -fgstipple {} \
                              -font fontName \
                              -foreground black \
                              -justify left \
                              -lmargin1 30 \
                              -lmargin2 0 \
                              -offset 0 \
                              -overstrike 0 \
                              -relief flat \
                              -rmargin 0 \
                              -spacing1 0 \
                              -spacing2 0 \
                              -spacing3 0 \
                              -tabs [] \
                              -tabstyle [] \
                              -underline 0 \
                              -wrap word]\
                       img [img -background white \
                                -bgstipple {} \
                                -borderwidth 0 \
                                -elide 0 \
                                -fgstipple {} \
                                -font fontName \
                                -foreground black \
                                -justify left \
                                -lmargin1 0 \
                                -lmargin2 0 \
                                -offset 0 \
                                -overstrike 0 \
                                -relief flat \
                                -rmargin 0 \
                                -spacing1 20 \
                                -spacing2 0 \
                                -spacing3 20 \
                                -tabs [] \
                                -tabstyle [] \
                                -underline 0 \
                                -wrap word]\
                       a [a -background white \
                              -bgstipple {} \
                              -borderwidth 0 \
                              -elide 0 \
                              -fgstipple {} \
                              -font fontName \
                              -foreground blue \
                              -justify left \
                              -lmargin1 0 \
                              -lmargin2 0 \
                              -offset 0 \
                              -overstrike 0 \
                              -relief flat \
                              -rmargin 0 \
                              -spacing1 0 \
                              -spacing2 0 \
                              -spacing3 0 \
                              -tabs [] \
                              -tabstyle [] \
                              -underline 1 \
                              -wrap word]\
                       b [b -background white \
                              -bgstipple {} \
                              -borderwidth 0 \
                              -elide 0 \
                              -fgstipple {} \
                              -font fontName \
                              -foreground black \
                              -justify left \
                              -lmargin1 0 \
                              -lmargin2 0 \
                              -offset 0 \
                              -overstrike 0 \
                              -relief flat \
                              -rmargin 0 \
                              -spacing1 0 \
                              -spacing2 0 \
                              -spacing3 0 \
                              -tabs [] \
                              -tabstyle [] \
                              -underline 0 \
                              -wrap word]\
                       i [i -background white \
                              -bgstipple {} \
                              -borderwidth 0 \
                              -elide 0 \
                              -fgstipple {} \
                              -font fontName \
                              -foreground black \
                              -justify left \
                              -lmargin1 0 \
                              -lmargin2 0 \
                              -offset 0 \
                              -overstrike 0 \
                              -relief flat \
                              -rmargin 0 \
                              -spacing1 0 \
                              -spacing2 0 \
                              -spacing3 0 \
                              -tabs [] \
                              -tabstyle [] \
                              -underline 0 \
                              -wrap word]\
                       u [u -background white \
                              -bgstipple {} \
                              -borderwidth 0 \
                              -elide 0 \
                              -fgstipple {} \
                              -font fontName \
                              -foreground black \
                              -justify left \
                              -lmargin1 0 \
                              -lmargin2 0 \
                              -offset 0 \
                              -overstrike 0 \
                              -relief flat \
                              -rmargin 0 \
                              -spacing1 0 \
                              -spacing2 0 \
                              -spacing3 0 \
                              -tabs [] \
                              -tabstyle [] \
                              -underline 0 \
                              -wrap word]\
                       s [s -background white \
                              -bgstipple {} \
                              -borderwidth 0 \
                              -elide 0 \
                              -fgstipple {} \
                              -font fontName \
                              -foreground black \
                              -justify left \
                              -lmargin1 0 \
                              -lmargin2 0 \
                              -offset 0 \
                              -overstrike 1 \
                              -relief flat \
                              -rmargin 0 \
                              -spacing1 0 \
                              -spacing2 0 \
                              -spacing3 0 \
                              -tabs [] \
                              -tabstyle [] \
                              -underline 0 \
                              -wrap word]\
                       ul [ul -background white \
                               -bgstipple {} \
                               -borderwidth 0 \
                               -elide 0 \
                               -fgstipple {} \
                               -font fontName \
                               -foreground black \
                               -justify left \
                               -lmargin1 0 \
                               -lmargin2 50 \
                               -offset 0 \
                               -overstrike 0 \
                               -relief flat \
                               -rmargin 0 \
                               -spacing1 20 \
                               -spacing2 0 \
                               -spacing3 30 \
                               -tabs [] \
                               -tabstyle [] \
                               -underline 0 \
                               -wrap word]\
                       li [li -background white \
                               -bgstipple {} \
                               -borderwidth 0 \
                               -elide 0 \
                               -fgstipple {} \
                               -font fontName \
                               -foreground black \
                               -justify left \
                               -lmargin1 0 \
                               -lmargin2 50 \
                               -offset 0 \
                               -overstrike 0 \
                               -relief flat \
                               -rmargin 0 \
                               -spacing1 20 \
                               -spacing2 0 \
                               -spacing3 30 \
                               -tabs [] \
                               -tabstyle [] \
                               -underline 0 \
                               -wrap word]\
                       ol [ol -background white \
                               -bgstipple {} \
                               -borderwidth 0 \
                               -elide 0 \
                               -fgstipple {} \
                               -font fontName \
                               -foreground black \
                               -justify left \
                               -lmargin1 0 \
                               -lmargin2 50 \
                               -offset 0 \
                               -overstrike 0 \
                               -relief flat \
                               -rmargin 0 \
                               -spacing1 20 \
                               -spacing2 0 \
                               -spacing3 30 \
                               -tabs [] \
                               -tabstyle [] \
                               -underline 0 \
                               -wrap word]\
                       span [span -background white \
                                 -bgstipple {} \
                                 -borderwidth 0 \
                                 -elide 0 \
                                 -fgstipple {} \
                                 -font fontName \
                                 -foreground black \
                                 -justify left \
                                 -lmargin1 0 \
                                 -lmargin2 50 \
                                 -offset 0 \
                                 -overstrike 0 \
                                 -relief flat \
                                 -rmargin 0 \
                                 -spacing1 20 \
                                 -spacing2 0 \
                                 -spacing3 30 \
                                 -tabs [] \
                                 -tabstyle [] \
                                 -underline 0 \
                                 -wrap word]]

    
    variable Font [dict create \
                       body [font create body -family Arial -size 12 -weight normal -slant roman -underline 0 -overstrike 0]\
                       h1 [font create h1 -family Arial -size 28 -weight bold -slant roman -underline 0 -overstrike 0]\
                       h2 [font create h2 -family Arial -size 25 -weight bold -slant roman -underline 0 -overstrike 0]\
                       h3 [font create h3 -family Arial -size 22 -weight bold -slant roman -underline 0 -overstrike 0]\
                       h4 [font create h4 -family Arial -size 19 -weight bold -slant roman -underline 0 -overstrike 0]\
                       h5 [font create h5 -family Arial -size 17 -weight bold -slant roman -underline 0 -overstrike 0]\
                       h6 [font create h6 -family Arial -size 15 -weight bold -slant roman -underline 0 -overstrike 0]\
                       h7 [font create h7 -family Arial -size 13 -weight bold -slant roman -underline 0 -overstrike 0]\
                       p [font create p -family Arial -size 12 -weight normal -slant roman -underline 0 -overstrike 0]\
                       img [font create img]\
                       a [font create a -family Helvetica -size 12 -weight bold -slant roman -underline 1 -overstrike 0]\
                       b [font create b -weight bold]\
                       i [font create i -slant italic]\
                       u [font create u -underline 1]\
                       s [font create s -overstrike 1]\
                       ul [font create ul -family Arial -size 12 -weight normal -slant roman -underline 0 -overstrike 0]\
                       li [font create li -family Arial -size 12 -weight normal -slant roman -underline 0 -overstrike 0]\
                       ol [font create ol -family Arial -size 12 -weight normal -slant roman -underline 0 -overstrike 0]]
    
    variable knownFont [list]

    proc merge {w args} {
        variable Init
        variable Font
        variable knownFont

        set args [split $args ", "]
        set D [dict create]
        set F [dict create]
        lassign {0 0 0 0 0 0} lmargin1 lmargin2 rmargin spacing1 spacing2 spacing3
        foreach tag $args {
            # 1. mélanger les configurations des tags
            # Autre possibilité : cumuler certaines valeurs (i.e valeur relative)
            # ex: -lmargin1(body) 10, -lmargin1(p) 20 => -lmargin1(body p) 10+20=30
            if {$D ne ""} {
                set lmargin1 [dict get $D -lmargin1]
                set lmargin2 [dict get $D -lmargin2]
                set rmargin [dict get $D -rmargin]
                set spacing1 [dict get $D -spacing1]
                set spacing2 [dict get $D -spacing2]
                set spacing3 [dict get $D -spacing3]
            }
            set D [dict merge $D [[dict get $Init [$tag type]] get]]
            # cumul des marges gauches et droite
            dict set D -lmargin1 [expr {[dict get $D -lmargin1]+$lmargin1}]
            dict set D -lmargin2 [expr {[dict get $D -lmargin2]+$lmargin2}]
            dict set D -rmargin [expr {[dict get $D -rmargin]+$rmargin}]
            expr {[dict get $D -spacing1] eq 0 ? [dict set D -spacing1 $spacing1] : ""}
            expr {[dict get $D -spacing2] eq 0 ? [dict set D -spacing2 $spacing2] : ""}
            expr {[dict get $D -spacing3] eq 0 ? [dict set D -spacing3  $spacing3] : ""}
            
            # 2. mélanger les polices
            if {$F ne ""} {
                # sauvegarde de l'état précédent
                set family [dict get $F -family]
                set size [dict get $F -size]
                set weight [dict get $F -weight] 
                set slant [dict get $F -slant]
                set underline [dict get $F -underline] 
                set overstrike [dict get $F -overstrike]
                set F [dict merge $F [font conf [dict get $Font [$tag type]]]]
                expr {$weight eq "bold" ?  [ dict set F -weight bold]: ""}
                expr {$slant eq "italic" ?  [ dict set F -slant italic] : ""}
                expr {$underline eq "1" ?  [ dict set F -underline 1] : ""}
                expr {$overstrike eq "1" ?  [ dict set F -overstrike 1] : ""}
                expr {[dict get $F -family] eq "" ?  [ dict set F -family $family]: ""}
                expr {[dict get $F -size] eq 0 ?  [ dict set F -size $size]: ""}
                
            } else {
                if {[$tag type] ne "img"} {
                    set F [font conf [dict get $Font [$tag type]]]
                }
            }
            lappend TAGS $tag
        }
        if {[join $TAGS ,] ni $knownFont} {
            # Crée une police à chaque fois, créer un dictionnaire.
            font create [join $TAGS ,] {*}$F
            lappend knownFont [join $TAGS ,]
        }
        dict set D -font [join $TAGS ,]

        $w tag conf [join $TAGS ,] {*}$D
        return [join $TAGS ,]
    }

}

namespace eval htnstw {
    # parser

    foreach tl [set tags [list a b i tag u img p body h1 h2 h3 h4 h5 h6 h7 ul li ol]] {        
        typedlist create ::htnstw::$tl
    }
    # Attributs de balise
    typedlist create ::htnstw::&
    array set IMAGES {}
    namespace export *
    namespace ensemble create
    array set Tags {}
}

proc ::htnstw::isHtnstwTag {e} {
    if {(![catch {info object class $e}]) \
            && ([info object class $e] eq "::typedlist") \
            && ([set Type [$e type]] in $::htnstw::tags)} {
        return $Type
    } else {
        return "0"
    }
}
proc ::htnstw::isHtnstwAttributes {e} {
    if {(![catch {info object class $e}]) \
            && ([info object class $e] eq "::typedlist") \
            && ([set Type [$e type]] eq "&")} {
        return 1
    } else {
        return 0
    }
}

proc ::htnstw::insert {w index ns} {
    variable
    if {!([winfo class $w] eq "Text" || [winfo class $w] eq "SText") } {
        puts stderr "bad widget type [winfo class $w] for $w"
        return
    }
    if {[::htnstw::isHtnstwTag [set Body [eval $ns]]] eq "body"} {
        set ::htnstw::Tag($w) $Body
        parse $w $index [$Body get] {} $Body
    }
}

proc ::htnstw::parse {w index L {lastChar { }} {upTag {}}} {
#    update
    foreach e $L {
        if {[::htnstw::isHtnstwTag $e] ne "0" || [::htnstw::isHtnstwAttributes $e] ne "0"} {
            lappend ::htnstw::Tag($w) $e
        }
        if {[::htnstw::isHtnstwTag $e] eq "h1"} {
            set index [parse $w $index [$e get] \n [tag::merge $w {*}$upTag $e]]
        } elseif {[::htnstw::isHtnstwTag $e] eq "h2"} {
            set index [parse $w $index [$e get] \n [tag::merge $w {*}$upTag $e]]
        } elseif {[::htnstw::isHtnstwTag $e] eq "h3"} {
            set index [parse $w $index [$e get] \n [tag::merge $w {*}$upTag $e]]
        } elseif {[::htnstw::isHtnstwTag $e] eq "h4"} {
            set index [parse $w $index [$e get] \n [tag::merge $w {*}$upTag $e]]
        } elseif {[::htnstw::isHtnstwTag $e] eq "h5"} {
            set index [parse $w $index [$e get] \n [tag::merge $w {*}$upTag $e]]
        } elseif {[::htnstw::isHtnstwTag $e] eq "h6"} {
            set index [parse $w $index [$e get] \n [tag::merge $w {*}$upTag $e]]
        } elseif {[::htnstw::isHtnstwTag $e] eq "h7"} {
            set index [parse $w $index [$e get] \n [tag::merge $w {*}$upTag $e]]
        } elseif {[::htnstw::isHtnstwTag $e] eq "p"} {
            set index0 $index
            set index [parse $w $index [$e get] \n [tag::merge $w {*}$upTag $e]]
        } elseif {[::htnstw::isHtnstwTag $e] eq "b"} {
            set index [parse $w $index [$e get] { } [tag::merge $w {*}$upTag $e]]
        } elseif {[::htnstw::isHtnstwTag $e] eq "i"} {
            set index [parse $w $index [$e get] { } [tag::merge $w {*}$upTag $e]]
        } elseif {[::htnstw::isHtnstwTag $e] eq "u"} {
            set index [parse $w $index [$e get] { } [tag::merge $w {*}$upTag $e]]
        } elseif {[::htnstw::isHtnstwTag $e] eq "img"} {
            set src ""
            foreach img [$e get] {
                if {[::htnstw::isHtnstwAttributes $img]} {
                    lappend ::htnstw::Tag($w) $img
                    set D [$img get]
                    dict with D {}
                    if {$src ne ""} {
                        $w insert $index \n
                        $w image create $index+1c -image [set image [image create photo -file $src]] -align center
                        $w insert $index+2c \n
                        set index [$w index "$index + 2l"]
                        set ::htnstw::IMAGES($image) $src 
                    } elseif {$data ne ""} {
                        $w insert $index \n
                        $w image create $index+1c -image [set image [image create photo -data $data]] -align center
                        $w insert $index+2c \n
                        set index [$w index "$index + 2l"]
                        set ::htnstw::IMAGES(data,$image) $data
                        set ::htnstw::IMAGES(file,$image) {}
                    }
                }
            }
        } elseif {[::htnstw::isHtnstwAttributes $e]} {
            if {[[lindex [split $upTag ,] end] type] eq "htnstw::tag::body"} {
                $w conf {*}[$e get]
            } elseif {[[lindex [split $upTag ,] end] type] eq "htnstw::tag::a"} {
                set href [dict get [$e get] href]
                # mettre en place des tags individualisés, héritant de certaines caractéristiques, mais en modifiant d'autres.
                
            } else {
                $w tag conf $upTag {*}[$e get]
            }
        } elseif {[::htnstw::isHtnstwTag $e] eq "a"} {
            # ceux-là ne désirent pas le mal, qui ne le connaissent pas comme mal
            
        } else {
            if {$e eq "\\"} {
                # il faudrait connaître le nombre de tag
                $w delete $index
                set index [$w index [list $index - 1 char]]
            } else {
                $w insert [$w index $index+1c] $e\  $upTag
                set index [$w index [list $index + [expr {[string length $e]+1}] chars]]
            }
        }
    }
    $w insert [$w index $index+1c] $lastChar  $upTag
    set index [$w index $index+1c]
    return $index
}



proc ::htnstw::dump {w} {
    set ns {body -- }
    # Supprimer toute sélection au préalable
    $w tag remove sel 0.0 end
    # This RE is just a character class for everything "bad"
    set RE {[][{};#\\\$\n\r\u0080-\uffff]}
                       
    # We will substitute with a fragment of Tcl script in brackets
    set substitution {[format \\\\u%04x [scan "\\&" %c]]}

    # Logiquement chaque caractère est taggé une fois
    foreach {key value index} [$w dump 1.0 end] {
        if {$key eq "text"} {

            # Now we apply the substitution to get a subst-string that
            # will perform the computational parts of the conversion.
            set text [subst [regsub -all $RE [string trim $value] $substitution]]
            append ns $text\ 
        } elseif {$key eq "tagon"} {
            set li [lindex [split $value ,] end]
            if {[set Type [isHtnstwTag $li]] ne ""} {
                append ns \[[namespace tail $Type]\ --\ 

                if {[isHtnstwAttributes [set e [lindex [$li get] 0]]]} {
                    append ns \[&\ --\ [set conf [$e get]]\]\ 
                    }
                }
        } elseif {$key eq "tagoff"} {
            set li [lindex [split $value ,] end]
            if {[set Type [isHtnstwTag $li]] ne ""} {
                append ns \]\   
            }
        } elseif {$key eq "image"} {
            set src $::htnstw::IMAGES(file,$value)
            set data $::htnstw::IMAGES(data,$value)
            if {$src ne {}} {
                set fileID [open $src RDONLY]
                fconfigure $fileID -translation binary
                set rawData [read $fileID]
                close $fileID
                if {$rawData ne {}} {
                    set Data [base64::encode $rawData]
                    append ns \[img\ --\ \[&\ --\ src\ \"$src\"\ data\ \{\n[string trim $Data]\n\}\]\]\ 
                }
            } elseif {$data ne {}} {
                 append ns \[img\ --\ \[&\ --\ src\ \"$src\"\ data\ \{\n[string trim $data]\n\}\]\]\ 
            }
        } elseif {$key eq "mark"} {
        } elseif {$key eq "window"} {
        }
    }
    return $ns
}

proc ::htnstw::save {w file} {
    set fid [open $file "w"]
    fconfigure $fid -encoding binary
    puts $fid [htnstw::dump $w]
    close $fid
}

Test

# Let's try it with this file (call it for instance sncf.htnstw)

body -- \
    [h1 [& -background AntiqueWhite4 -foreground orange] \
         La SNCF tire le signal d'alarme sur la viabilité financière des TGV.]\
    [p -- [& -background \#eeeecc] \
         [i -- [& -background \#eeeecc -justify right] 18/01/2010 17:53]]\
    [p -- [set Pconf [& -background AntiqueWhite -foreground \#550000]]\
         L'existence d'un plan de suppressions de dessertes TGV a été démentie mais l'activité grande vitesse souffre d'une baisse de rentabilité]\
    [p -- $Pconf\
         [img [& -- data {
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}]]]\
    [p -- $Pconf À l'automne 2009, le directeur « stratégie et finances » de la [set SNCF [b -- [& -background AntiqueWhite] [i -- [& -background AntiqueWhite] SNCF]]] \\ , David Azéma, avait alerté sur les difficultés économiques de la grande vitesse : « Sur la base des tarifs 2009, 20 % des TGV dégagent déjà des pertes . Sur la base des tarifs 2011, 30 % de nos TGV afficheront des résultats négatifs dans deux ans. » Le message de la $SNCF est clair. Si la grande vitesse est toujours l'activité « vache à lait » de l'opérateur ferroviaire, la bête souffre de plus en plus !]\
    [h2 [& -background AntiqueWhite2] La SNCF incrimine Réseau ferré de France]\
    [p $Pconf Un responsable de la SNCF indique que de tels ajustements se produisent chaque année. « C'est le rôle des analystes de procéder à ces modifications régulières, dit-il. Ils regardent ainsi quelles sont les lignes et les horaires les plus et les moins fréquentées, quelles sont les plus et les moins rentables »]

screenshot

Open this .htnstw file with the editor found at megawidget framework with tclOO (1), I get http://img62.imageshack.us/img62/5752/sncf.png

But, there is a problem when the file is saved. It get corrupted. Not much, but too much. There is a problem in the dump routine when dealing with markups.

PYK 2014-11-06: I made a small change above to eliminate what looked like extra newlines being created in the output. That change, along with the changes I just made to megawidget framework with tclOO (1), remedy the corruption that I observed. FM, do you have any additional examples that illustrate other data corruption that may be happening?