openlogcleaner 0.1.1 → 0.1.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/VERSION +1 -1
- data/lib/openlogcleaner/emote.rb +12 -2
- data/lib/openlogcleaner/html_document.rb +20 -4
- data/openlogcleaner.gemspec +7 -2
- data/spec/fixtures/manual2_testlog.htm +93 -0
- data/spec/fixtures/manual_testlog.htm +83 -0
- data/spec/fixtures/parsed_testlog.htm +35 -0
- data/spec/openlogcleaner/html_document_spec.rb +116 -0
- data/spec/openlogcleaner_spec.rb +0 -5
- metadata +7 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.2
|
data/lib/openlogcleaner/emote.rb
CHANGED
@@ -14,13 +14,23 @@ module OpenLogCleaner
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def self.from_html(msg)
|
17
|
-
nick = msg
|
18
|
-
msg.at('span').inner_html = nick
|
17
|
+
nick = parse_nick(msg)
|
19
18
|
color = msg.at('font')[:color]
|
20
19
|
text = msg.at('font font').inner_html
|
21
20
|
new(nick, text, color)
|
22
21
|
end
|
23
22
|
|
23
|
+
def self.parse_nick(msg)
|
24
|
+
if (span = msg.at('span'))
|
25
|
+
nick = span.inner_text.sub(/^\(\d+\)\s+/, '')
|
26
|
+
span.inner_html = nick
|
27
|
+
nick
|
28
|
+
else
|
29
|
+
msg.at('font').children.first.text =~ /\*\* (.*)$/
|
30
|
+
$1.strip
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
24
34
|
def self.from_hash(msg)
|
25
35
|
new(msg[:nick], msg[:text], msg[:color])
|
26
36
|
end
|
@@ -55,16 +55,32 @@ module OpenLogCleaner
|
|
55
55
|
|
56
56
|
def add_list_entry(dt, dd)
|
57
57
|
name = dt.inner_text
|
58
|
-
if
|
58
|
+
if dd[:style] =~ /color: (#[a-f0-9]{6});/i
|
59
59
|
color = $1
|
60
|
+
else
|
61
|
+
raise "No color"
|
60
62
|
end
|
61
63
|
content = dd.inner_html
|
62
|
-
|
63
|
-
|
64
|
+
content.strip!
|
65
|
+
|
66
|
+
case dt[:class]
|
67
|
+
when /say/, /ooc/
|
68
|
+
add_message Say.new(name, content, color)
|
69
|
+
when /emote/
|
70
|
+
add_message Emote.new(name, content, color)
|
71
|
+
else
|
72
|
+
raise "Unknown class #{dt[:class].inspect}"
|
73
|
+
end
|
64
74
|
end
|
65
75
|
|
66
76
|
def add_post(msg)
|
67
|
-
|
77
|
+
if msg.children.size == 1
|
78
|
+
first_childs_first_node = msg.children.first.children.first
|
79
|
+
if first_childs_first_node.text? and first_childs_first_node.text =~ /\A\*\*/
|
80
|
+
add_message(Emote.from_html(msg))
|
81
|
+
end
|
82
|
+
return
|
83
|
+
end
|
68
84
|
return if msg.at('table') # deal with welcome messages
|
69
85
|
|
70
86
|
# fix the nick
|
data/openlogcleaner.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{openlogcleaner}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Jonathan Stott"]
|
12
|
-
s.date = %q{2011-02-
|
12
|
+
s.date = %q{2011-02-15}
|
13
13
|
s.default_executable = %q{openlogcleaner}
|
14
14
|
s.description = %q{Cleans OpenRPG Logs
|
15
15
|
|
@@ -41,6 +41,10 @@ Logs are presented in an easy to read manner, stripped of the noise of joins and
|
|
41
41
|
"lib/openlogcleaner/templates/dokuwiki_formatter.mustache",
|
42
42
|
"lib/openlogcleaner/templates/html_formatter.mustache",
|
43
43
|
"openlogcleaner.gemspec",
|
44
|
+
"spec/fixtures/manual2_testlog.htm",
|
45
|
+
"spec/fixtures/manual_testlog.htm",
|
46
|
+
"spec/fixtures/parsed_testlog.htm",
|
47
|
+
"spec/openlogcleaner/html_document_spec.rb",
|
44
48
|
"spec/openlogcleaner_spec.rb",
|
45
49
|
"spec/spec_helper.rb"
|
46
50
|
]
|
@@ -49,6 +53,7 @@ Logs are presented in an easy to read manner, stripped of the noise of joins and
|
|
49
53
|
s.rubygems_version = %q{1.5.0}
|
50
54
|
s.summary = %q{Cleans OpenRPG logs}
|
51
55
|
s.test_files = [
|
56
|
+
"spec/openlogcleaner/html_document_spec.rb",
|
52
57
|
"spec/openlogcleaner_spec.rb",
|
53
58
|
"spec/spec_helper.rb"
|
54
59
|
]
|
@@ -0,0 +1,93 @@
|
|
1
|
+
<html><body bgcolor="#ffffff" text="#000000">
|
2
|
+
<font color='#ff0000'><b>Welcome to <a href='http://www.openrpg.com'>OpenRPG</a> version 1.7.7... </b></font>
|
3
|
+
<div class='info'><font color='#ff8000'>Locating server at example.com:6774...</font></div>
|
4
|
+
<div class='info'><font color='#ff8000'>Game connected!</font></div>
|
5
|
+
<div class='info'><font color='#ff8000'>(2836) User (enter): 21:43</font></div>
|
6
|
+
<b><i><u>Server Administrator</u>-></i></b> You have connected to an <a href="http://www.openrpg.com">OpenRPG</a> server, version '1.8.0', named 'Example'.<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
7
|
+
<html>
|
8
|
+
|
9
|
+
<table cellspacing=3 cellpadding=4 width="100%">
|
10
|
+
<tr>
|
11
|
+
<td bgcolor="#101010" align="bottom">
|
12
|
+
<center></center>
|
13
|
+
</td>
|
14
|
+
</tr>
|
15
|
+
<tr>
|
16
|
+
<td bgcolor="#73A183" align="center">
|
17
|
+
<table cellpadding="0" cellspacing="0" width="100%">
|
18
|
+
<tr>
|
19
|
+
<td align="center" width="100%">
|
20
|
+
<h3>Welcome to Example!</h3>
|
21
|
+
</td>
|
22
|
+
</tr>
|
23
|
+
<tr>
|
24
|
+
<td align="center" width="100%">
|
25
|
+
Please stay a while.
|
26
|
+
</td>
|
27
|
+
</tr>
|
28
|
+
</table>
|
29
|
+
</td>
|
30
|
+
</tr>
|
31
|
+
</table><!-- Created: Thursday November 9 23:55:12 PDT 2003 -->
|
32
|
+
<div class='post'><b class='name'>(2836) User</b>: <font color='#004000'>say something</font></div>
|
33
|
+
<div class='emote'><font color='#008000'>** <span class='name'>(2836) User</span> <font color='#008000'>emote something</font> **</font></div>
|
34
|
+
<div class='post'><b class='name'>(2836) User</b>: <font color='#004000'>(( say something ))</font></div>
|
35
|
+
<div class='info'><font color='#ff8000'>Moving to room 'test room'..</font></div>
|
36
|
+
<div class='info'><font color='#ff8000'>(2836) User (enter): 21:44</font></div>
|
37
|
+
<b><i><u>Server Administrator</u>-></i></b> <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
38
|
+
<html>
|
39
|
+
|
40
|
+
<table cellspacing=3 cellpadding=4 width="100%">
|
41
|
+
<tr>
|
42
|
+
<td bgcolor="#101010" align="bottom">
|
43
|
+
<center></center>
|
44
|
+
</td>
|
45
|
+
</tr>
|
46
|
+
<tr>
|
47
|
+
<td bgcolor="#73A183" align="center">
|
48
|
+
<table cellpadding="0" cellspacing="0" width="100%">
|
49
|
+
<tr>
|
50
|
+
<td align="center" width="100%">
|
51
|
+
<h3>Welcome to Example!</h3>
|
52
|
+
</td>
|
53
|
+
</tr>
|
54
|
+
<tr>
|
55
|
+
<td align="center" width="100%">
|
56
|
+
Please stay a while.
|
57
|
+
</td>
|
58
|
+
</tr>
|
59
|
+
</table>
|
60
|
+
</td>
|
61
|
+
</tr>
|
62
|
+
</table><!-- Created: Thursday November 9 23:55:12 PDT 2003 -->
|
63
|
+
<div class='info'><font color='#ff8000'>Moving to room 'Lobby'..</font></div>
|
64
|
+
<div class='info'><font color='#ff8000'>(2836) User (enter): 21:44</font></div>
|
65
|
+
<b><i><u>Server Administrator</u>-></i></b> <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
66
|
+
<html>
|
67
|
+
|
68
|
+
<table cellspacing=3 cellpadding=4 width="100%">
|
69
|
+
<tr>
|
70
|
+
<td bgcolor="#101010" align="bottom">
|
71
|
+
<center></center>
|
72
|
+
</td>
|
73
|
+
</tr>
|
74
|
+
<tr>
|
75
|
+
<td bgcolor="#73A183" align="center">
|
76
|
+
<table cellpadding="0" cellspacing="0" width="100%">
|
77
|
+
<tr>
|
78
|
+
<td align="center" width="100%">
|
79
|
+
<h3>Welcome to Example!</h3>
|
80
|
+
</td>
|
81
|
+
</tr>
|
82
|
+
<tr>
|
83
|
+
<td align="center" width="100%">
|
84
|
+
Please stay a while.
|
85
|
+
</td>
|
86
|
+
</tr>
|
87
|
+
</table>
|
88
|
+
</td>
|
89
|
+
</tr>
|
90
|
+
</table><!-- Created: Thursday November 9 23:55:12 PDT 2003 -->
|
91
|
+
<div class='system'><font color='#ff0000'>Disconnecting from server...</font></div>
|
92
|
+
<div class='system'><font color='#ff0000'>Game disconnected!</font></div>
|
93
|
+
</body></html>
|
@@ -0,0 +1,83 @@
|
|
1
|
+
<html><body bgcolor="#ffffff" text="#000000">
|
2
|
+
<div class="post"><font color="#ff0000"><b>Welcome to <a href="http://www.openrpg.com">OpenRPG</a> version 1.8.0 ... </b></font></div><div class="post"><font color="#ff8000">Locating server at example.com:6774...</font></div><div class="post"><font color="#ff8000">Game connected!</font></div><div class="post"><font color="#ff8000">User (enter): 21:42</font></div><div class="post">You have connected to an <a href="http://www.openrpg.com">OpenRPG</a> server, version '1.8.0', named 'Example'.<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
3
|
+
<html>
|
4
|
+
|
5
|
+
<table cellspacing=3 cellpadding=4 width="100%">
|
6
|
+
<tr>
|
7
|
+
<td bgcolor="#101010" align="bottom">
|
8
|
+
<center></center>
|
9
|
+
</td>
|
10
|
+
</tr>
|
11
|
+
<tr>
|
12
|
+
<td bgcolor="#73A183" align="center">
|
13
|
+
<table cellpadding="0" cellspacing="0" width="100%">
|
14
|
+
<tr>
|
15
|
+
<td align="center" width="100%">
|
16
|
+
<h3>Welcome to Example!</h3>
|
17
|
+
</td>
|
18
|
+
</tr>
|
19
|
+
<tr>
|
20
|
+
<td align="center" width="100%">
|
21
|
+
Please stay a while.
|
22
|
+
</td>
|
23
|
+
</tr>
|
24
|
+
</table>
|
25
|
+
</td>
|
26
|
+
</tr>
|
27
|
+
</table><!-- Created: Thursday November 9 23:55:12 PDT 2003 -->
|
28
|
+
|
29
|
+
</div><div class="post"><font color="#ff8000">Moving to room 'Test room'..</font></div><div class="post"><font color="#ff8000">User (enter): 21:42</font></div><div class="post"><!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
30
|
+
<html>
|
31
|
+
|
32
|
+
<table cellspacing=3 cellpadding=4 width="100%">
|
33
|
+
<tr>
|
34
|
+
<td bgcolor="#101010" align="bottom">
|
35
|
+
<center></center>
|
36
|
+
</td>
|
37
|
+
</tr>
|
38
|
+
<tr>
|
39
|
+
<td bgcolor="#73A183" align="center">
|
40
|
+
<table cellpadding="0" cellspacing="0" width="100%">
|
41
|
+
<tr>
|
42
|
+
<td align="center" width="100%">
|
43
|
+
<h3>Welcome to Example!</h3>
|
44
|
+
</td>
|
45
|
+
</tr>
|
46
|
+
<tr>
|
47
|
+
<td align="center" width="100%">
|
48
|
+
Please stay a while.
|
49
|
+
</td>
|
50
|
+
</tr>
|
51
|
+
</table>
|
52
|
+
</td>
|
53
|
+
</tr>
|
54
|
+
</table><!-- Created: Thursday November 9 23:55:12 PDT 2003 -->
|
55
|
+
|
56
|
+
</div><div class="post"><b>User</b>: <font color="#004000">say something</font></div><div class="post"><font color="#004040">** User <font color="#004040">emote something</font> **</font></div><div class="post"><b>User</b>: <font color="#004000">(( say something ))</font></div><div class="post"><font color="#ff8000">Moving to room 'Lobby'..</font></div><div class="post"><font color="#ff8000">User (enter): 21:42</font></div><div class="post"><!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
57
|
+
<html>
|
58
|
+
|
59
|
+
<table cellspacing=3 cellpadding=4 width="100%">
|
60
|
+
<tr>
|
61
|
+
<td bgcolor="#101010" align="bottom">
|
62
|
+
<center></center>
|
63
|
+
</td>
|
64
|
+
</tr>
|
65
|
+
<tr>
|
66
|
+
<td bgcolor="#73A183" align="center">
|
67
|
+
<table cellpadding="0" cellspacing="0" width="100%">
|
68
|
+
<tr>
|
69
|
+
<td align="center" width="100%">
|
70
|
+
<h3>Welcome to Example!</h3>
|
71
|
+
</td>
|
72
|
+
</tr>
|
73
|
+
<tr>
|
74
|
+
<td align="center" width="100%">
|
75
|
+
Please stay a while.
|
76
|
+
</td>
|
77
|
+
</tr>
|
78
|
+
</table>
|
79
|
+
</td>
|
80
|
+
</tr>
|
81
|
+
</table><!-- Created: Thursday November 9 23:55:12 PDT 2003 -->
|
82
|
+
|
83
|
+
</div><div class="post"><font color="#ff0000">Disconnecting from server...</font></div><div class="post"><font color="#ff0000">Game disconnected!</font></div></body></html>
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<style type='text/css'>
|
5
|
+
body { text-align: center; }
|
6
|
+
#container { max-width: 50em; margin: 4em auto; text-align: left; }
|
7
|
+
#container h2 { text-align: center; }
|
8
|
+
dt.say { font-weight: bold; }
|
9
|
+
dt.emote { font-weight: bold; font-style:italic; }
|
10
|
+
dd.emote { font-style:italic; }
|
11
|
+
.ooc { display: none; }
|
12
|
+
dt { width: 7.5em; float: left; text-align: right; }
|
13
|
+
dd { margin-left: 0em; padding-left: 8em; margin-bottom: 0.5em; min-height: 2em }
|
14
|
+
|
15
|
+
</style>
|
16
|
+
</head>
|
17
|
+
<body>
|
18
|
+
<div id='container'>
|
19
|
+
<dl>
|
20
|
+
<dt class='say'>User</dt>
|
21
|
+
<dd class='say' style='color: #004000;' >
|
22
|
+
say something
|
23
|
+
</dd>
|
24
|
+
<dt class='emote'>User</dt>
|
25
|
+
<dd class='emote' style='color: #004040;' >
|
26
|
+
emote something
|
27
|
+
</dd>
|
28
|
+
<dt class='ooc'>User</dt>
|
29
|
+
<dd class='ooc' style='color: #004000;' >
|
30
|
+
(( say something ))
|
31
|
+
</dd>
|
32
|
+
</dl>
|
33
|
+
</div>
|
34
|
+
</body>
|
35
|
+
</html>
|
@@ -0,0 +1,116 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
# Jonathan D. Stott <jonathan.stott@gmail.com>
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'openlogcleaner/html_document'
|
5
|
+
|
6
|
+
def parse_file(file)
|
7
|
+
@log = OpenLogCleaner::HtmlDocument.new
|
8
|
+
@log.add_file(file)
|
9
|
+
@log
|
10
|
+
end
|
11
|
+
|
12
|
+
shared "OpenLogCleaner::HtmlDocument" do
|
13
|
+
it "doesn't raise an error" do
|
14
|
+
lambda { parse_file(@file) }.should.not.raise
|
15
|
+
end
|
16
|
+
|
17
|
+
it "has three lines" do
|
18
|
+
parse_file(@file)
|
19
|
+
@log.messages.size.should == 3
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "the first line" do
|
23
|
+
before do
|
24
|
+
@log = parse_file(@file)
|
25
|
+
@line = @log.messages.first
|
26
|
+
end
|
27
|
+
|
28
|
+
it "is a say" do
|
29
|
+
@line.should.be.is_a(OpenLogCleaner::Say)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "is by 'User'" do
|
33
|
+
@line.nick.should == 'User'
|
34
|
+
end
|
35
|
+
|
36
|
+
it "has the content 'say something'" do
|
37
|
+
@line.content.should == 'say something'
|
38
|
+
end
|
39
|
+
|
40
|
+
it "is not ooc" do
|
41
|
+
@line.should.not.be.is_ooc?
|
42
|
+
end
|
43
|
+
|
44
|
+
it "has the colour #004000" do
|
45
|
+
@line.color.should == '#004000'
|
46
|
+
end
|
47
|
+
end
|
48
|
+
describe "the second line" do
|
49
|
+
before do
|
50
|
+
@log = parse_file(@file)
|
51
|
+
@line = @log.messages[1]
|
52
|
+
end
|
53
|
+
|
54
|
+
it "is a say" do
|
55
|
+
@line.should.be.is_a(OpenLogCleaner::Emote)
|
56
|
+
end
|
57
|
+
|
58
|
+
it "is by 'User'" do
|
59
|
+
@line.nick.should == 'User'
|
60
|
+
end
|
61
|
+
|
62
|
+
it "has the content 'emote something'" do
|
63
|
+
@line.content.should == 'emote something'
|
64
|
+
end
|
65
|
+
|
66
|
+
it "is not ooc" do
|
67
|
+
@line.should.not.be.is_ooc?
|
68
|
+
end
|
69
|
+
end
|
70
|
+
describe "the third line" do
|
71
|
+
before do
|
72
|
+
@log = parse_file(@file)
|
73
|
+
@line = @log.messages[2]
|
74
|
+
end
|
75
|
+
|
76
|
+
it "is a say" do
|
77
|
+
@line.should.be.is_a(OpenLogCleaner::Say)
|
78
|
+
end
|
79
|
+
|
80
|
+
it "is by 'User'" do
|
81
|
+
@line.nick.should == 'User'
|
82
|
+
end
|
83
|
+
|
84
|
+
it "has the content 'say something'" do
|
85
|
+
@line.content.should == '(( say something ))'
|
86
|
+
end
|
87
|
+
|
88
|
+
it "is ooc" do
|
89
|
+
@line.should.be.is_ooc?
|
90
|
+
end
|
91
|
+
it "has the colour #004000" do
|
92
|
+
@line.color.should == '#004000'
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe "manual log 1" do
|
98
|
+
before do
|
99
|
+
@file = "spec/fixtures/manual_testlog.htm"
|
100
|
+
end
|
101
|
+
behaves_like "OpenLogCleaner::HtmlDocument"
|
102
|
+
end
|
103
|
+
|
104
|
+
describe "manual log 2" do
|
105
|
+
before do
|
106
|
+
@file = "spec/fixtures/manual2_testlog.htm"
|
107
|
+
end
|
108
|
+
behaves_like "OpenLogCleaner::HtmlDocument"
|
109
|
+
end
|
110
|
+
|
111
|
+
describe "parsed log" do
|
112
|
+
before do
|
113
|
+
@file = "spec/fixtures/parsed_testlog.htm"
|
114
|
+
end
|
115
|
+
behaves_like "OpenLogCleaner::HtmlDocument"
|
116
|
+
end
|
data/spec/openlogcleaner_spec.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: openlogcleaner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jonathan Stott
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-02-
|
13
|
+
date: 2011-02-15 00:00:00 +00:00
|
14
14
|
default_executable: openlogcleaner
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -90,6 +90,10 @@ files:
|
|
90
90
|
- lib/openlogcleaner/templates/dokuwiki_formatter.mustache
|
91
91
|
- lib/openlogcleaner/templates/html_formatter.mustache
|
92
92
|
- openlogcleaner.gemspec
|
93
|
+
- spec/fixtures/manual2_testlog.htm
|
94
|
+
- spec/fixtures/manual_testlog.htm
|
95
|
+
- spec/fixtures/parsed_testlog.htm
|
96
|
+
- spec/openlogcleaner/html_document_spec.rb
|
93
97
|
- spec/openlogcleaner_spec.rb
|
94
98
|
- spec/spec_helper.rb
|
95
99
|
has_rdoc: true
|
@@ -121,5 +125,6 @@ signing_key:
|
|
121
125
|
specification_version: 3
|
122
126
|
summary: Cleans OpenRPG logs
|
123
127
|
test_files:
|
128
|
+
- spec/openlogcleaner/html_document_spec.rb
|
124
129
|
- spec/openlogcleaner_spec.rb
|
125
130
|
- spec/spec_helper.rb
|