meshchat 0.7.1 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/meshchat/cli.rb +6 -1
- data/lib/meshchat/cli/input.rb +2 -26
- data/lib/meshchat/command/base.rb +12 -0
- data/lib/meshchat/command/chat.rb +30 -0
- data/lib/meshchat/command/emote.rb +20 -0
- data/lib/meshchat/command/help.rb +3 -1
- data/lib/meshchat/command/irb.rb +4 -3
- data/lib/meshchat/display.rb +1 -0
- data/lib/meshchat/display/base.rb +7 -0
- data/lib/meshchat/display/manager.rb +4 -0
- data/lib/meshchat/message.rb +3 -0
- data/lib/meshchat/message/chat.rb +6 -1
- data/lib/meshchat/message/emote.rb +9 -0
- data/lib/meshchat/net/listener/server.rb +1 -1
- data/lib/meshchat/version.rb +1 -1
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fca3ee7e9b96b4f3c908452a8431b30439f677af
|
4
|
+
data.tar.gz: c83a3c29a2e306b82ac9eeec85a92012001cf010
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 18c8c043f8ac60af265de57719d76ff2bf6aea30d6474f9d9a6d6621f6a49768a646b5b2d97c4342b09203e56e98e2bd1129492c86f7bbec39c6da6cb19b3243
|
7
|
+
data.tar.gz: 1213ce77facbfb2263afd1a5b89a3288a2ded7074c05fdb3996e0631d25eaac79fe3b5435ff7d7f4c10d267aab3eec1e2b83364f9fa4985f23fa59013f74dfd7
|
data/lib/meshchat/cli.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'meshchat/cli/input'
|
2
2
|
require 'meshchat/cli/base'
|
3
3
|
require 'meshchat/command/base'
|
4
|
+
require 'meshchat/command/chat'
|
4
5
|
require 'meshchat/command/identity'
|
5
6
|
require 'meshchat/command/irb'
|
6
7
|
require 'meshchat/command/config'
|
@@ -19,6 +20,7 @@ require 'meshchat/command/offline'
|
|
19
20
|
require 'meshchat/command/init'
|
20
21
|
require 'meshchat/command/share'
|
21
22
|
require 'meshchat/command/import'
|
23
|
+
require 'meshchat/command/emote'
|
22
24
|
|
23
25
|
|
24
26
|
module MeshChat
|
@@ -45,7 +47,10 @@ module MeshChat
|
|
45
47
|
MeshChat::Command::Base::OFFLINE => MeshChat::Command::Offline,
|
46
48
|
MeshChat::Command::Base::HELP => MeshChat::Command::Help,
|
47
49
|
MeshChat::Command::Base::BIND => MeshChat::Command::Bind,
|
48
|
-
MeshChat::Command::Base::SEND_DISCONNECT => MeshChat::Command::SendDisconnect
|
50
|
+
MeshChat::Command::Base::SEND_DISCONNECT => MeshChat::Command::SendDisconnect,
|
51
|
+
MeshChat::Command::Base::EMOTE => MeshChat::Command::Emote,
|
52
|
+
MeshChat::Command::Base::CHAT => MeshChat::Command::Chat
|
53
|
+
|
49
54
|
}
|
50
55
|
|
51
56
|
|
data/lib/meshchat/cli/input.rb
CHANGED
@@ -21,41 +21,17 @@ module MeshChat
|
|
21
21
|
elsif is_whisper?(input)
|
22
22
|
Command::Whisper
|
23
23
|
else
|
24
|
-
|
25
|
-
CLI::Input
|
24
|
+
Command::Chat
|
26
25
|
end
|
27
26
|
|
27
|
+
Display.debug("INPUT: Detected '#{klass.name}' from '#{input}'")
|
28
28
|
klass.new(input)
|
29
29
|
end
|
30
|
-
|
31
30
|
end
|
32
31
|
|
33
32
|
def initialize(input)
|
34
33
|
self._input = input.chomp
|
35
34
|
end
|
36
|
-
|
37
|
-
def handle
|
38
|
-
return if _input.empty?
|
39
|
-
|
40
|
-
servers = Node.online
|
41
|
-
if !servers.empty?
|
42
|
-
m = Message::Chat.new(
|
43
|
-
message: _input
|
44
|
-
)
|
45
|
-
|
46
|
-
Display.chat m.display
|
47
|
-
|
48
|
-
# if sending to all, iterate thorugh list of
|
49
|
-
# servers, and send to each one
|
50
|
-
# TODO: do this async so that one server doesn't block
|
51
|
-
# the rest of the servers from receiving the messages
|
52
|
-
servers.each do |entry|
|
53
|
-
Net::Client.send(node: entry, message: m)
|
54
|
-
end
|
55
|
-
else
|
56
|
-
Display.warning 'you have no servers'
|
57
|
-
end
|
58
|
-
end
|
59
35
|
end
|
60
36
|
end
|
61
37
|
end
|
@@ -32,9 +32,11 @@ module MeshChat
|
|
32
32
|
HELP = 'help'
|
33
33
|
BIND = 'bind'
|
34
34
|
SEND_DISCONNECT = 'senddisconnect'
|
35
|
+
EMOTE = 'me'
|
35
36
|
|
36
37
|
def handle
|
37
38
|
klass = CLI::COMMAND_MAP[command]
|
39
|
+
Display.debug("INPUT: #{klass.name} from #{command} derived from #{_input}")
|
38
40
|
if klass
|
39
41
|
klass.new(_input).handle
|
40
42
|
else
|
@@ -44,6 +46,16 @@ module MeshChat
|
|
44
46
|
|
45
47
|
protected
|
46
48
|
|
49
|
+
def corresponding_message_class
|
50
|
+
my_kind = self.class.name.demodulize
|
51
|
+
message_root_name = MeshChat::Message.name
|
52
|
+
message_class_name = "#{message_root_name}::#{my_kind}"
|
53
|
+
|
54
|
+
Display.debug("Corresponding: #{message_class_name}")
|
55
|
+
|
56
|
+
message_class_name.constantize
|
57
|
+
end
|
58
|
+
|
47
59
|
def command_string
|
48
60
|
@command_string ||= _input[1, _input.length]
|
49
61
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module MeshChat
|
2
|
+
class Command
|
3
|
+
class Chat < Command::Base
|
4
|
+
def handle
|
5
|
+
servers = Node.online
|
6
|
+
if !servers.empty?
|
7
|
+
m = corresponding_message_class.new(
|
8
|
+
message: _input
|
9
|
+
)
|
10
|
+
|
11
|
+
show_myself(m)
|
12
|
+
|
13
|
+
# if sending to all, iterate thorugh list of
|
14
|
+
# servers, and send to each one
|
15
|
+
# TODO: do this async so that one server doesn't block
|
16
|
+
# the rest of the servers from receiving the messages
|
17
|
+
servers.each do |entry|
|
18
|
+
Net::Client.send(node: entry, message: m)
|
19
|
+
end
|
20
|
+
else
|
21
|
+
Display.warning 'you have no servers'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def show_myself(message)
|
26
|
+
Display.chat message.display
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module MeshChat
|
2
|
+
class Command
|
3
|
+
class Emote < Command::Chat
|
4
|
+
def self.description
|
5
|
+
'send an emote to the current chat'
|
6
|
+
end
|
7
|
+
|
8
|
+
def initialize(input)
|
9
|
+
input = input.chomp
|
10
|
+
emote_message = input.gsub(/\A\/me /, '').chomp
|
11
|
+
self._input = emote_message
|
12
|
+
end
|
13
|
+
|
14
|
+
def show_myself(message)
|
15
|
+
Display.info message.display
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/meshchat/command/irb.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
module MeshChat
|
2
2
|
class Command
|
3
|
-
def self.description
|
4
|
-
'runs ruby commands (useful for debugging)'
|
5
|
-
end
|
6
3
|
|
7
4
|
# TODO: only include this and awesome_print when booted with
|
8
5
|
# debug=true in the config
|
9
6
|
class IRB < Command::Base
|
7
|
+
def self.description
|
8
|
+
'runs ruby commands (useful for debugging)'
|
9
|
+
end
|
10
|
+
|
10
11
|
def handle
|
11
12
|
begin
|
12
13
|
code = command_args[1..command_args.length].join(' ')
|
data/lib/meshchat/display.rb
CHANGED
@@ -11,6 +11,7 @@ module MeshChat
|
|
11
11
|
def start(*args); current.start(*args); end
|
12
12
|
def add_line(*args); current.add_line(*args); end
|
13
13
|
def info(*args); current.info(*args); end
|
14
|
+
def emote(*args); current.emote(*args); end
|
14
15
|
def warning(*args); current.warning(*args); end
|
15
16
|
def alert(*args); current.alert(*args); end
|
16
17
|
def success(*args); current.success(*args); end
|
@@ -9,6 +9,7 @@ module MeshChat
|
|
9
9
|
delegate :start, to: :_ui
|
10
10
|
delegate :add_line, to: :_ui
|
11
11
|
delegate :info, to: :_ui
|
12
|
+
delegate :emote, to: :_ui
|
12
13
|
delegate :warning, to: :_ui
|
13
14
|
delegate :alert, to: :_ui
|
14
15
|
delegate :success, to: :_ui
|
@@ -36,6 +37,9 @@ module MeshChat
|
|
36
37
|
when Message::Whisper.name
|
37
38
|
whisper result
|
38
39
|
Notify.show(summary: message.sender_name, body: message.message)
|
40
|
+
when Message::Emote.name
|
41
|
+
emote result
|
42
|
+
Notify.show(summary: message.sender_name, body: message.message)
|
39
43
|
when Message::PingReply.name, Message::Ping.name
|
40
44
|
info result
|
41
45
|
when Message::NodeList.name,
|
data/lib/meshchat/message.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'meshchat/message/base'
|
2
2
|
require 'meshchat/message/chat'
|
3
|
+
require 'meshchat/message/emote'
|
3
4
|
require 'meshchat/message/ping'
|
4
5
|
require 'meshchat/message/ping_reply'
|
5
6
|
require 'meshchat/message/disconnect'
|
@@ -12,6 +13,7 @@ require 'meshchat/message/node_list_hash'
|
|
12
13
|
module MeshChat
|
13
14
|
module Message
|
14
15
|
CHAT = 'chat'
|
16
|
+
EMOTE = 'emote'
|
15
17
|
PING = 'ping'
|
16
18
|
PING_REPLY = 'pingreply'
|
17
19
|
WHISPER = 'whisper'
|
@@ -24,6 +26,7 @@ module MeshChat
|
|
24
26
|
|
25
27
|
TYPES = {
|
26
28
|
CHAT => Chat,
|
29
|
+
EMOTE => Emote,
|
27
30
|
WHISPER => Whisper,
|
28
31
|
DISCONNECT => Disconnect,
|
29
32
|
PING => Ping,
|
@@ -7,7 +7,12 @@ module MeshChat
|
|
7
7
|
name = payload['sender']['alias']
|
8
8
|
message = payload['message']
|
9
9
|
|
10
|
-
|
10
|
+
format_display(time_recieved, name, message)
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
def format_display(time, name, message)
|
15
|
+
"#{time} #{name} > #{message}"
|
11
16
|
end
|
12
17
|
end
|
13
18
|
end
|
data/lib/meshchat/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: meshchat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- L. Preston Sego III
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sqlite3
|
@@ -192,7 +192,9 @@ files:
|
|
192
192
|
- lib/meshchat/cli/input.rb
|
193
193
|
- lib/meshchat/command/base.rb
|
194
194
|
- lib/meshchat/command/bind.rb
|
195
|
+
- lib/meshchat/command/chat.rb
|
195
196
|
- lib/meshchat/command/config.rb
|
197
|
+
- lib/meshchat/command/emote.rb
|
196
198
|
- lib/meshchat/command/exit.rb
|
197
199
|
- lib/meshchat/command/help.rb
|
198
200
|
- lib/meshchat/command/identity.rb
|
@@ -223,6 +225,7 @@ files:
|
|
223
225
|
- lib/meshchat/message/base.rb
|
224
226
|
- lib/meshchat/message/chat.rb
|
225
227
|
- lib/meshchat/message/disconnect.rb
|
228
|
+
- lib/meshchat/message/emote.rb
|
226
229
|
- lib/meshchat/message/node_list.rb
|
227
230
|
- lib/meshchat/message/node_list_diff.rb
|
228
231
|
- lib/meshchat/message/node_list_hash.rb
|
@@ -262,5 +265,5 @@ rubyforge_project:
|
|
262
265
|
rubygems_version: 2.4.8
|
263
266
|
signing_key:
|
264
267
|
specification_version: 4
|
265
|
-
summary: MeshChat-0.
|
268
|
+
summary: MeshChat-0.8.0
|
266
269
|
test_files: []
|