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.
@@ -1,56 +1,44 @@
1
1
  module Jekyll
2
2
  module RpLogs
3
-
4
- class Skype12Parser < RpLogs::Parser #This is for the date format [6/12/2015 7:01:45 PM]
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 = 'Skype12'
6
+ FORMAT_STR = "Skype12"
8
7
  RpLogGenerator.add self
9
8
 
10
- # Stuff
11
- class << self
12
- NICK = /([\w\-\\\[\]\{\}\^\`\|\s\'\)\(]+)/
13
- DATE_REGEXP = /(\[\d?\d\/\d?\d\/\d\d\d\d\s\d?\d\:\d\d\:\d\d\s(AM|PM)\])/
14
- FLAGS = /((?:![A-Z]+ )*)/
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
- TIMESTAMP_FORMAT = '[%m/%d/%Y %I:%M:%S %p]'
15
+ EMOTE = /^#{FLAGS}#{DATE_REGEXP}\s#{NICK}:\s\k<nick>#{MSG}$/
16
+ TEXT = /^#{FLAGS}#{DATE_REGEXP}\s#{NICK}:\s#{MSG}$/
24
17
 
25
- def parse_line(line, options = {})
26
- case line
27
- #when JUNK
28
- #nil
29
- when EMOTE
30
- print "1"
31
- date = DateTime.strptime($2, TIMESTAMP_FORMAT)
32
- contents = $6
33
- flags = $1
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 #This is for the date format [05.06.15 10:58:47]
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 = 'Skype24'
6
+ FORMAT_STR = "Skype24"
8
7
  RpLogGenerator.add self
9
8
 
10
- # Stuff
11
- class << self
12
- NICK = /([\w\-\\\[\]\{\}\^\`\|\s\']+)/
13
- DATE_REGEXP = /(\[\d\d.\d\d.\d\d\s\d\d\:\d\d\:\d\d\])/
14
- FLAGS = /((?:![A-Z]+ )*)/
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
- TIMESTAMP_FORMAT = '[%d.%m.%y %H:%M:%S]'
15
+ EMOTE = /^#{FLAGS}#{DATE_REGEXP}\s#{NICK}:\s\k<nick>#{MSG}$/
16
+ TEXT = /^#{FLAGS}#{DATE_REGEXP}\s#{NICK}:\s#{MSG}$/
23
17
 
24
- def parse_line(line, options = {})
25
- case line
26
- # when JUNK
27
- # nil
28
- when EMOTE
29
- date = DateTime.strptime($2, TIMESTAMP_FORMAT)
30
- contents = $5
31
- flags = $1
32
- sendername = $3.tr(' ', '-').gsub(BAD_STUFF, "")
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 = 'weechat'
7
+ FORMAT_STR = "weechat"
8
8
  RpLogGenerator.add self
9
9
 
10
- # Stuff
11
- class << self
12
- MODE = /([+%@&~!]?)/
13
- NICK = /([\w\-\\\[\]\{\}\^\`\|]+)/
14
- DATE_REGEXP = /(\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d)/
15
-
16
- FLAGS = /((?:![A-Z]+ )*)/
17
- JUNK = /#{DATE_REGEXP}\t<?-->?\t.*$/
18
- EMOTE = /^#{FLAGS}#{DATE_REGEXP}\t \*\t#{NICK}\s+([^\n]*)$/
19
- TEXT = /^#{FLAGS}#{DATE_REGEXP}\t#{MODE}#{NICK}\t([^\n]*)$/
20
-
21
- TIMESTAMP_FORMAT = '%Y-%m-%d %H:%M:%S'
22
-
23
- def parse_line(line, options = {})
24
- case line
25
- when JUNK
26
- return nil
27
- when EMOTE
28
- date = DateTime.strptime($2, TIMESTAMP_FORMAT)
29
- return Parser::LogLine.new(date, options, sender: $3, contents: $4, \
30
- flags: $1, type: :rp)
31
- when TEXT
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.data['start_date'] }.min
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.data['last_post_time'] }.max
29
+ @rps.map { |rp_page| rp_page[:last_post_time] }.max
30
30
  end
31
31
 
32
- def is_arc?
32
+ def arc?
33
33
  true
34
34
  end
35
35
 
36
36
  def to_s
37
- self.name
37
+ name
38
38
  end
39
39
 
40
- def eql?(arc)
41
- self.class.equal?(arc.class) && (self.name == arc.name) && (self.rps.equal?(arc.rps))
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
- self.name.hash
47
+ name.hash
46
48
  end
47
49
 
48
50
  # actually by... start.. date?
49
- def <=>(o)
50
- if self.class == o.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