-------------------------------------------------------------------------------- package require http package require htmlparse package require ncgi namespace eval ::dict.leo.org { variable table "" proc parse {tag close options body} { variable TD variable table switch -- $close$tag { TD {set TD ""} /TD {if {[llength $TD]} {lappend table [string trim $TD]}} default {append TD [string map {  { }} $body]} } } proc query {query} { variable table set url "http://dict.leo.org/?search=[::ncgi::encode $query]" set tok [::http::geturl $url] foreach line [split [::http::data $tok] "\n"] { if {[string match "*search results*" $line]} break } ::http::cleanup $tok set table "" ::htmlparse::parse -cmd ::dict.leo.org::parse $line return $table } } proc max {a b} {expr {$a > $b ? $a : $b}} proc main {argv} { set table [dict.leo.org::query [join $argv]] set max 0 foreach c $table {set max [max $max [string length $c]]} set sep [string repeat = $max] set table [linsert $table 0 " English" " Deutsch" $sep $sep] foreach {c1 c2} $table { puts [format "%-*s %-*s" $max $c1 $max $c2] } puts "" } main $argv