Posted to tcl by dbohdan at Mon Mar 23 09:06:59 GMT 2015view pretty

proc sla script {
    set res {}
    set parts {}
    foreach part [split $script \n] {
        lappend parts $part
        set part [join $parts \n]
        #add the newline that was stripped because it can make a difference
        if {[info complete $part\n]} {
            set parts {}
            set part [string trim $part]
            if {$part eq {}} {
                continue
            }
            if {[string index $part 0] eq {#}} {
                continue
            }
            # A hack to ensure $part is byte-compiled.
            set x [apply "{} { uplevel 2 {list $part} }"]
            lappend res {*}$x
        }
    }
    if {$parts ne {}} {
        error [list {incomplete parts} [join $parts]]
    }
    return $res
}