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.
@@ -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