mad_chatter 0.3.1 → 0.3.2
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 -0
- data/.travis.yml +12 -0
- data/README.md +3 -5
- data/bin/mad_chatter +1 -1
- data/lib/mad_chatter.rb +22 -4
- data/lib/mad_chatter/config.rb +1 -6
- data/lib/mad_chatter/message.rb +5 -3
- data/lib/mad_chatter/message_listeners/channel_commands.rb +53 -0
- data/lib/mad_chatter/message_listeners/code.rb +0 -3
- data/lib/mad_chatter/message_listeners/markdown.rb +11 -5
- data/lib/mad_chatter/message_listeners/nick.rb +1 -1
- data/lib/mad_chatter/user.rb +1 -7
- data/lib/mad_chatter/version.rb +1 -1
- data/mad_chatter.gemspec +8 -7
- data/spec/mad_chatter_spec.rb +17 -0
- data/spec/message_listeners/{join_spec.rb → channel_commands_spec.rb} +17 -5
- data/spec/message_listeners/code_spec.rb +1 -1
- data/spec/message_listeners/markdown_spec.rb +12 -8
- data/spec/message_spec.rb +13 -3
- data/spec/spec_helper.rb +4 -7
- data/templates/web/css/mad_chatter.css +1 -1
- data/templates/web/index.html +35 -7
- data/templates/web/js/mad_chatter.js +33 -22
- data/templates/web/js/mad_chatter_config.js +1 -1
- metadata +28 -53
- data/Gemfile.lock +0 -53
- data/lib/mad_chatter/actions/base.rb +0 -26
- data/lib/mad_chatter/actions/dsl.rb +0 -38
- data/lib/mad_chatter/actions/join.rb +0 -23
- data/lib/mad_chatter/actions/rename.rb +0 -24
- data/lib/mad_chatter/connection.rb +0 -29
- data/lib/mad_chatter/markdown_renderer.rb +0 -16
- data/lib/mad_chatter/message_listeners/join.rb +0 -30
- data/lib/mad_chatter/servers/juggernaut.rb +0 -9
- data/lib/mad_chatter/servers/websocket_rack.rb +0 -9
- data/lib/mad_chatter/users.rb +0 -40
- data/spec/actions_spec.rb +0 -7
- data/spec/server_spec.rb +0 -43
- data/spec/users_spec.rb +0 -23
- data/templates/web/css/styles.css +0 -166
data/spec/message_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'spec_helper'
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe MadChatter::Message do
|
4
4
|
|
@@ -16,8 +16,18 @@ describe MadChatter::Message do
|
|
16
16
|
|
17
17
|
it 'should encode into JSON correctly' do
|
18
18
|
message = MadChatter::Message.new('type', 'message', 'token', 'channel')
|
19
|
-
message.
|
20
|
-
|
19
|
+
message.timestamp = 1234567890
|
20
|
+
message.to_json.should == '
|
21
|
+
{
|
22
|
+
"type":"type",
|
23
|
+
"text":"message",
|
24
|
+
"html":"message",
|
25
|
+
"username":null,
|
26
|
+
"channel":"channel",
|
27
|
+
"growl":"message",
|
28
|
+
"time":1234567890
|
29
|
+
}
|
30
|
+
'.gsub(/\s+/, '') # remove the white space
|
21
31
|
end
|
22
32
|
|
23
33
|
context '#username' do
|
data/spec/spec_helper.rb
CHANGED
@@ -1,14 +1,11 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
unless ENV['CI']
|
2
|
+
require 'simplecov'
|
3
|
+
SimpleCov.start
|
4
|
+
end
|
3
5
|
|
4
6
|
require 'mad_chatter'
|
5
7
|
require 'rspec/mocks'
|
6
8
|
|
7
|
-
# See http://rubydoc.info/gems/rspec-mocks/frames for more details on
|
8
|
-
# the API.
|
9
|
-
## Don't like RSpec mocks? See: https://www.relishapp.com/rspec/rspec-core/docs/mock-framework-integration/mock-with-rspec
|
10
9
|
RSpec.configure do |config|
|
11
10
|
config.mock_framework = :rspec
|
12
11
|
end
|
13
|
-
|
14
|
-
|
data/templates/web/index.html
CHANGED
@@ -10,7 +10,10 @@
|
|
10
10
|
<!--[if lt IE 9]>
|
11
11
|
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
|
12
12
|
<![endif]-->
|
13
|
-
|
13
|
+
<script src="js/swfobject.js"></script>
|
14
|
+
<script src="js/web_socket.js"></script>
|
15
|
+
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
|
16
|
+
|
14
17
|
<!-- Le styles -->
|
15
18
|
<link href="css/bootstrap.css" rel="stylesheet">
|
16
19
|
<link href="css/mad_chatter.css" rel="stylesheet">
|
@@ -23,6 +26,11 @@
|
|
23
26
|
</head>
|
24
27
|
|
25
28
|
<body>
|
29
|
+
|
30
|
+
<div id="upgrade_flash" class="container-fluid" style="display:none">
|
31
|
+
<h1>Mad Chatter</h1>
|
32
|
+
<p>Looks like you need to <a href="http://get.adobe.com/flashplayer" class="btn btn-primary">upgrade your flash player</a></p>
|
33
|
+
</div>
|
26
34
|
|
27
35
|
<div id="login_screen" class="container-fluid">
|
28
36
|
<div class="hero-unit">
|
@@ -48,11 +56,12 @@
|
|
48
56
|
</div>
|
49
57
|
|
50
58
|
<div data-channel="lobby" class="channel container-fluid" style="display:none">
|
59
|
+
<a data-toggle="modal" href="#create_channel" class="btn btn-large" style="float:right">Create a Room</a>
|
51
60
|
<h2>Rooms</h2>
|
52
61
|
<ul id="channels"></ul>
|
53
62
|
<p class="create_room" style="display:none">
|
54
63
|
It doesn't look like there are any rooms here.
|
55
|
-
Why don't you create one?
|
64
|
+
Why don't you create one?
|
56
65
|
</p>
|
57
66
|
</div>
|
58
67
|
|
@@ -145,6 +154,25 @@
|
|
145
154
|
</div>
|
146
155
|
</div>
|
147
156
|
|
157
|
+
<div id="create_channel" class="modal fade hide">
|
158
|
+
<div class="modal-header">
|
159
|
+
<a class="close" data-dismiss="modal">×</a>
|
160
|
+
<h3>Create New Room</h3>
|
161
|
+
</div>
|
162
|
+
<div class="modal-body form-horizontal">
|
163
|
+
<div class="control-group">
|
164
|
+
<label class="control-label" for="name">Room Name</label>
|
165
|
+
<div class="controls">
|
166
|
+
<input type="text" class="input-xlarge" name="name">
|
167
|
+
</div>
|
168
|
+
</div>
|
169
|
+
</div>
|
170
|
+
<div class="modal-footer">
|
171
|
+
<a href="#" class="btn btn-primary">Create</a>
|
172
|
+
<a href="#" class="btn" data-dismiss="modal">Cancel</a>
|
173
|
+
</div>
|
174
|
+
</div>
|
175
|
+
|
148
176
|
</div>
|
149
177
|
|
150
178
|
<div id="disconnected" class="modal fade hide">
|
@@ -164,19 +192,19 @@
|
|
164
192
|
<!-- Le javascript
|
165
193
|
================================================== -->
|
166
194
|
<!-- Placed at the end of the document so the pages load faster -->
|
167
|
-
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
|
168
195
|
<script src="js/bootstrap.min.js"></script>
|
169
|
-
<script src="js/swfobject.js"></script>
|
170
|
-
<script src="js/web_socket.js"></script>
|
171
196
|
|
172
197
|
<!-- Mad Chatter -->
|
173
198
|
<script src='js/mad_chatter.js'></script>
|
174
199
|
<script src='js/mad_chatter_actions.js'></script>
|
175
200
|
<script src='js/mad_chatter_config.js'></script>
|
176
201
|
<script>
|
177
|
-
|
202
|
+
if (!window.WebSocket && swfobject.getFlashPlayerVersion().major < 10) {
|
203
|
+
$('#login_screen').hide();
|
204
|
+
$('#upgrade_flash').show();
|
205
|
+
} else {
|
178
206
|
MadChatter.init(mad_chatter_config);
|
179
|
-
}
|
207
|
+
}
|
180
208
|
</script>
|
181
209
|
</body>
|
182
210
|
</html>
|
@@ -8,7 +8,6 @@ var MadChatter = {
|
|
8
8
|
|
9
9
|
init_websocket: function(ws_host){
|
10
10
|
if (typeof WebSocket === 'undefined') {
|
11
|
-
alert("Your browser does not support websockets.")
|
12
11
|
return false;
|
13
12
|
}
|
14
13
|
var ws = new WebSocket(ws_host);
|
@@ -80,7 +79,7 @@ var MadChatter = {
|
|
80
79
|
delay: { show: 0, hide: 1000 }
|
81
80
|
});
|
82
81
|
|
83
|
-
$('
|
82
|
+
$('#channels, #channel_tabs').on('click', '.join_channel', function(e){
|
84
83
|
e.preventDefault();
|
85
84
|
var channel_id = $(this).attr('data-channel'),
|
86
85
|
channel_name = $(this).text();
|
@@ -110,6 +109,17 @@ var MadChatter = {
|
|
110
109
|
$input.val('');
|
111
110
|
}
|
112
111
|
});
|
112
|
+
|
113
|
+
$('#create_channel .btn-primary').on('click', function(e){
|
114
|
+
e.preventDefault();
|
115
|
+
var $input = $(this).closest('.modal').find('input');
|
116
|
+
var channel_name = $.trim($input.val());
|
117
|
+
if (channel_name.length > 0) {
|
118
|
+
MadChatter.send_message('/channel create ' + channel_name);
|
119
|
+
$('#create_channel').modal('hide');
|
120
|
+
$input.val('');
|
121
|
+
}
|
122
|
+
});
|
113
123
|
},
|
114
124
|
|
115
125
|
set_username: function(username){
|
@@ -157,6 +167,7 @@ var MadChatter = {
|
|
157
167
|
$('#users-nav').show();
|
158
168
|
}
|
159
169
|
$channel.show();
|
170
|
+
MadChatter.scroll_to_bottom_of_chat(channel_id);
|
160
171
|
},
|
161
172
|
|
162
173
|
add_channel_actions: function($channel){
|
@@ -189,7 +200,7 @@ var MadChatter = {
|
|
189
200
|
|
190
201
|
send_message: function(message, channel){
|
191
202
|
if (message == '/clear') {
|
192
|
-
MadChatter.clear_messages();
|
203
|
+
MadChatter.clear_messages(channel);
|
193
204
|
} else {
|
194
205
|
var json = {
|
195
206
|
token: MadChatter.token,
|
@@ -205,7 +216,6 @@ var MadChatter = {
|
|
205
216
|
},
|
206
217
|
|
207
218
|
message_received: function(data){
|
208
|
-
data.type, data.channel, data.username, data.text, data.html, data.growl
|
209
219
|
if (data.type == 'error') {
|
210
220
|
console.log('Client error: ' + data.text)
|
211
221
|
return;
|
@@ -223,18 +233,18 @@ var MadChatter = {
|
|
223
233
|
return;
|
224
234
|
}
|
225
235
|
if (data.type == 'status') {
|
226
|
-
MadChatter.display_status(data.channel, data.text);
|
236
|
+
MadChatter.display_status(data.channel, data.text, data.time);
|
227
237
|
}
|
228
238
|
if (data.type == 'action') {
|
229
239
|
MadChatter.exec_action(data.channel, data.json);
|
230
240
|
}
|
231
241
|
if (data.type == 'message') {
|
232
|
-
MadChatter.display_message(data.channel, data.username, data.html);
|
242
|
+
MadChatter.display_message(data.channel, data.username, data.html, data.time);
|
233
243
|
if (typeof(MadChatterGrowl) != 'undefined') {
|
234
244
|
MadChatterGrowl.send_(data.username, data.growl);
|
235
245
|
}
|
236
246
|
}
|
237
|
-
MadChatter.scroll_to_bottom_of_chat();
|
247
|
+
MadChatter.scroll_to_bottom_of_chat(data.channel);
|
238
248
|
},
|
239
249
|
|
240
250
|
update_channels_list: function(channels){
|
@@ -254,32 +264,33 @@ var MadChatter = {
|
|
254
264
|
},
|
255
265
|
|
256
266
|
exec_action: function(channel, action){
|
257
|
-
|
267
|
+
// this isnt working in IE 8...why?
|
268
|
+
// window[action.function].apply(window, action.args);
|
258
269
|
},
|
259
270
|
|
260
|
-
display_status: function(channel, message){
|
261
|
-
MadChatter.
|
262
|
-
|
263
|
-
$('.channel[data-channel="' + channel + '"] .messages').append($html);
|
271
|
+
display_status: function(channel, message, timestamp){
|
272
|
+
var html = '<p class="status">' + MadChatter.get_time_html(timestamp) + message + '</p>';
|
273
|
+
$('.channel[data-channel="' + channel + '"] .messages').append(html);
|
264
274
|
},
|
265
275
|
|
266
|
-
display_message: function(channel, username, message){
|
267
|
-
MadChatter.
|
268
|
-
|
269
|
-
$('.channel[data-channel="' + channel + '"] .messages').append($html);
|
276
|
+
display_message: function(channel, username, message, timestamp){
|
277
|
+
var html = '<p class="message">' + MadChatter.get_time_html(timestamp) + '<span class="username">' + username + ':</span> ' + message + '</p>';
|
278
|
+
$('.channel[data-channel="' + channel + '"] .messages').append(html);
|
270
279
|
},
|
271
280
|
|
272
|
-
|
273
|
-
var
|
274
|
-
|
281
|
+
get_time_html: function(timestamp){
|
282
|
+
var html = '';
|
283
|
+
var last_message_time = MadChatter.last_message_time;
|
284
|
+
var current_time = MadChatter.get_time_string(timestamp);
|
275
285
|
if (last_message_time != current_time) {
|
276
286
|
MadChatter.last_message_time = current_time;
|
277
|
-
|
287
|
+
html = '<time>' + current_time + '</time>';
|
278
288
|
}
|
289
|
+
return html;
|
279
290
|
},
|
280
291
|
|
281
|
-
|
282
|
-
var time = new Date();
|
292
|
+
get_time_string: function(timestamp){
|
293
|
+
var time = new Date(timestamp*1000); //timestamp must me in milliseconds
|
283
294
|
var hours = time.getHours();
|
284
295
|
var minutes = time.getMinutes();
|
285
296
|
var ampm = 'am';
|
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.3.
|
4
|
+
version: 0.3.2
|
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-02-
|
12
|
+
date: 2012-02-17 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
16
|
-
requirement: &
|
16
|
+
requirement: &2165016220 !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: *2165016220
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: eventmachine
|
27
|
-
requirement: &
|
27
|
+
requirement: &2165009100 !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: *2165009100
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: em-websocket
|
38
|
-
requirement: &
|
38
|
+
requirement: &2165008680 !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: *2165008680
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: daemons
|
49
|
-
requirement: &
|
49
|
+
requirement: &2165008180 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - =
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.1.4
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2165008180
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rspec
|
60
|
-
requirement: &
|
60
|
+
requirement: &2165007700 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,21 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: shoulda
|
71
|
-
requirement: &2160784660 !ruby/object:Gem::Requirement
|
72
|
-
none: false
|
73
|
-
requirements:
|
74
|
-
- - ! '>='
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: '0'
|
77
|
-
type: :development
|
78
|
-
prerelease: false
|
79
|
-
version_requirements: *2160784660
|
68
|
+
version_requirements: *2165007700
|
80
69
|
- !ruby/object:Gem::Dependency
|
81
70
|
name: simplecov
|
82
|
-
requirement: &
|
71
|
+
requirement: &2165007160 !ruby/object:Gem::Requirement
|
83
72
|
none: false
|
84
73
|
requirements:
|
85
74
|
- - ! '>='
|
@@ -87,10 +76,10 @@ dependencies:
|
|
87
76
|
version: '0'
|
88
77
|
type: :development
|
89
78
|
prerelease: false
|
90
|
-
version_requirements: *
|
79
|
+
version_requirements: *2165007160
|
91
80
|
- !ruby/object:Gem::Dependency
|
92
81
|
name: guard
|
93
|
-
requirement: &
|
82
|
+
requirement: &2165006660 !ruby/object:Gem::Requirement
|
94
83
|
none: false
|
95
84
|
requirements:
|
96
85
|
- - ! '>='
|
@@ -98,10 +87,10 @@ dependencies:
|
|
98
87
|
version: '0'
|
99
88
|
type: :development
|
100
89
|
prerelease: false
|
101
|
-
version_requirements: *
|
90
|
+
version_requirements: *2165006660
|
102
91
|
- !ruby/object:Gem::Dependency
|
103
92
|
name: guard-rspec
|
104
|
-
requirement: &
|
93
|
+
requirement: &2165006100 !ruby/object:Gem::Requirement
|
105
94
|
none: false
|
106
95
|
requirements:
|
107
96
|
- - ! '>='
|
@@ -109,10 +98,10 @@ dependencies:
|
|
109
98
|
version: '0'
|
110
99
|
type: :development
|
111
100
|
prerelease: false
|
112
|
-
version_requirements: *
|
101
|
+
version_requirements: *2165006100
|
113
102
|
- !ruby/object:Gem::Dependency
|
114
103
|
name: rb-fsevent
|
115
|
-
requirement: &
|
104
|
+
requirement: &2165005240 !ruby/object:Gem::Requirement
|
116
105
|
none: false
|
117
106
|
requirements:
|
118
107
|
- - ! '>='
|
@@ -120,10 +109,10 @@ dependencies:
|
|
120
109
|
version: '0'
|
121
110
|
type: :development
|
122
111
|
prerelease: false
|
123
|
-
version_requirements: *
|
112
|
+
version_requirements: *2165005240
|
124
113
|
- !ruby/object:Gem::Dependency
|
125
114
|
name: ruby-growl
|
126
|
-
requirement: &
|
115
|
+
requirement: &2165004800 !ruby/object:Gem::Requirement
|
127
116
|
none: false
|
128
117
|
requirements:
|
129
118
|
- - ! '>='
|
@@ -131,7 +120,7 @@ dependencies:
|
|
131
120
|
version: '0'
|
132
121
|
type: :development
|
133
122
|
prerelease: false
|
134
|
-
version_requirements: *
|
123
|
+
version_requirements: *2165004800
|
135
124
|
description: Mad Chatter is a fun, easy to customize chat server, utilizing HTML 5
|
136
125
|
Web Sockets
|
137
126
|
email:
|
@@ -143,9 +132,9 @@ extra_rdoc_files: []
|
|
143
132
|
files:
|
144
133
|
- .gitignore
|
145
134
|
- .rvmrc
|
135
|
+
- .travis.yml
|
146
136
|
- CHANGELOG.txt
|
147
137
|
- Gemfile
|
148
|
-
- Gemfile.lock
|
149
138
|
- Guardfile
|
150
139
|
- LICENSE.txt
|
151
140
|
- README.md
|
@@ -153,43 +142,32 @@ files:
|
|
153
142
|
- bin/mad_chatter
|
154
143
|
- lib/mad_chatter.rb
|
155
144
|
- lib/mad_chatter/actions.rb
|
156
|
-
- lib/mad_chatter/actions/base.rb
|
157
|
-
- lib/mad_chatter/actions/dsl.rb
|
158
|
-
- lib/mad_chatter/actions/join.rb
|
159
|
-
- lib/mad_chatter/actions/rename.rb
|
160
145
|
- lib/mad_chatter/channel.rb
|
161
146
|
- lib/mad_chatter/config.rb
|
162
|
-
- lib/mad_chatter/connection.rb
|
163
147
|
- lib/mad_chatter/daemon.rb
|
164
148
|
- lib/mad_chatter/extensions.rb
|
165
|
-
- lib/mad_chatter/markdown_renderer.rb
|
166
149
|
- lib/mad_chatter/message.rb
|
167
150
|
- lib/mad_chatter/message_history.rb
|
168
151
|
- lib/mad_chatter/message_listener.rb
|
152
|
+
- lib/mad_chatter/message_listeners/channel_commands.rb
|
169
153
|
- lib/mad_chatter/message_listeners/code.rb
|
170
154
|
- lib/mad_chatter/message_listeners/image.rb
|
171
|
-
- lib/mad_chatter/message_listeners/join.rb
|
172
155
|
- lib/mad_chatter/message_listeners/markdown.rb
|
173
156
|
- lib/mad_chatter/message_listeners/nick.rb
|
174
157
|
- lib/mad_chatter/server.rb
|
175
158
|
- lib/mad_chatter/servers/em_websocket.rb
|
176
|
-
- lib/mad_chatter/servers/juggernaut.rb
|
177
|
-
- lib/mad_chatter/servers/websocket_rack.rb
|
178
159
|
- lib/mad_chatter/user.rb
|
179
|
-
- lib/mad_chatter/users.rb
|
180
160
|
- lib/mad_chatter/version.rb
|
181
161
|
- lib/mad_chatter/web_server.rb
|
182
162
|
- mad_chatter.gemspec
|
183
163
|
- screenshot.png
|
184
|
-
- spec/
|
164
|
+
- spec/mad_chatter_spec.rb
|
185
165
|
- spec/message_history_spec.rb
|
166
|
+
- spec/message_listeners/channel_commands_spec.rb
|
186
167
|
- spec/message_listeners/code_spec.rb
|
187
|
-
- spec/message_listeners/join_spec.rb
|
188
168
|
- spec/message_listeners/markdown_spec.rb
|
189
169
|
- spec/message_spec.rb
|
190
|
-
- spec/server_spec.rb
|
191
170
|
- spec/spec_helper.rb
|
192
|
-
- spec/users_spec.rb
|
193
171
|
- templates/config.yml
|
194
172
|
- templates/extensions.rb
|
195
173
|
- templates/extensions/example.rb
|
@@ -198,7 +176,6 @@ files:
|
|
198
176
|
- templates/web/css/bootstrap.min.responsive.css
|
199
177
|
- templates/web/css/bootstrap.responsive.css
|
200
178
|
- templates/web/css/mad_chatter.css
|
201
|
-
- templates/web/css/styles.css
|
202
179
|
- templates/web/img/glyphicons-halflings-white.png
|
203
180
|
- templates/web/img/glyphicons-halflings.png
|
204
181
|
- templates/web/index.html
|
@@ -236,12 +213,10 @@ specification_version: 3
|
|
236
213
|
summary: Mad Chatter is a fun, easy to customize chat server, utilizing HTML 5 Web
|
237
214
|
Sockets
|
238
215
|
test_files:
|
239
|
-
- spec/
|
216
|
+
- spec/mad_chatter_spec.rb
|
240
217
|
- spec/message_history_spec.rb
|
218
|
+
- spec/message_listeners/channel_commands_spec.rb
|
241
219
|
- spec/message_listeners/code_spec.rb
|
242
|
-
- spec/message_listeners/join_spec.rb
|
243
220
|
- spec/message_listeners/markdown_spec.rb
|
244
221
|
- spec/message_spec.rb
|
245
|
-
- spec/server_spec.rb
|
246
222
|
- spec/spec_helper.rb
|
247
|
-
- spec/users_spec.rb
|