mad_chatter 0.2.5 → 0.2.6
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/Gemfile.lock +13 -1
- data/Guardfile +9 -0
- data/README.md +31 -17
- data/TODO.txt +1 -1
- data/lib/mad_chatter/message.rb +4 -1
- data/lib/mad_chatter/version.rb +1 -1
- data/mad_chatter.gemspec +4 -1
- data/spec/message_spec.rb +27 -0
- data/spec/spec_helper.rb +14 -0
- data/templates/extensions.rb +7 -0
- data/templates/web/index.html +10 -1
- data/templates/web/mad_chatter.js +2 -2
- data/templates/web/mad_chatter_actions.js +15 -0
- data/templates/web/markitup/jquery.markitup.js +593 -0
- data/templates/web/markitup/sets/default/images/bold.png +0 -0
- data/templates/web/markitup/sets/default/images/clean.png +0 -0
- data/templates/web/markitup/sets/default/images/image.png +0 -0
- data/templates/web/markitup/sets/default/images/italic.png +0 -0
- data/templates/web/markitup/sets/default/images/link.png +0 -0
- data/templates/web/markitup/sets/default/images/list-bullet.png +0 -0
- data/templates/web/markitup/sets/default/images/list-numeric.png +0 -0
- data/templates/web/markitup/sets/default/images/picture.png +0 -0
- data/templates/web/markitup/sets/default/images/preview.png +0 -0
- data/templates/web/markitup/sets/default/images/stroke.png +0 -0
- data/templates/web/markitup/sets/default/set.js +30 -0
- data/templates/web/markitup/sets/default/style.css +34 -0
- data/templates/web/markitup/sets/markdown/images/bold.png +0 -0
- data/templates/web/markitup/sets/markdown/images/code.png +0 -0
- data/templates/web/markitup/sets/markdown/images/h1.png +0 -0
- data/templates/web/markitup/sets/markdown/images/h2.png +0 -0
- data/templates/web/markitup/sets/markdown/images/h3.png +0 -0
- data/templates/web/markitup/sets/markdown/images/h4.png +0 -0
- data/templates/web/markitup/sets/markdown/images/h5.png +0 -0
- data/templates/web/markitup/sets/markdown/images/h6.png +0 -0
- data/templates/web/markitup/sets/markdown/images/italic.png +0 -0
- data/templates/web/markitup/sets/markdown/images/link.png +0 -0
- data/templates/web/markitup/sets/markdown/images/list-bullet.png +0 -0
- data/templates/web/markitup/sets/markdown/images/list-numeric.png +0 -0
- data/templates/web/markitup/sets/markdown/images/picture.png +0 -0
- data/templates/web/markitup/sets/markdown/images/preview.png +0 -0
- data/templates/web/markitup/sets/markdown/images/quotes.png +0 -0
- data/templates/web/markitup/sets/markdown/readme.txt +11 -0
- data/templates/web/markitup/sets/markdown/set.js +52 -0
- data/templates/web/markitup/sets/markdown/style.css +61 -0
- data/templates/web/markitup/skins/mad_chatter/images/handle.png +0 -0
- data/templates/web/markitup/skins/mad_chatter/images/menu.png +0 -0
- data/templates/web/markitup/skins/mad_chatter/images/submenu.png +0 -0
- data/templates/web/markitup/skins/mad_chatter/style.css +121 -0
- data/templates/web/markitup/skins/markitup/images/bg-container.png +0 -0
- data/templates/web/markitup/skins/markitup/images/bg-editor-bbcode.png +0 -0
- data/templates/web/markitup/skins/markitup/images/bg-editor-dotclear.png +0 -0
- data/templates/web/markitup/skins/markitup/images/bg-editor-html.png +0 -0
- data/templates/web/markitup/skins/markitup/images/bg-editor-json.png +0 -0
- data/templates/web/markitup/skins/markitup/images/bg-editor-markdown.png +0 -0
- data/templates/web/markitup/skins/markitup/images/bg-editor-textile.png +0 -0
- data/templates/web/markitup/skins/markitup/images/bg-editor-wiki.png +0 -0
- data/templates/web/markitup/skins/markitup/images/bg-editor-xml.png +0 -0
- data/templates/web/markitup/skins/markitup/images/bg-editor.png +0 -0
- data/templates/web/markitup/skins/markitup/images/handle.png +0 -0
- data/templates/web/markitup/skins/markitup/images/menu.png +0 -0
- data/templates/web/markitup/skins/markitup/images/submenu.png +0 -0
- data/templates/web/markitup/skins/markitup/style.css +147 -0
- data/templates/web/markitup/skins/simple/images/handle.png +0 -0
- data/templates/web/markitup/skins/simple/images/menu.png +0 -0
- data/templates/web/markitup/skins/simple/images/submenu.png +0 -0
- data/templates/web/markitup/skins/simple/style.css +121 -0
- data/templates/web/markitup/templates/preview.css +5 -0
- data/templates/web/markitup/templates/preview.html +11 -0
- data/templates/web/styles.css +7 -11
- metadata +109 -20
- data/test/helper.rb +0 -18
- data/test/test_mad_chatter.rb +0 -7
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
mad_chatter (0.2.
|
|
4
|
+
mad_chatter (0.2.6)
|
|
5
5
|
daemons (= 1.1.4)
|
|
6
6
|
em-websocket
|
|
7
7
|
eventmachine
|
|
@@ -18,6 +18,11 @@ GEM
|
|
|
18
18
|
addressable (>= 2.1.1)
|
|
19
19
|
eventmachine (>= 0.12.9)
|
|
20
20
|
eventmachine (0.12.10)
|
|
21
|
+
guard (0.8.8)
|
|
22
|
+
thor (~> 0.14.6)
|
|
23
|
+
guard-rspec (0.5.10)
|
|
24
|
+
guard (>= 0.8.4)
|
|
25
|
+
multi_json (1.0.4)
|
|
21
26
|
redcarpet (2.0.1)
|
|
22
27
|
rspec (2.7.0)
|
|
23
28
|
rspec-core (~> 2.7.0)
|
|
@@ -28,12 +33,19 @@ GEM
|
|
|
28
33
|
diff-lcs (~> 1.1.2)
|
|
29
34
|
rspec-mocks (2.7.0)
|
|
30
35
|
shoulda (2.11.3)
|
|
36
|
+
simplecov (0.5.4)
|
|
37
|
+
multi_json (~> 1.0.3)
|
|
38
|
+
simplecov-html (~> 0.5.3)
|
|
39
|
+
simplecov-html (0.5.3)
|
|
31
40
|
thor (0.14.6)
|
|
32
41
|
|
|
33
42
|
PLATFORMS
|
|
34
43
|
ruby
|
|
35
44
|
|
|
36
45
|
DEPENDENCIES
|
|
46
|
+
guard
|
|
47
|
+
guard-rspec
|
|
37
48
|
mad_chatter!
|
|
38
49
|
rspec
|
|
39
50
|
shoulda
|
|
51
|
+
simplecov
|
data/Guardfile
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# A sample Guardfile
|
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
|
3
|
+
|
|
4
|
+
guard 'rspec', :cli => "--color --format nested --fail-fast --drb", :notification => false do
|
|
5
|
+
watch(%r{^spec/.+_spec\.rb$})
|
|
6
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
|
7
|
+
watch('spec/spec_helper.rb') { "spec" }
|
|
8
|
+
end
|
|
9
|
+
|
data/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
#Mad Chatter
|
|
1
|
+
# Mad Chatter
|
|
2
2
|
|
|
3
|
-
Mad Chatter is a fun, easy to customize chat server. It's written in Ruby and utilizes HTML 5 Web Sockets for fast communication.
|
|
3
|
+
Mad Chatter is a fun, easy to customize chat server. It's written in Ruby and utilizes HTML 5 Web Sockets for fast communication. It also has support for Markdown.
|
|
4
4
|
|
|
5
|
-
##Getting Started
|
|
5
|
+
## Getting Started
|
|
6
6
|
|
|
7
7
|
To get started, first install the Mad Chatter gem:
|
|
8
8
|
|
|
@@ -19,10 +19,9 @@ This command will generate the following structure:
|
|
|
19
19
|
extensions.rb
|
|
20
20
|
web/
|
|
21
21
|
index.html
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
styles.css
|
|
22
|
+
styles.css
|
|
23
|
+
mad_chatter.js
|
|
24
|
+
mad_chatter_actions.js
|
|
26
25
|
|
|
27
26
|
To start your chat server, navigate to the directory that was just created and run...
|
|
28
27
|
|
|
@@ -34,8 +33,7 @@ The start command will launch the web socket server in the background. You can u
|
|
|
34
33
|
|
|
35
34
|
mad_chatter stop
|
|
36
35
|
|
|
37
|
-
|
|
38
|
-
##Chat Actions
|
|
36
|
+
## Chat Actions
|
|
39
37
|
|
|
40
38
|
Hopefully, the default chatroom will be relatively intuitive to use. However, there are some extra features that Mad Chatter provides. Every chat message is parsed to see if it is a normal chat message, or if its a special action. These actions are much like IRC commands. For example, if I wanted to change my screen name from Andrew to Andy I could chat this message:
|
|
41
39
|
|
|
@@ -47,29 +45,45 @@ If I wanted to embed a YouTube video for all the members of the chatroom to enjo
|
|
|
47
45
|
|
|
48
46
|
/youtube http://youtu.be/n1NVfDlU6yQ
|
|
49
47
|
|
|
50
|
-
|
|
48
|
+
Or if I wanted to shake everyone's chat window:
|
|
49
|
+
|
|
50
|
+
/earthquake
|
|
51
|
+
|
|
52
|
+
You can also create your own actions to do whatever you want.
|
|
51
53
|
|
|
52
54
|
|
|
53
|
-
##Customizing
|
|
55
|
+
## Customizing
|
|
54
56
|
|
|
55
57
|
The goal of Mad Chatter is to make it easy to create, host, and customize your own chat server. Let's take a look at the different ways you can customize your new chat server.
|
|
56
58
|
|
|
57
|
-
If you want to customize the html/css of your chatroom, you'll find
|
|
59
|
+
If you want to customize the html/css of your chatroom, you'll find it in the web directory.
|
|
58
60
|
|
|
59
61
|
There is an example config file that shows a few examples of things you can customize.
|
|
60
62
|
|
|
61
|
-
The extensions.rb file is for you to create your own chat extensions. You will find
|
|
63
|
+
The extensions.rb file is for you to create your own chat extensions. You will find a few examples in that file.
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
## Mac, Windows, and Linux Wrappers
|
|
67
|
+
|
|
68
|
+
Once you've got your chat server running and being used by other people, you might be interested in using/distributing an installable application, so you can leave it running and don't need to pull it up in a browser anymore. Here's a list of the currently available GUI wrapper applications:
|
|
69
|
+
|
|
70
|
+
* [Mad Chatter for Mac](https://github.com/andrewhavens/mad_chatter_for_mac) (a MacRuby app based on WebKit)
|
|
71
|
+
|
|
72
|
+
## Getting Help / Providing Feedback
|
|
73
|
+
|
|
74
|
+
Feel free to submit a GitHub issue, or post to the [Google Group](https://groups.google.com/group/mad-chatter), or send me a message on GitHub.
|
|
62
75
|
|
|
76
|
+
You can also vote on upcoming features: https://madchatter.uservoice.com
|
|
63
77
|
|
|
64
|
-
##Contributing
|
|
78
|
+
## Contributing
|
|
65
79
|
|
|
66
80
|
Please fork and send pull requests! Or submit issues if you have suggestions on how to improve.
|
|
67
81
|
|
|
68
|
-
##TODO
|
|
82
|
+
## TODO
|
|
69
83
|
|
|
70
|
-
-
|
|
84
|
+
- Maybe add support for alternative web socket servers like Juggernaut, Socket.io, or Cramp and web-socket-js
|
|
71
85
|
- Add tests! (I'm new to this, so I need help)
|
|
72
86
|
|
|
73
87
|
##Copyright
|
|
74
88
|
|
|
75
|
-
Copyright (c) 2011 Andrew Havens. See LICENSE.txt for further details.
|
|
89
|
+
Copyright (c) 2011-2012 Andrew Havens. MIT license. See LICENSE.txt for further details.
|
data/TODO.txt
CHANGED
data/lib/mad_chatter/message.rb
CHANGED
|
@@ -26,7 +26,10 @@ module MadChatter
|
|
|
26
26
|
|
|
27
27
|
def filter
|
|
28
28
|
@filtered_text = MadChatter.markdown.render(@original_text)
|
|
29
|
-
|
|
29
|
+
# remove the <p> tags that markdown wraps by default
|
|
30
|
+
@filtered_text.sub!(/^<p>/, '')
|
|
31
|
+
@filtered_text.sub!(/<\/p>$/, '')
|
|
32
|
+
@filtered_text
|
|
30
33
|
end
|
|
31
34
|
|
|
32
35
|
end
|
data/lib/mad_chatter/version.rb
CHANGED
data/mad_chatter.gemspec
CHANGED
|
@@ -23,7 +23,10 @@ Gem::Specification.new do |s|
|
|
|
23
23
|
s.add_runtime_dependency "em-websocket"
|
|
24
24
|
s.add_runtime_dependency "redcarpet"
|
|
25
25
|
s.add_runtime_dependency "daemons", "1.1.4"
|
|
26
|
-
|
|
26
|
+
|
|
27
27
|
s.add_development_dependency "rspec"
|
|
28
28
|
s.add_development_dependency "shoulda"
|
|
29
|
+
s.add_development_dependency 'guard'
|
|
30
|
+
s.add_development_dependency 'guard-rspec'
|
|
31
|
+
s.add_development_dependency 'simplecov'
|
|
29
32
|
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'spec_helper' # see http://stackoverflow.com/q/5061179/314318
|
|
2
|
+
|
|
3
|
+
describe MadChatter::Message do
|
|
4
|
+
let (:message) { MadChatter::Message.new('joy', 'I am the model of the modern major general') }
|
|
5
|
+
|
|
6
|
+
it 'should have a well-known interface' do
|
|
7
|
+
[:text, :to_json, :filter].each do |m|
|
|
8
|
+
message.should respond_to(m)
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it 'should encode into JSON correctly' do
|
|
13
|
+
message.to_json.should match /modern major general/
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
context '#filter' do
|
|
17
|
+
it 'should remove <p> tags' do
|
|
18
|
+
message.filter.should_not match /<[\s\\]*p[\s]*>/
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it 'should be able to handle messages made of empty space' do
|
|
22
|
+
message = MadChatter::Message.new('message', " ")
|
|
23
|
+
message.filter.should match ''
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require 'simplecov'
|
|
2
|
+
SimpleCov.start
|
|
3
|
+
|
|
4
|
+
require 'mad_chatter'
|
|
5
|
+
require 'rspec/mocks'
|
|
6
|
+
|
|
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
|
+
RSpec.configure do |config|
|
|
11
|
+
config.mock_framework = :rspec
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
|
data/templates/extensions.rb
CHANGED
|
@@ -19,4 +19,11 @@ end
|
|
|
19
19
|
|
|
20
20
|
on_message %r{/alert (.*)} do |alert_message|
|
|
21
21
|
send_action 'show_alert', alert_message
|
|
22
|
+
stop_message_handling
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
on_message %r{/earthquake} do
|
|
26
|
+
send_status_message 'Someone has just caused an earthquake!'
|
|
27
|
+
send_action 'earthquake'
|
|
28
|
+
stop_message_handling
|
|
22
29
|
end
|
data/templates/web/index.html
CHANGED
|
@@ -7,9 +7,17 @@
|
|
|
7
7
|
<script src='http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js'></script>
|
|
8
8
|
<script src='mad_chatter.js'></script>
|
|
9
9
|
<script src='mad_chatter_actions.js'></script>
|
|
10
|
+
|
|
11
|
+
<!-- markItUp! -->
|
|
12
|
+
<script type="text/javascript" src="markitup/jquery.markitup.js"></script>
|
|
13
|
+
<script type="text/javascript" src="markitup/sets/markdown/set.js"></script>
|
|
14
|
+
<link rel="stylesheet" type="text/css" href="markitup/skins/mad_chatter/style.css" />
|
|
15
|
+
<link rel="stylesheet" type="text/css" href="markitup/sets/markdown/style.css" />
|
|
16
|
+
|
|
10
17
|
<script>
|
|
11
18
|
$(document).ready(function(){
|
|
12
19
|
MadChatter.init('ws://localhost:8100');
|
|
20
|
+
$('#keyboard textarea').markItUp(mySettings);
|
|
13
21
|
});
|
|
14
22
|
</script>
|
|
15
23
|
</head>
|
|
@@ -31,7 +39,8 @@
|
|
|
31
39
|
<ul id="members"></ul>
|
|
32
40
|
</div>
|
|
33
41
|
<div id="keyboard">
|
|
34
|
-
<input type="text">
|
|
42
|
+
<!-- <input type="text"> -->
|
|
43
|
+
<textarea></textarea>
|
|
35
44
|
</div>
|
|
36
45
|
<div id="messages"></div>
|
|
37
46
|
</div>
|
|
@@ -37,10 +37,10 @@ var MadChatter = {
|
|
|
37
37
|
},
|
|
38
38
|
|
|
39
39
|
wait_for_chat_submit: function(){
|
|
40
|
-
var keyboard = $("#keyboard
|
|
40
|
+
var keyboard = $("#keyboard textarea");
|
|
41
41
|
keyboard.keyup(function (event) {
|
|
42
42
|
if (event.keyCode == 13) { // The enter key.
|
|
43
|
-
|
|
43
|
+
MadChatter.send_message(keyboard.val());
|
|
44
44
|
keyboard.val('');
|
|
45
45
|
}
|
|
46
46
|
});
|
|
@@ -1,4 +1,19 @@
|
|
|
1
1
|
// This function is called when '/alert' is sent in a chat message
|
|
2
2
|
function show_alert(message) {
|
|
3
3
|
alert(message);
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
// This function is called when '/earthquake' is sent as a chat message
|
|
7
|
+
function earthquake() {
|
|
8
|
+
var n = 4;
|
|
9
|
+
if (parent.moveBy) {
|
|
10
|
+
for (i = 10; i > 0; i--) {
|
|
11
|
+
for (j = n; j > 0; j--) {
|
|
12
|
+
parent.moveBy(0, i);
|
|
13
|
+
parent.moveBy(i, 0);
|
|
14
|
+
parent.moveBy(0, -i);
|
|
15
|
+
parent.moveBy(-i, 0);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
4
19
|
}
|