{str {state {}}} { if {$state eq ""} { array set f [empty_formatting] } else { array set f $state } set f(c) [set f(o) 0] switch -- [string index $str 0] [list \ \003 { regexp {^\003((\d*)(,(\d*))?)?} $str {} a b {} c if {$a eq ""} { set f(fg) [set f(bg) -1] set f(c) 1 } if {!($b eq "")} { set f(fg) $b } if {!($c eq "")} { set f(bg) $c } } \002 { set f(b) [expr !$f(b)] } \037 { set f(u) [expr !$f(u)] } \026 { set f(r) [expr !$f(r)] } \017 { set f(o) 1 }] array get f }