All pastes #90204 Raw Edit

Miscellany

public text v1 · immutable
#90204 ·published 2006-07-17 13:41 UTC
rendered paste body
on $*:text:/^[!@]define .*/Si:#: {
  if (!$2) { notice $nick Please enter a word to lookup }
  else {
    inc %ID 1
    set $+(%,def.target,%ID) $iif($left($1,1) == @,msg $chan,notice $nick)
    set $+(%,def.search,%ID) $replace($2-,$chr(32),+)
    sockopen $+(def.,%ID) dictionary.reference.com 80
  }
}

on *:SOCKOPEN:def.*: {
  sockwrite -nt $sockname GET /search?r=2&q= $+ $eval($+(%,def.search,%ID),2) HTTP/1.1
  sockwrite -nt $sockname Host: dictionary.reference.com $+ $crlf $+ $crlf
}

on *:SOCKREAD:def.*: {
  var %ID = $right($sockname,-4)
  if ($sockerr) {
    $eval($+(%,def.target,%ID),2) Socket error - Please try again later
    sockclose $sockname
  }
  else {
    var %read | sockread %read
    if (!$sockbr) { return }
    elseif ($regex(%read,/<IL>(.*)</IL>/)) {
      $eval($+(%,def.target,%ID),2) Definition: $htmlfree($regml(1))
      sockclose $sockname
    }
    elseif ($regex(%read,/Did you mean(.*)/)) {
      $eval($+(%,def.target,%ID),2) Word Unknown $chr(183) Did you mean: $htmlfree($regml(1))
      sockclose $sockname
    }
  }
}

on *:Disconnect:{
  unset %ID
  unset %def.*
}

alias -l htmlfree {
  var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x), %x = $remove(%x,&nbsp;)
  return %x
}