jekyll-rp_logs 0.1.6 → 0.2.0
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.
- 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
|