Class: Mybot::Command
- Inherits:
-
Object
show all
- Includes:
- Fmt
- Defined in:
- lib/mybot/command.rb
Constant Summary
Constants included
from Fmt
Fmt::WIDTH
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from Fmt
#asterisks, #colored, #print_cmd, #print_cmd!, #print_progress, #print_stderr, #print_stdout, #spaces
Constructor Details
Returns a new instance of Command.
7
8
9
10
11
12
|
# File 'lib/mybot/command.rb', line 7
def initialize
@out = @stdout = @stderr = ""
@handlers = {}
@time = Time.now
@exit = -1
end
|
Instance Attribute Details
#channel ⇒ Object
Returns the value of attribute channel.
5
6
7
|
# File 'lib/mybot/command.rb', line 5
def channel
@channel
end
|
#exit ⇒ Object
Returns the value of attribute exit.
5
6
7
|
# File 'lib/mybot/command.rb', line 5
def exit
@exit
end
|
Instance Method Details
#handle_close ⇒ Object
32
33
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/mybot/command.rb', line 32
def handle_close
@time = Time.now - @time
print_cmd! "time", @time, :blue, :bold
print_cmd! "exit", @exit, :blue, :bold
unless @exit == 0
print_cmd! "error", "invalid exit status", :red, :bold
print_stdout @stdout, true
print_stderr @stderr, true
abort
end
end
|
#handle_stderr(data) ⇒ Object
25
26
27
28
29
30
|
# File 'lib/mybot/command.rb', line 25
def handle_stderr(data)
@out = data
@stderr += data
print_stderr data
run_handlers
end
|
#handle_stdout(data) ⇒ Object
18
19
20
21
22
23
|
# File 'lib/mybot/command.rb', line 18
def handle_stdout(data)
@out = data
@stdout += data
print_stdout data
run_handlers
end
|
#on(s, &block) ⇒ Object
14
15
16
|
# File 'lib/mybot/command.rb', line 14
def on(s, &block)
@handlers[s] = block
end
|
#result ⇒ Object
55
56
57
58
59
60
61
62
|
# File 'lib/mybot/command.rb', line 55
def result
{
:stdout => filter(@stdout),
:stderr => filter(@stderr),
:exit => @exit,
:time => @time
}
end
|
#write(data) ⇒ Object
45
46
47
48
|
# File 'lib/mybot/command.rb', line 45
def write(data)
print_cmd! "write", data, :blue, :bold
@channel.send_data "#{data}\n"
end
|
#write!(data) ⇒ Object
50
51
52
53
|
# File 'lib/mybot/command.rb', line 50
def write!(data)
print_cmd! "write", asterisks(data), :blue, :bold
@channel.send_data "#{data}\n"
end
|