Posted to tcl by dandyn at Sun Nov 24 20:11:41 GMT 2024view raw
- set histBuf {trump Trump trump Trump trump trumps trumps trump trumps hello hello hello hello hello hello trump}
- proc wordcount {nr} {
- global histBuf
- unset -nocomplain data tmp result word
- set data [lrange $histBuf end-$nr end]
- foreach word [regexp -all -inline {\w+} $data] {
- incr tmp([string tolower $word])
- }
- # make a list of array..
- set result [array get tmp]
- # First sort by name, as a secondary key
- set result [lsort -stride 2 -index 0 $result]
- # Then sort by count, descending, as a primary key
- set result [lsort -stride 2 -index 1 -integer -decreasing $result]
- set exclude {
- after with that from says over more about will have said their
- this they been were into what could first some used than
- till lokalt efter säger inte från under vill flera blir alla vara
- blev fick över kommer nytt just direkt
- mycket måste därför ingen hela utan bakom stora bara igen eller andra allt
- aldrig bättre rätt description
- }
- # Print the values
- puts "\n[string repeat "=" 3] \[STATS\] [string repeat "=" 23]"
- foreach {w c} $result {
- # word must be at minimum 4 chars long
- if {![regexp {^\w{4,}$} $w]} {continue}
- # word must accur at least this many times or more
- if {$c <= 2} {continue}
- if {[regexp $w $exclude match]} {continue}
- puts [string repeat " " 4][format "%-10s = %s" $w $c]
- }
- puts "[string repeat "=" 24]"
- puts "Last $nr posts..\n"
- }
- wordcount 20