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

  1. proc sla script {
  2. set res {}
  3. set parts {}
  4. foreach part [split $script \n] {
  5. lappend parts $part
  6. set part [join $parts \n]
  7. #add the newline that was stripped because it can make a difference
  8. if {[info complete $part\n]} {
  9. set parts {}
  10. set part [string trim $part]
  11. if {$part eq {}} {
  12. continue
  13. }
  14. if {[string index $part 0] eq {#}} {
  15. continue
  16. }
  17. # A hack to ensure $part is byte-compiled.
  18. set x [apply "{} { uplevel 2 {list $part} }"]
  19. lappend res {*}$x
  20. }
  21. }
  22. if {$parts ne {}} {
  23. error [list {incomplete parts} [join $parts]]
  24. }
  25. return $res
  26. }
  27.