Updated 2011-11-29 11:53:43 by RLE

Richard Suchenwirth 2005-10-04 - "Ellipsis" is Greek for "left out". More specifically, it's the name of the character(s) "..." (three ASCII periods, or fancier the Unicode \u2026) indicating that something was left out. When a string is truncated to fit into a given length, the following proc adds an ellipsis where necessary:
 proc string'limit {str length} {
   expr {[string length $str]>$length? 
        "[string range $str 0 [incr length -4]]..."
   : $str}
 }
 % string'limit hello 10
 hello
 string'limit "hello long string" 10
 hello l...

escargo 4 Oct 2005 - There are typographic rules for the use of ellipsis that make its use less than straightforward [1].

JH - The string replace command is designed to do the ellipsis without otherwise modifying the string. Just use:
 set str [string replace $str $length end ...]

If the string is already shorter than $length, it will not be touched.

There is the end case where [string length $str] > $length, but [string length $str] < $length + 3. Adding the ellipsis might make the string longer.

JMN - the little overtype package also supports the ellipsis.
 %package require overtype
 %set field1 [string repeat " " 5]
 %puts [overtype::left -ellipsis 1 $field1 1234567]nextfieldstring
 12...nextfieldstring

It too has an edge case where if the field is shorter than an ellipsis the result will contain just the ellipsis or part thereof.
 %set field1 [string repeat " " 2]
 %puts [overtype::left -ellipsis 1 $field1 1234567]nextfieldstring
 ..nextfieldstring