mad_chatter 0.2.1 → 0.2.3
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.
- data/.gitignore +2 -1
- data/CHANGELOG.txt +6 -0
- data/Gemfile.lock +3 -1
- data/bin/mad_chatter +4 -7
- data/lib/mad_chatter/actions/base.rb +26 -0
- data/lib/mad_chatter/actions/dsl.rb +42 -0
- data/lib/mad_chatter/actions/join.rb +3 -3
- data/lib/mad_chatter/actions/rename.rb +3 -3
- data/lib/mad_chatter/config.rb +2 -13
- data/lib/mad_chatter/daemon.rb +16 -0
- data/lib/mad_chatter/message.rb +16 -5
- data/lib/mad_chatter/server.rb +9 -32
- data/lib/mad_chatter/version.rb +1 -1
- data/lib/mad_chatter.rb +27 -13
- data/mad_chatter.gemspec +1 -0
- data/templates/extensions.rb +8 -5
- data/templates/web/index.html +2 -1
- data/templates/web/{javascript.js → mad_chatter.js} +3 -3
- data/templates/web/mad_chatter_actions.js +4 -0
- metadata +31 -18
- data/lib/mad_chatter/action.rb +0 -34
- data/lib/mad_chatter/extensions.rb +0 -13
data/.gitignore
CHANGED
data/CHANGELOG.txt
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
Mad Chatter
|
2
2
|
|
3
|
+
Version 0.2.3
|
4
|
+
- Finally got extensions working by refactoring a bunch of stuff
|
5
|
+
|
6
|
+
Version 0.2.2
|
7
|
+
- Added daemonization so you can start, stop, restart Mad Chatter
|
8
|
+
|
3
9
|
Version 0.2.1
|
4
10
|
- Realized the simple extensions aren't actually working. This is why we need tests. :(
|
5
11
|
- Also, fixed some styles that weren't being applied.
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
mad_chatter (0.2.
|
4
|
+
mad_chatter (0.2.3)
|
5
|
+
daemons (= 1.1.4)
|
5
6
|
em-websocket
|
6
7
|
eventmachine
|
7
8
|
redcarpet
|
@@ -11,6 +12,7 @@ GEM
|
|
11
12
|
remote: http://rubygems.org/
|
12
13
|
specs:
|
13
14
|
addressable (2.2.6)
|
15
|
+
daemons (1.1.4)
|
14
16
|
diff-lcs (1.1.3)
|
15
17
|
em-websocket (0.3.6)
|
16
18
|
addressable (>= 2.1.1)
|
data/bin/mad_chatter
CHANGED
@@ -30,25 +30,22 @@ module MadChatter
|
|
30
30
|
|
31
31
|
desc 'start', 'Starts the chat server'
|
32
32
|
def start
|
33
|
-
require 'mad_chatter'
|
34
|
-
MadChatter.start
|
33
|
+
require 'mad_chatter/daemon'
|
35
34
|
end
|
36
35
|
|
37
36
|
desc 'stop', 'Stops the chat server'
|
38
37
|
def stop
|
39
|
-
|
40
|
-
# not sure how to best implement this part yet
|
38
|
+
require 'mad_chatter/daemon'
|
41
39
|
end
|
42
40
|
|
43
41
|
desc 'restart', 'Restarts the chat server'
|
44
42
|
def restart
|
45
|
-
|
46
|
-
# not sure how to best implement this part yet
|
43
|
+
require 'mad_chatter/daemon'
|
47
44
|
end
|
48
45
|
|
49
46
|
desc 'version', 'Displays the current version number'
|
50
47
|
def version
|
51
|
-
require
|
48
|
+
require 'mad_chatter/version'
|
52
49
|
puts MadChatter::VERSION
|
53
50
|
end
|
54
51
|
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module MadChatter
|
2
|
+
module Actions
|
3
|
+
class Base
|
4
|
+
|
5
|
+
include MadChatter::Actions::Dsl
|
6
|
+
|
7
|
+
def initialize(regex = nil, block = nil)
|
8
|
+
@regex = regex
|
9
|
+
@block = block
|
10
|
+
end
|
11
|
+
|
12
|
+
def handle(message)
|
13
|
+
if message.original_text =~ @regex
|
14
|
+
args = @regex.match(message.original_text).captures
|
15
|
+
@block.call(args)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# used to register a class that extends MadChatter::Actions::Base
|
20
|
+
def self.inherited(extension_class)
|
21
|
+
MadChatter.message_listeners << extension_class.new
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module MadChatter
|
2
|
+
module Actions
|
3
|
+
module Dsl
|
4
|
+
|
5
|
+
# Used to define a simple extension
|
6
|
+
def on_message(regex, &block)
|
7
|
+
MadChatter.message_listeners << MadChatter::Actions::Base.new(regex, block)
|
8
|
+
end
|
9
|
+
|
10
|
+
# Helper methods
|
11
|
+
|
12
|
+
def stop_message_handling
|
13
|
+
raise "Don't call any more message listeners"
|
14
|
+
end
|
15
|
+
|
16
|
+
def send_json(json)
|
17
|
+
MadChatter::Server.send_json(json)
|
18
|
+
end
|
19
|
+
|
20
|
+
def send_message(text)
|
21
|
+
message = MadChatter::Message.new('message', text)
|
22
|
+
send_json(message.to_json)
|
23
|
+
end
|
24
|
+
|
25
|
+
def send_status_message(text)
|
26
|
+
message = MadChatter::Message.new('status', text)
|
27
|
+
send_json(message.to_json)
|
28
|
+
end
|
29
|
+
|
30
|
+
def send_users_list
|
31
|
+
message = MadChatter::Message.new('users', MadChatter::Users.current)
|
32
|
+
send_json(message.to_json)
|
33
|
+
end
|
34
|
+
|
35
|
+
def send_action(action, *args)
|
36
|
+
message = MadChatter::Message.new('action', {function: action, args: args})
|
37
|
+
send_json(message.to_json)
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
module MadChatter
|
2
2
|
module Actions
|
3
|
-
class Join < MadChatter::
|
3
|
+
class Join < MadChatter::Actions::Base
|
4
4
|
|
5
5
|
@@regex = /\/join (.+)/
|
6
6
|
|
7
7
|
def handle(message)
|
8
|
-
if message.
|
9
|
-
username = parse_username(message.
|
8
|
+
if message.filtered_text =~ @@regex
|
9
|
+
username = parse_username(message.filtered_text)
|
10
10
|
MadChatter::Users.update(message.token, username)
|
11
11
|
send_status_message "#{username} has joined the chatroom"
|
12
12
|
send_users_list
|
@@ -1,13 +1,13 @@
|
|
1
1
|
module MadChatter
|
2
2
|
module Actions
|
3
|
-
class Rename < MadChatter::
|
3
|
+
class Rename < MadChatter::Actions::Base
|
4
4
|
|
5
5
|
@@regex = /\/nick (.+)/
|
6
6
|
|
7
7
|
def handle(message)
|
8
|
-
if message.
|
8
|
+
if message.filtered_text =~ @@regex
|
9
9
|
old_username = message.username
|
10
|
-
username = parse_username(message.
|
10
|
+
username = parse_username(message.filtered_text)
|
11
11
|
MadChatter::Users.update(message.token, username)
|
12
12
|
send_status_message "#{old_username} is now known as #{username}"
|
13
13
|
send_users_list
|
data/lib/mad_chatter/config.rb
CHANGED
@@ -1,13 +1,5 @@
|
|
1
1
|
module MadChatter
|
2
2
|
|
3
|
-
def self.simple_extensions
|
4
|
-
@@simple_extensions ||= []
|
5
|
-
end
|
6
|
-
|
7
|
-
def self.extension_classes
|
8
|
-
@@extension_classes ||= []
|
9
|
-
end
|
10
|
-
|
11
3
|
module Config
|
12
4
|
class << self
|
13
5
|
|
@@ -19,10 +11,7 @@ module MadChatter
|
|
19
11
|
|
20
12
|
def initialize_config
|
21
13
|
config_file = File.join(Dir.pwd, 'config.yml')
|
22
|
-
|
23
|
-
unless File.exist?(config_file)
|
24
|
-
abort 'Could not find Mad Chatter config.yml file'
|
25
|
-
end
|
14
|
+
abort 'Could not find Mad Chatter config.yml file' unless File.exist?(config_file)
|
26
15
|
|
27
16
|
config = YAML::load(File.open(config_file))
|
28
17
|
defaults = {
|
@@ -36,7 +25,7 @@ module MadChatter
|
|
36
25
|
simple_extensions_file = File.join(Dir.pwd, 'extensions.rb')
|
37
26
|
if File.exist?(simple_extensions_file)
|
38
27
|
file_contents = File.read(simple_extensions_file)
|
39
|
-
MadChatter::
|
28
|
+
MadChatter::Actions::Base.new.instance_eval file_contents
|
40
29
|
end
|
41
30
|
|
42
31
|
# Dir[Dir.pwd + '/extensions/*.rb'].each do |file|
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'daemons'
|
2
|
+
|
3
|
+
daemon_dir = Dir.pwd + '/.daemon'
|
4
|
+
Dir::mkdir(daemon_dir) unless File.directory?(daemon_dir)
|
5
|
+
|
6
|
+
options = {
|
7
|
+
:dir => daemon_dir,
|
8
|
+
:log_output => true,
|
9
|
+
:multiple => false, # only allow one daemon to run at a time
|
10
|
+
:monitor => true
|
11
|
+
}
|
12
|
+
|
13
|
+
Daemons.run_proc('Mad Chatter', options) do
|
14
|
+
require 'mad_chatter'
|
15
|
+
MadChatter.start
|
16
|
+
end
|
data/lib/mad_chatter/message.rb
CHANGED
@@ -1,22 +1,33 @@
|
|
1
1
|
module MadChatter
|
2
2
|
class Message
|
3
3
|
|
4
|
-
attr_accessor :type, :
|
4
|
+
attr_accessor :type, :original_text, :filtered_text, :token, :username
|
5
5
|
|
6
|
-
def initialize(type,
|
6
|
+
def initialize(type, original_text, token = nil, username = nil)
|
7
7
|
@type = type
|
8
|
-
@
|
8
|
+
@original_text = original_text
|
9
|
+
@filtered_text = original_text # if filter is never called, message will be original text
|
9
10
|
@token = token
|
10
11
|
@username = username
|
11
12
|
end
|
12
13
|
|
13
|
-
|
14
|
+
# Helper method for returning filtered text.
|
15
|
+
def text
|
16
|
+
@filtered_text
|
17
|
+
end
|
18
|
+
|
19
|
+
def to_json
|
14
20
|
JSON.generate({
|
15
21
|
type: @type,
|
16
|
-
message: @
|
22
|
+
message: @filtered_text,
|
17
23
|
username: @username,
|
18
24
|
})
|
19
25
|
end
|
20
26
|
|
27
|
+
def filter
|
28
|
+
@filtered_text = MadChatter.markdown.render(@original_text)
|
29
|
+
@filtered_text = /^<p>(.*)<\/p>$/.match(@filtered_text)[1] # remove the <p> tags that markdown wraps by default
|
30
|
+
end
|
31
|
+
|
21
32
|
end
|
22
33
|
end
|
data/lib/mad_chatter/server.rb
CHANGED
@@ -31,7 +31,7 @@ module MadChatter
|
|
31
31
|
def register_connection(&send_message)
|
32
32
|
subscriber_id = MadChatter::Server.main_channel.subscribe(send_message)
|
33
33
|
token = generate_token
|
34
|
-
send_message.call(MadChatter::Message.new('token', token).
|
34
|
+
send_message.call(MadChatter::Message.new('token', token).to_json)
|
35
35
|
@subscribers[subscriber_id] = token
|
36
36
|
subscriber_id
|
37
37
|
end
|
@@ -45,54 +45,31 @@ module MadChatter
|
|
45
45
|
username = MadChatter::Users.find_username_by_token(token)
|
46
46
|
MadChatter::Server.main_channel.unsubscribe(id)
|
47
47
|
MadChatter::Users.remove(token)
|
48
|
-
MadChatter::Server.send_json(MadChatter::Message.new('status', "#{username} has left the chatroom").
|
49
|
-
MadChatter::Server.send_json(MadChatter::Message.new('users', MadChatter::Users.current).
|
48
|
+
MadChatter::Server.send_json(MadChatter::Message.new('status', "#{username} has left the chatroom").to_json)
|
49
|
+
MadChatter::Server.send_json(MadChatter::Message.new('users', MadChatter::Users.current).to_json)
|
50
50
|
end
|
51
51
|
|
52
52
|
def message_received(json)
|
53
53
|
msg = JSON.parse(json)
|
54
54
|
username = MadChatter::Users.find_username_by_token(msg['token'])
|
55
|
-
|
56
|
-
|
57
|
-
message = MadChatter::Message.new(msg['type'], filtered_message, msg['token'], username)
|
55
|
+
message = MadChatter::Message.new(msg['type'], msg['message'], msg['token'], username)
|
56
|
+
message.filter
|
58
57
|
|
59
58
|
if message.token.nil?
|
60
59
|
return # Token is required to send messages
|
61
60
|
end
|
62
61
|
|
63
62
|
begin
|
64
|
-
|
65
|
-
|
66
|
-
MadChatter::Action.instance_exec do
|
67
|
-
args = extension[:regex].match(original_message).captures
|
68
|
-
extension[:block].call(args)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
MadChatter.extension_classes.each do |extension|
|
74
|
-
extension.handle(message)
|
63
|
+
MadChatter.message_listeners.each do |listener|
|
64
|
+
listener.handle(message)
|
75
65
|
end
|
76
66
|
|
77
|
-
MadChatter::Server.send_json(message.
|
67
|
+
MadChatter::Server.send_json(message.to_json)
|
78
68
|
rescue RuntimeError
|
79
69
|
# dont need to do anything, just prevent any errors from stopping the server
|
80
70
|
end
|
81
71
|
end
|
82
|
-
|
83
|
-
def filter_message(text)
|
84
|
-
@markdown ||= Redcarpet::Markdown.new(
|
85
|
-
Redcarpet::Render::HTML.new(
|
86
|
-
:filter_html => true,
|
87
|
-
:hard_wrap => true
|
88
|
-
),
|
89
|
-
:autolink => true,
|
90
|
-
:no_intra_emphasis => true
|
91
|
-
)
|
92
|
-
filtered_text = @markdown.render(text)
|
93
|
-
filtered_text = /^<p>(.*)<\/p>$/.match(filtered_text)[1] # remove the <p> tags that markdown wraps by default
|
94
|
-
end
|
95
|
-
|
72
|
+
|
96
73
|
def self.send_json(json)
|
97
74
|
MadChatter::Server.main_channel.push(json)
|
98
75
|
end
|
data/lib/mad_chatter/version.rb
CHANGED
data/lib/mad_chatter.rb
CHANGED
@@ -7,20 +7,34 @@ require 'yaml'
|
|
7
7
|
require 'json'
|
8
8
|
require 'digest/sha1'
|
9
9
|
|
10
|
-
require 'mad_chatter/action'
|
11
|
-
require 'mad_chatter/config'
|
12
|
-
require 'mad_chatter/extensions'
|
13
|
-
require 'mad_chatter/message'
|
14
|
-
require 'mad_chatter/server'
|
15
|
-
require 'mad_chatter/users'
|
16
|
-
require 'mad_chatter/version'
|
17
|
-
|
18
|
-
require 'mad_chatter/actions/join'
|
19
|
-
require 'mad_chatter/actions/rename'
|
20
|
-
|
21
|
-
require 'mad_chatter/servers/em_websocket'
|
22
|
-
|
23
10
|
module MadChatter
|
11
|
+
|
12
|
+
def self.message_listeners
|
13
|
+
@@message_listeners ||= []
|
14
|
+
end
|
15
|
+
|
16
|
+
require 'mad_chatter/config'
|
17
|
+
require 'mad_chatter/message'
|
18
|
+
require 'mad_chatter/server'
|
19
|
+
require 'mad_chatter/users'
|
20
|
+
require 'mad_chatter/version'
|
21
|
+
require 'mad_chatter/actions/dsl'
|
22
|
+
require 'mad_chatter/actions/base'
|
23
|
+
require 'mad_chatter/actions/join'
|
24
|
+
require 'mad_chatter/actions/rename'
|
25
|
+
|
26
|
+
require 'mad_chatter/servers/em_websocket'
|
27
|
+
|
28
|
+
def self.markdown
|
29
|
+
@markdown ||= Redcarpet::Markdown.new(
|
30
|
+
Redcarpet::Render::HTML.new(
|
31
|
+
:filter_html => true,
|
32
|
+
:hard_wrap => true
|
33
|
+
),
|
34
|
+
:autolink => true,
|
35
|
+
:no_intra_emphasis => true
|
36
|
+
)
|
37
|
+
end
|
24
38
|
|
25
39
|
def self.start
|
26
40
|
config = MadChatter::Config.init
|
data/mad_chatter.gemspec
CHANGED
@@ -22,6 +22,7 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.add_runtime_dependency "eventmachine"
|
23
23
|
s.add_runtime_dependency "em-websocket"
|
24
24
|
s.add_runtime_dependency "redcarpet"
|
25
|
+
s.add_runtime_dependency "daemons", "1.1.4"
|
25
26
|
|
26
27
|
s.add_development_dependency "rspec"
|
27
28
|
s.add_development_dependency "shoulda"
|
data/templates/extensions.rb
CHANGED
@@ -12,8 +12,11 @@
|
|
12
12
|
# end
|
13
13
|
#
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
15
|
+
on_message %r{/youtube http://youtu.be/(.*)} do |youtube_id|
|
16
|
+
send_message "<iframe width='560' height='315' src='http://www.youtube.com/embed/#{youtube_id}' frameborder='0' allowfullscreen></iframe>"
|
17
|
+
stop_message_handling
|
18
|
+
end
|
19
|
+
|
20
|
+
on_message %r{/alert (.*)} do |alert_message|
|
21
|
+
send_action 'show_alert', alert_message
|
22
|
+
end
|
data/templates/web/index.html
CHANGED
@@ -5,7 +5,8 @@
|
|
5
5
|
<link rel="stylesheet" href="styles.css">
|
6
6
|
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js'></script>
|
7
7
|
<script src='http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js'></script>
|
8
|
-
<script src='
|
8
|
+
<script src='/mad_chatter.js'></script>
|
9
|
+
<script src='/mad_chatter_actions.js'></script>
|
9
10
|
<script>
|
10
11
|
$(document).ready(function(){
|
11
12
|
MadChatter.init('ws://localhost:8100');
|
@@ -74,7 +74,7 @@ var MadChatter = {
|
|
74
74
|
MadChatter.display_status(message);
|
75
75
|
}
|
76
76
|
if (type == 'action') {
|
77
|
-
MadChatter.
|
77
|
+
MadChatter.exec_action(message);
|
78
78
|
}
|
79
79
|
if (type == 'message') {
|
80
80
|
MadChatter.display_message(username, message);
|
@@ -92,8 +92,8 @@ var MadChatter = {
|
|
92
92
|
});
|
93
93
|
},
|
94
94
|
|
95
|
-
|
96
|
-
|
95
|
+
exec_action: function(message){
|
96
|
+
window[message.function].apply(window, message.args);
|
97
97
|
},
|
98
98
|
|
99
99
|
display_status: function(message){
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mad_chatter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-01-
|
12
|
+
date: 2012-01-03 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
16
|
-
requirement: &
|
16
|
+
requirement: &2165825680 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2165825680
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: eventmachine
|
27
|
-
requirement: &
|
27
|
+
requirement: &2165825260 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2165825260
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: em-websocket
|
38
|
-
requirement: &
|
38
|
+
requirement: &2165824840 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2165824840
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: redcarpet
|
49
|
-
requirement: &
|
49
|
+
requirement: &2165824420 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,21 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2165824420
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: daemons
|
60
|
+
requirement: &2165823920 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - =
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 1.1.4
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *2165823920
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: rspec
|
60
|
-
requirement: &
|
71
|
+
requirement: &2165823500 !ruby/object:Gem::Requirement
|
61
72
|
none: false
|
62
73
|
requirements:
|
63
74
|
- - ! '>='
|
@@ -65,10 +76,10 @@ dependencies:
|
|
65
76
|
version: '0'
|
66
77
|
type: :development
|
67
78
|
prerelease: false
|
68
|
-
version_requirements: *
|
79
|
+
version_requirements: *2165823500
|
69
80
|
- !ruby/object:Gem::Dependency
|
70
81
|
name: shoulda
|
71
|
-
requirement: &
|
82
|
+
requirement: &2165823040 !ruby/object:Gem::Requirement
|
72
83
|
none: false
|
73
84
|
requirements:
|
74
85
|
- - ! '>='
|
@@ -76,7 +87,7 @@ dependencies:
|
|
76
87
|
version: '0'
|
77
88
|
type: :development
|
78
89
|
prerelease: false
|
79
|
-
version_requirements: *
|
90
|
+
version_requirements: *2165823040
|
80
91
|
description: Mad Chatter is a fun, easy to customize chat server, utilizing HTML 5
|
81
92
|
Web Sockets
|
82
93
|
email:
|
@@ -96,11 +107,12 @@ files:
|
|
96
107
|
- TODO.txt
|
97
108
|
- bin/mad_chatter
|
98
109
|
- lib/mad_chatter.rb
|
99
|
-
- lib/mad_chatter/
|
110
|
+
- lib/mad_chatter/actions/base.rb
|
111
|
+
- lib/mad_chatter/actions/dsl.rb
|
100
112
|
- lib/mad_chatter/actions/join.rb
|
101
113
|
- lib/mad_chatter/actions/rename.rb
|
102
114
|
- lib/mad_chatter/config.rb
|
103
|
-
- lib/mad_chatter/
|
115
|
+
- lib/mad_chatter/daemon.rb
|
104
116
|
- lib/mad_chatter/message.rb
|
105
117
|
- lib/mad_chatter/server.rb
|
106
118
|
- lib/mad_chatter/servers/em_websocket.rb
|
@@ -114,7 +126,8 @@ files:
|
|
114
126
|
- templates/extensions.rb
|
115
127
|
- templates/extensions/example.rb
|
116
128
|
- templates/web/index.html
|
117
|
-
- templates/web/
|
129
|
+
- templates/web/mad_chatter.js
|
130
|
+
- templates/web/mad_chatter_actions.js
|
118
131
|
- templates/web/styles.css
|
119
132
|
- test/helper.rb
|
120
133
|
- test/test_mad_chatter.rb
|
@@ -138,7 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
138
151
|
version: '0'
|
139
152
|
requirements: []
|
140
153
|
rubyforge_project:
|
141
|
-
rubygems_version: 1.8.
|
154
|
+
rubygems_version: 1.8.6
|
142
155
|
signing_key:
|
143
156
|
specification_version: 3
|
144
157
|
summary: Mad Chatter is a fun, easy to customize chat server, utilizing HTML 5 Web
|
data/lib/mad_chatter/action.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
module MadChatter
|
2
|
-
class Action
|
3
|
-
|
4
|
-
def self.inherited(extension_class)
|
5
|
-
MadChatter.extension_classes << extension_class.new
|
6
|
-
end
|
7
|
-
|
8
|
-
# Helper methods
|
9
|
-
|
10
|
-
def stop_message_handling
|
11
|
-
raise 'Dont call anymore message listeners'
|
12
|
-
end
|
13
|
-
|
14
|
-
def send_json(json)
|
15
|
-
MadChatter::Server.send_json(json)
|
16
|
-
end
|
17
|
-
|
18
|
-
def send_message(text)
|
19
|
-
message = MadChatter::Message.new('message', text)
|
20
|
-
send_json(message.to_s)
|
21
|
-
end
|
22
|
-
|
23
|
-
def send_status_message(text)
|
24
|
-
message = MadChatter::Message.new('status', text)
|
25
|
-
send_json(message.to_s)
|
26
|
-
end
|
27
|
-
|
28
|
-
def send_users_list
|
29
|
-
message = MadChatter::Message.new('users', MadChatter::Users.current)
|
30
|
-
send_json(message.to_s)
|
31
|
-
end
|
32
|
-
|
33
|
-
end
|
34
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
module MadChatter
|
2
|
-
class Extensions
|
3
|
-
|
4
|
-
def self.load_simple_extensions(extensions)
|
5
|
-
instance_eval extensions, __FILE__, __LINE__
|
6
|
-
end
|
7
|
-
|
8
|
-
def self.on_message(regex, &block)
|
9
|
-
MadChatter.simple_extensions << { regex: regex, block: block }
|
10
|
-
end
|
11
|
-
|
12
|
-
end
|
13
|
-
end
|