jekyll-rp_logs 0.1.6 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.codeclimate.yml +46 -0
- data/.gitignore +6 -0
- data/.rspec +2 -0
- data/.rubocop.yml +2 -0
- data/.themes/default/source/_config.yml.default +13 -3
- data/.travis.yml +9 -0
- data/CHANGELOG.md +55 -0
- data/README.md +85 -32
- data/Rakefile +42 -5
- data/jekyll-rp_logs.gemspec +6 -1
- data/lib/jekyll/rp_logs/parse_irssi_xchat.rb +35 -37
- data/lib/jekyll/rp_logs/parse_mirc.rb +40 -42
- data/lib/jekyll/rp_logs/parse_skype_12hour.rb +33 -45
- data/lib/jekyll/rp_logs/parse_skype_24hour.rb +33 -41
- data/lib/jekyll/rp_logs/parse_weechat.rb +36 -36
- data/lib/jekyll/rp_logs/rp_arcs.rb +13 -16
- data/lib/jekyll/rp_logs/rp_log_converter.rb +140 -117
- data/lib/jekyll/rp_logs/rp_logline.rb +225 -0
- data/lib/jekyll/rp_logs/rp_page.rb +63 -0
- data/lib/jekyll/rp_logs/rp_parser.rb +9 -103
- data/lib/jekyll/rp_logs/rp_tag_index.rb +18 -20
- data/lib/jekyll/rp_logs/rp_tasks.rb +5 -6
- data/lib/jekyll/rp_logs/version.rb +1 -1
- data/lib/jekyll/rp_logs.rb +4 -5
- metadata +53 -4
@@ -1,56 +1,44 @@
|
|
1
1
|
module Jekyll
|
2
2
|
module RpLogs
|
3
|
-
|
4
|
-
class Skype12Parser < RpLogs::Parser
|
5
|
-
|
3
|
+
# This is for the date format [6/12/2015 7:01:45 PM]
|
4
|
+
class Skype12Parser < RpLogs::Parser
|
6
5
|
# Add this class to the parsing dictionary
|
7
|
-
FORMAT_STR =
|
6
|
+
FORMAT_STR = "Skype12"
|
8
7
|
RpLogGenerator.add self
|
9
8
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
BAD_STUFF = /[^a-zA-Z\-\_]/
|
16
|
-
|
17
|
-
# Crappy but works
|
18
|
-
USER_AT_HOST = /\(\w+@[^)]+\)/
|
19
|
-
#Not needed? JUNK = /#{DATE_REGEXP} \* #{MODE}#{NICK} (sets mode:|is now known as|(#{USER_AT_HOST} (has joined|Quit|has left))).*$/
|
20
|
-
EMOTE = /^#{FLAGS}#{DATE_REGEXP}\s#{NICK}:\s(\4)([^\n]*)$/
|
21
|
-
TEXT = /^#{FLAGS}#{DATE_REGEXP}\s#{NICK}:\s([^\n]*)$/
|
9
|
+
NICK = /(?<nick>[\w\-\\\[\]{}\^`|\s')(]+)/
|
10
|
+
DATE_REGEXP = /(?<timestamp>\[\d?\d\/\d?\d\/\d\d\d\d\s\d?\d\:\d\d\:\d\d\s(AM|PM)\])/
|
11
|
+
TIMESTAMP_FORMAT = "[%m/%d/%Y %I:%M:%S %p]"
|
12
|
+
MSG = /(?<msg>[^\n]*)/
|
13
|
+
BAD_STUFF = /[^a-zA-Z\-\_]/
|
22
14
|
|
23
|
-
|
15
|
+
EMOTE = /^#{FLAGS}#{DATE_REGEXP}\s#{NICK}:\s\k<nick>#{MSG}$/
|
16
|
+
TEXT = /^#{FLAGS}#{DATE_REGEXP}\s#{NICK}:\s#{MSG}$/
|
24
17
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
sendername = $4.tr(' ', '-').gsub(BAD_STUFF, "")
|
35
|
-
Parser::LogLine.new(date, options, sender: sendername, contents: contents, \
|
36
|
-
flags: flags, type: :rp)
|
37
|
-
when TEXT
|
38
|
-
print "2"
|
39
|
-
date = DateTime.strptime($2, TIMESTAMP_FORMAT)
|
40
|
-
contents = $5
|
41
|
-
flags = $1
|
42
|
-
sendername = $4.tr(' ', '-').gsub(BAD_STUFF, "")
|
43
|
-
Parser::LogLine.new(date, options, sender: sendername, contents: contents, \
|
44
|
-
flags: flags, type: :ooc)
|
45
|
-
else
|
46
|
-
print "3"
|
47
|
-
# Only put text and emotes in the log
|
48
|
-
nil
|
49
|
-
end
|
18
|
+
def self.parse_line(line, options = {})
|
19
|
+
case line
|
20
|
+
when EMOTE
|
21
|
+
type = :rp
|
22
|
+
when TEXT
|
23
|
+
type = :ooc
|
24
|
+
else
|
25
|
+
# Only put text and emotes in the log
|
26
|
+
return nil
|
50
27
|
end
|
28
|
+
# Preserve all the matches before the gsub
|
29
|
+
date = DateTime.strptime($LAST_MATCH_INFO[:timestamp], TIMESTAMP_FORMAT)
|
30
|
+
contents = $LAST_MATCH_INFO[:msg]
|
31
|
+
flags = $LAST_MATCH_INFO[:flags]
|
32
|
+
sendername = $LAST_MATCH_INFO[:nick].tr(" ", "-").gsub(BAD_STUFF, "")
|
33
|
+
LogLine.new(
|
34
|
+
date,
|
35
|
+
options,
|
36
|
+
sender: sendername,
|
37
|
+
contents: contents,
|
38
|
+
flags: flags,
|
39
|
+
type: type
|
40
|
+
)
|
51
41
|
end
|
52
|
-
|
53
|
-
end
|
54
|
-
|
42
|
+
end
|
55
43
|
end
|
56
44
|
end
|
@@ -1,52 +1,44 @@
|
|
1
1
|
module Jekyll
|
2
2
|
module RpLogs
|
3
|
-
|
4
|
-
class Skype24Parser < RpLogs::Parser
|
5
|
-
|
3
|
+
# This is for the date format [05.06.15 10:58:47]
|
4
|
+
class Skype24Parser < RpLogs::Parser
|
6
5
|
# Add this class to the parsing dictionary
|
7
|
-
FORMAT_STR =
|
6
|
+
FORMAT_STR = "Skype24"
|
8
7
|
RpLogGenerator.add self
|
9
8
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
BAD_STUFF = /[^a-zA-Z\-\_]/
|
16
|
-
# Crappy but works
|
17
|
-
USER_AT_HOST = /\(\w+@[^)]+\)/
|
18
|
-
#Not needed? JUNK = /#{DATE_REGEXP} \* #{MODE}#{NICK} (sets mode:|is now known as|(#{USER_AT_HOST} (has joined|Quit|has left))).*$/
|
19
|
-
EMOTE = /^#{FLAGS}#{DATE_REGEXP}\s#{NICK}:\s(\3)([^\n]*)$/
|
20
|
-
TEXT = /^#{FLAGS}#{DATE_REGEXP}\s#{NICK}:\s([^\n]*)$/
|
9
|
+
NICK = /(?<nick>[\w\-\\\[\]\{\}\^\`\|\s\']+)/
|
10
|
+
DATE_REGEXP = /(?<timestamp>\[\d\d.\d\d.\d\d\s\d\d\:\d\d\:\d\d\])/
|
11
|
+
TIMESTAMP_FORMAT = "[%d.%m.%y %H:%M:%S]"
|
12
|
+
MSG = /(?<msg>[^\n]*)/
|
13
|
+
BAD_STUFF = /[^a-zA-Z\-\_]/
|
21
14
|
|
22
|
-
|
15
|
+
EMOTE = /^#{FLAGS}#{DATE_REGEXP}\s#{NICK}:\s\k<nick>#{MSG}$/
|
16
|
+
TEXT = /^#{FLAGS}#{DATE_REGEXP}\s#{NICK}:\s#{MSG}$/
|
23
17
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
Parser::LogLine.new(date, options, sender: sendername, contents: contents, \
|
34
|
-
flags: flags, type: :rp)
|
35
|
-
when TEXT
|
36
|
-
date = DateTime.strptime($2, TIMESTAMP_FORMAT)
|
37
|
-
contents = $4
|
38
|
-
flags = $1
|
39
|
-
sendername = $3.tr(' ', '-').gsub(BAD_STUFF, "")
|
40
|
-
Parser::LogLine.new(date, options, sender: sendername, contents: contents, \
|
41
|
-
flags: flags, type: :ooc)
|
42
|
-
else
|
43
|
-
# Only put text and emotes in the log
|
44
|
-
nil
|
45
|
-
end
|
18
|
+
def self.parse_line(line, options = {})
|
19
|
+
case line
|
20
|
+
when EMOTE
|
21
|
+
type = :rp
|
22
|
+
when TEXT
|
23
|
+
type = :ooc
|
24
|
+
else
|
25
|
+
# Only put text and emotes in the log
|
26
|
+
return nil
|
46
27
|
end
|
28
|
+
# Preserve all the matches before the gsub
|
29
|
+
date = DateTime.strptime($LAST_MATCH_INFO[:timestamp], TIMESTAMP_FORMAT)
|
30
|
+
contents = $LAST_MATCH_INFO[:msg]
|
31
|
+
flags = $LAST_MATCH_INFO[:flags]
|
32
|
+
sendername = $LAST_MATCH_INFO[:nick].tr(" ", "-").gsub(BAD_STUFF, "")
|
33
|
+
LogLine.new(
|
34
|
+
date,
|
35
|
+
options,
|
36
|
+
sender: sendername,
|
37
|
+
contents: contents,
|
38
|
+
flags: flags,
|
39
|
+
type: type
|
40
|
+
)
|
47
41
|
end
|
48
|
-
|
49
|
-
end
|
50
|
-
|
42
|
+
end
|
51
43
|
end
|
52
44
|
end
|
@@ -1,46 +1,46 @@
|
|
1
1
|
module Jekyll
|
2
2
|
module RpLogs
|
3
|
-
|
3
|
+
##
|
4
|
+
# Parses logs in the default format of [Weechat](https://weechat.org/)
|
4
5
|
class WeechatParser < RpLogs::Parser
|
5
|
-
|
6
6
|
# Add this class to the parsing dictionary
|
7
|
-
FORMAT_STR =
|
7
|
+
FORMAT_STR = "weechat"
|
8
8
|
RpLogGenerator.add self
|
9
9
|
|
10
|
-
#
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
date = DateTime.strptime($2, TIMESTAMP_FORMAT)
|
33
|
-
mode = if $3 != '' then $3 else ' ' end
|
34
|
-
return Parser::LogLine.new(date, options, sender: $4, contents: $5, \
|
35
|
-
flags: $1, type: :ooc, mode: mode)
|
36
|
-
else
|
37
|
-
# Only put text and emotes in the log
|
38
|
-
return nil
|
39
|
-
end
|
10
|
+
# Date is repeated in each type of message
|
11
|
+
DATE_REGEXP = /(?<timestamp>\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d)/
|
12
|
+
TIMESTAMP_FORMAT = "%Y-%m-%d %H:%M:%S"
|
13
|
+
|
14
|
+
# Regular expressions for matching each type of line
|
15
|
+
JUNK = /#{DATE_REGEXP}\t<?-->?\t.*$/
|
16
|
+
EMOTE = /^#{FLAGS}#{DATE_REGEXP}\t \*\t#{NICK}\s+(?<msg>[^\n]*)$/
|
17
|
+
TEXT = /^#{FLAGS}#{DATE_REGEXP}\t#{MODE}#{NICK}\t(?<msg>[^\n]*)$/
|
18
|
+
|
19
|
+
def self.parse_line(line, options = {})
|
20
|
+
case line
|
21
|
+
when JUNK
|
22
|
+
return nil
|
23
|
+
when EMOTE
|
24
|
+
type = :rp
|
25
|
+
when TEXT
|
26
|
+
type = :ooc
|
27
|
+
mode = $LAST_MATCH_INFO[:mode]
|
28
|
+
mode = " " if mode == ""
|
29
|
+
else
|
30
|
+
# Only put text and emotes in the log
|
31
|
+
return nil
|
40
32
|
end
|
33
|
+
date = DateTime.strptime($LAST_MATCH_INFO[:timestamp], TIMESTAMP_FORMAT)
|
34
|
+
LogLine.new(
|
35
|
+
date,
|
36
|
+
options,
|
37
|
+
sender: $LAST_MATCH_INFO[:nick],
|
38
|
+
contents: $LAST_MATCH_INFO[:msg],
|
39
|
+
flags: $LAST_MATCH_INFO[:flags],
|
40
|
+
type: type,
|
41
|
+
mode: mode
|
42
|
+
)
|
41
43
|
end
|
42
|
-
|
43
|
-
end
|
44
|
-
|
44
|
+
end
|
45
45
|
end
|
46
46
|
end
|
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
module Jekyll
|
4
4
|
module RpLogs
|
5
|
-
|
6
5
|
# Holds arc information
|
7
6
|
class Arc
|
7
|
+
include Comparable
|
8
8
|
|
9
9
|
attr_accessor :name, :rps
|
10
10
|
|
@@ -17,41 +17,39 @@ module Jekyll
|
|
17
17
|
# potential future idea: directories for each arc
|
18
18
|
end
|
19
19
|
|
20
|
-
def <<(rp_page)
|
20
|
+
def <<(rp_page)
|
21
21
|
@rps << rp_page
|
22
22
|
end
|
23
23
|
|
24
24
|
def start_date
|
25
|
-
@rps.map { |rp_page| rp_page
|
25
|
+
@rps.map { |rp_page| rp_page[:time_line] || rp_page[:start_date] }.min
|
26
26
|
end
|
27
27
|
|
28
28
|
def end_date
|
29
|
-
@rps.map { |rp_page| rp_page
|
29
|
+
@rps.map { |rp_page| rp_page[:last_post_time] }.max
|
30
30
|
end
|
31
31
|
|
32
|
-
def
|
32
|
+
def arc?
|
33
33
|
true
|
34
34
|
end
|
35
35
|
|
36
36
|
def to_s
|
37
|
-
|
37
|
+
name
|
38
38
|
end
|
39
39
|
|
40
|
-
def eql?(
|
41
|
-
self.class
|
40
|
+
def eql?(other)
|
41
|
+
self.class == other.class &&
|
42
|
+
name == other.name &&
|
43
|
+
rps == other.rps
|
42
44
|
end
|
43
45
|
|
44
46
|
def hash
|
45
|
-
|
47
|
+
name.hash
|
46
48
|
end
|
47
49
|
|
48
50
|
# actually by... start.. date?
|
49
|
-
def <=>(
|
50
|
-
if self.class ==
|
51
|
-
self.name <=> o.name
|
52
|
-
else
|
53
|
-
nil
|
54
|
-
end
|
51
|
+
def <=>(other)
|
52
|
+
name <=> other.name if self.class == other.class
|
55
53
|
end
|
56
54
|
|
57
55
|
def inspect
|
@@ -63,7 +61,6 @@ module Jekyll
|
|
63
61
|
|
64
62
|
{ "name" => @name, "rps" => @rps }
|
65
63
|
end
|
66
|
-
|
67
64
|
end
|
68
65
|
end
|
69
66
|
end
|