wrap_string input { threshold "80" }What it does:
wraps a string to be no wider than 80 columns by inserting line breaksDefined in: /web/philip/packages/acs-core/utilities-procs.tcl
Source code:
set result_rows [list] set start_of_line_index 0 while 1 { set this_line [string range $input $start_of_line_index [expr $start_of_line_index + $threshold - 1]] if { $this_line == "" } { return [join $result_rows "\n"] } set first_new_line_pos [string first "\n" $this_line] if { $first_new_line_pos != -1 } { # there is a newline lappend result_rows [string range $input $start_of_line_index [expr $start_of_line_index + $first_new_line_pos - 1]] set start_of_line_index [expr $start_of_line_index + $first_new_line_pos + 1] continue } if { [expr $start_of_line_index + $threshold + 1] >= [string length $input] } { # we're on the last line and it is < threshold so just return it lappend result_rows $this_line return [join $result_rows "\n"] } set last_space_pos [string last " " $this_line] if { $last_space_pos == -1 } { # no space found! Try the first space in the whole rest of the string set next_space_pos [string first " " [string range $input $start_of_line_index end]] set next_newline_pos [string first "\n" [string range $input $start_of_line_index end]] if {$next_space_pos == -1} { set last_space_pos $next_newline_pos } elseif {$next_space_pos < $next_newline_pos} { set last_space_pos $next_space_pos } else { set last_space_pos $next_newline_pos } if { $last_space_pos == -1 } { # didn't find any more whitespace, append the whole thing as a line lappend result_rows [string range $input $start_of_line_index end] return [join $result_rows "\n"] } } # OK, we have a last space pos of some sort set real_index_of_space [expr $start_of_line_index + $last_space_pos] lappend result_rows [string range $input $start_of_line_index [expr $real_index_of_space - 1]] set start_of_line_index [expr $start_of_line_index + $last_space_pos + 1] }