Module: Lijab::Commands
- Defined in:
- lib/lijab/commands.rb,
lib/lijab/commands/simple.rb,
lib/lijab/commands/status.rb,
lib/lijab/commands/options.rb,
lib/lijab/commands/contacts.rb,
lib/lijab/commands/subscription.rb
Defined Under Namespace
Modules: CommandMixin, ContactCompleterMixin, ContactsCommandMixin
Classes: Command, CommandError
Class Method Summary
collapse
Class Method Details
.completer(line) ⇒ Object
121
122
123
124
125
126
127
128
129
130
131
132
|
# File 'lib/lijab/commands.rb', line 121
def completer(line)
cmd, args = line[1..-1].split(" ", 2).strip
cmd ||= ""
matches = @registered.keys.find_all { |c| c.to_s.match(/^#{Regexp.escape(cmd)}/) }
if !cmd.empty? && (matches.length == 1 || args) && registered?(cmd)
(@registered[cmd.to_sym].completer(line) || []).map { |s| "/#{cmd} #{s}" }
else
matches.map { |k| "/#{k}" }
end
end
|
.get(name) ⇒ Object
98
99
100
|
# File 'lib/lijab/commands.rb', line 98
def get(name)
@registered[name.to_sym]
end
|
.init ⇒ Object
57
58
59
60
61
62
63
64
65
|
# File 'lib/lijab/commands.rb', line 57
def init
files = Dir[File.join(File.dirname(File.expand_path(__FILE__)), 'commands', '*.rb')] + \
Dir[File.join(Config.dirs[:commands], '**', '*.rb')]
files.each { |f| load f }
Config.opts[:aliases].each do |a, c|
register_alias(a, c)
end
end
|
.register(name, cmd) ⇒ Object
67
68
69
70
71
|
# File 'lib/lijab/commands.rb', line 67
def register(name, cmd)
name = name.to_sym
@overloaded[name] = @registered[name] if @registered.key?(name)
@registered[name] = cmd
end
|
.register_alias(name, s) ⇒ Object
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
# File 'lib/lijab/commands.rb', line 73
def register_alias(name, s)
alias_cmd, alias_args = s.split(" ", 2)
alias_cmd.strip!
alias_cmd = alias_cmd[1..-1] if alias_cmd[0] == ?/
name = name[1..-1] if name[0] == ?/
Command.define name.to_sym do
description %{Alias for "#{s}"}
@alias_cmd = alias_cmd
@alias_args = alias_args
@name = name
def run(args)
Commands::run(@alias_cmd, [@alias_args, args].join(" "), true)
end
def completer(line)
args = line.split(" ", 2)[1]
Commands::completer("/#{@alias_cmd} #{@alias_args} #{args}").map do |r|
r.gsub(/\/#{@alias_cmd}\s?/, "")
end
end
end
end
|
.registered ⇒ Object
.registered?(name) ⇒ Boolean
102
103
104
|
# File 'lib/lijab/commands.rb', line 102
def registered?(name)
@registered.key?(name.to_sym)
end
|
.run(cmd, args = "", is_alias = false) ⇒ Object
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
# File 'lib/lijab/commands.rb', line 106
def run(cmd, args="", is_alias=false)
cmd = cmd.strip.to_sym
command = @overloaded[cmd] if is_alias
command ||= @registered[cmd]
if command
begin
command.run(args.strip)
rescue CommandError => e
Out::error("#{cmd}: #{e}", false)
end
else
Out::error("no such command: /#{cmd}", false)
end
end
|