Module: Weechat::Helper

Defined in:
lib/weechat.rb

Constant Summary collapse

SignalCallbackTransformations =

TODO add IRC parser TODO add support for filters TODO add support for ignores TODO add support for infolists by pointer

{
  [/irc_(channel|pv)_opened/, /^logger_(start|stop|backlog)$/,
   /^buffer_(closing|closed|lines_hidden|moved|opened|renamed|switch)$/,
   /^buffer_(title|type)_changed$/,
   /^buffer_localvar_(added|changed|removed)$/] => lambda { |v| Weechat::Buffer.new(v) },
  [/irc_server_(connecting|connected|disconnected)/] => lambda { |v| Weechat::Server.new(v) },
  [/weechat_(highlight|pv)/] => lambda { |v| Weechat::Line.parse(v) },
  [/window_(scrolled|unzooming|unzoomed|zooming|zoomed)/] => lambda { |v| Weechat::Window.new(v) },
}
ModifierCallbackTransformations =
{
  ['irc_color_decode', 'irc_color_encode'] => lambda { |v| Weechat.integer_to_bool(v) },
  [/^bar_condition_.+$/]                   => lambda { |v| Weechat::Window.new(v) },
  ["input_text_content", "input_text_display",
   "input_text_display_with_cursor"]       => lambda { |v| Weechat::Buffer.new(v) },
  ["weechat_print"]                        => lambda { |v|
    parts = v.split(";")
    parts[0] = Weechat::Plugin.find(parts[0])
    parts[1] = Weechat::Buffer.find(parts[1], parts[0])
    if parts[2]
      parts[2] = parts[2].split(",")
    else
      parts[2] = []
    end
    parts
  },
}
ModifierCallbackRTransformations =
{
  [/^bar_condition_.+$/] => lambda { |v| Weechat.bool_to_integer(v) },
}

Instance Method Summary collapse

Instance Method Details

#close_callback(method, buffer) ⇒ Object



27
28
29
# File 'lib/weechat.rb', line 27

def close_callback(method, buffer)
  Weechat::Buffer.call_close_callback(method, buffer)
end

#command_callback(id, buffer, args) ⇒ Object



11
12
13
# File 'lib/weechat.rb', line 11

def command_callback(id, buffer, args)
  Weechat::Command.find_by_id(id).call(Weechat::Buffer.new(buffer), args)
end

#command_run_callback(id, buffer, command) ⇒ Object



15
16
17
# File 'lib/weechat.rb', line 15

def command_run_callback(id, buffer, command)
  Weechat::Hooks::CommandRunHook.find_by_id(id).call(Weechat::Buffer.new(buffer), command)
end

#config_callback(id, option, value) ⇒ Object



64
65
66
# File 'lib/weechat.rb', line 64

def config_callback(id, option, value)
  ret = Weechat::Hooks::Config.find_by_id(id).call(option, value)
end

#info_callback(id, info, arguments) ⇒ Object



31
32
33
# File 'lib/weechat.rb', line 31

def info_callback(id, info, arguments)
  Weechat::Info.find_by_id(id).call(arguments).to_s
end

#input_callback(method, buffer, input) ⇒ Object



23
24
25
# File 'lib/weechat.rb', line 23

def input_callback(method, buffer, input)
  Weechat::Buffer.call_input_callback(method, buffer, input)
end

#modifier_callback(id, modifier, modifier_data, s) ⇒ Object



111
112
113
114
115
116
117
118
119
# File 'lib/weechat.rb', line 111

def modifier_callback(id, modifier, modifier_data, s)
  klass = Weechat::Modifiers::Mappings[modifier] || Weechat::Modifier
  modifier_data = Weechat::Utilities.apply_transformation(modifier, modifier_data, ModifierCallbackTransformations)
  args = modifier_data + [Weechat::Line.parse(s)]
  callback = klass.find_by_id(id)
  callback ||= Weechat::Modifier.find_by_id(id)
  ret = callback.call(*args)
  return Weechat::Utilities.apply_transformation(modifier, ret, ModifierCallbackRTransformations).to_s
end


35
36
37
38
39
40
41
42
# File 'lib/weechat.rb', line 35

def print_callback(id, buffer, date, tags, displayed, highlight, prefix, message)
  buffer    = Weechat::Buffer.new(buffer)
  date      = Time.at(date.to_i)
  tags      = tags.split(",")
  displayed = Weechat.integer_to_bool(displayed)
  highlight = Weechat.integer_to_bool(highlight)
  Weechat::Hooks::Print.find_by_id(id).call(buffer, date, tags, displayed, highlight, prefix, message)
end

#process_callback(id, command, code, stdout, stderr) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/weechat.rb', line 68

def process_callback(id, command, code, stdout, stderr)
  code = case code
         when Weechat::WEECHAT_HOOK_PROCESS_RUNNING
           :running
         when Weechat::WEECHAT_HOOK_PROCESS_ERROR
           :error
         else
           code
         end

  process = Weechat::Process.find_by_id(id)
  if process.collect
    process.buffer(stdout, stderr)
    if code == :error || code != :running
      process.call(code, process.stdout, process.stderr)
    end
  else
    Weechat::Process.find_by_id(id).call(code, stdout, stderr)
  end
end

#signal_callback(id, signal, data) ⇒ Object



59
60
61
62
# File 'lib/weechat.rb', line 59

def signal_callback(id, signal, data)
  data = Weechat::Utilities.apply_transformation(signal, data, SignalCallbackTransformations)
  Weechat::Hooks::Signal.find_by_id(id).call(signal, data)
end

#timer_callback(id, remaining) ⇒ Object



19
20
21
# File 'lib/weechat.rb', line 19

def timer_callback(id, remaining)
  Weechat::Timer.find_by_id(id).call(remaining.to_i)
end