mad_chatter 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|