Method: Tk::Tcllib::ChatWidget#hook_add

Defined in:
lib/tkextlib/tcllib/chatwidget.rb

#hook_add(type, *args, &blk) ⇒ Object

args -> [prior, cmd], [prior], [cmd]



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/tkextlib/tcllib/chatwidget.rb', line 93

def hook_add(type, *args, &blk) # args -> [prior, cmd], [prior], [cmd]
  #type -> 'message', 'post', 'names_group', 'names_nick', 'chatstate', 'url'

  if prior = args.shift
    if !prior.kind_of?(Numeric)
      cmd = prior
      if (prior = args.shift) && !prior.kind_of?(Numeric)  # error
        args.unshift(prior)
      end
      args.unshift(cmd)
    end
    prior ||= 50  # default priority
  end

  cmd = args.shift || blk

  fail ArgumentError, "invalid arguments" unless args.empty?
  fail ArgumentError, "no callback is given" unless cmd

  _parse_hook_list(tk_send('hook', 'add', type, cmd, prior))
end