All pastes #454538 Raw Edit

Untitled

public text v1 · immutable
·published 2007-04-23 17:41 UTC
rendered paste body
alias -l htmlfree {
  var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x), %x = $remove(%x,&nbsp;)
  return %x
}
alias -l dict_init { did -o $1 2 1 %define.room | did -o $1 4 1 %define.trigger | did -o $1 6 1 $calc(%define.totresults - 1) }
alias -l dict_save { set %define.room $did($1,2) | set %define.trigger $did($1,4) | set %define.trigger2 $+(*,%define.trigger,*) | set %define.totresults $calc($did($1,6) + 1) }

on *:load:{ dialog -m dictsearch dictsearch }
dialog dictsearch {
  title "Channel Dictionary Search Options"
  size -1 -1 300 102
  option pixels
  text "Target Channel (Use * for all channels):", 1, 4 4 192 16
  edit "", 2, 198 2 100 21
  text "Search Trigger (e.g. !define .dict):", 3, 4 27 167 16
  edit "", 4, 198 25 100 21
  text "Number of results to return (2 is nice):", 5, 4 50 185 16
  edit "", 6, 198 48 100 21
  button "Save", 7, 112 73 75 25, ok
}
on *:dialog:dictsearch:*:*:{
  if ($devent == init) { dict_init $dname }
  if ($devent == sclick) { if ($did == 7) { dict_save $dname | dict_init $dname } }
}
menu channel {
  .Channel Dictionary:dialog -m dictsearch dictsearch
}
on *:INPUT:%define.room:{
  if ($1 == %define.trigger) {
    if ($2 != $null) {

      closes socket if the socket is still open
      if ($sock(define) != $null) { sockclose define }
      unset %define.noresult
      sockopen define wordnet.princeton.edu 80
      set %define.search $replace($2-,$chr(32),$+($chr(37),20))
      set %define.chanmsg $active
    }
  }
}
on *:text:%define.trigger2:%define.room:{
  if ($2 != $null) {
    if ($sock(define) != $null) { sockclose define }
    unset %define.noresult
    sockopen define wordnet.princeton.edu 80
    set %define.search $replace($2-,$chr(32),$+($chr(37),20))
    set %define.chanmsg $chan
  }
}
on *:sockopen:define:{
  ;sends request to webserver for the definitions
  sockwrite -nt $sockname GET /perl/webwn?s= $+ %define.search HTTP/1.1
  sockwrite -nt $sockname Accept-Language: en-us
  sockwrite -nt $sockname User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10.1
  sockwrite -nt $sockname Referer: http://wordnet.princeton.edu
  sockwrite -nt $sockname Host: wordnet.princeton.edu
  sockwrite -nt $sockname Connection: keep-alive
  sockwrite -t $sockname $str($crlf,2)
}
on *:sockread:define:{
  if ($sockerr > 0) { return }
  sockread %temp
  if ($sockbr == 0) {
    return
  }
  if (%temp == $null) { %temp = - }
  var %x = did not return any
  if (%x isin $htmlfree(%temp)) { msg %define.chanmsg [Define:] No results found | halt }
  if (S: isin $htmlfree(%temp)) {
    if (Display Option isin $remove($htmlfree(%temp),S:,)) { goto nextread }
    if (Key: isincs $remove($htmlfree(%temp),S:,)) { goto nextread }
    if (%define.noresult == $null) { set %define.noresult 1 }
    if (%define.noresult < %define.totresults) {
      msg %define.chanmsg [Define:] $remove($htmlfree(%temp),S:,)
      inc %define.noresult 1
    }
  }
  goto nextread
}