Posted to tcl by sebres at Tue Feb 02 20:18:43 GMT 2021view pretty

interp create -safe chatint
chatint eval {

  proc m {tm nick msg} {
    upvar _last_date ld _last_known lk;
    if {[info exists lk] && $tm < $lk} return;
    set lk $tm
    set tm [clock scan $tm -format "%Y-%m-%dT%H:%M:%S%Z"];
    set d [clock format $tm -format %x];
    if {![info exists ld] || $ld ne $d} {puts "\n== $d [string repeat = 20]\n"; set ld $d};
    if {$nick eq "" && [regexp {^\S+ has (?:left|become available)$} $msg]} return;
    if {[regexp {^i.chain$} $nick]} {
      if {[regexp {^\*{3} \S+ (?:joins|leaves)$} $msg]} return; 
      regexp {^<([^>]+)> (.*)$} $msg _ nick msg
    }
    set pref "[clock format $tm -format %X] | [format %15s $nick]"
    set pre2 "\n[string repeat " " [string length $pref]] | "
    regsub -all {\n} $msg $pre2 msg
    puts "$pref | $msg"
  }

}

interp alias chatint puts {} puts

proc chat fn {
  interp invokehidden chatint source $fn
}

# usage:
# chat {2021-01-26.tcl}