regulos 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +4 -0
- data/README.md +3 -1
- data/lib/regulos.rb +1 -0
- data/lib/regulos/combat_log/event/base.rb +19 -5
- data/lib/regulos/combat_log/event/{affliction.rb → debuff_fade.rb} +1 -1
- data/lib/regulos/combat_log/event/{dissipate.rb → debuff_gain.rb} +1 -1
- data/lib/regulos/combat_log/event_collection.rb +45 -0
- data/lib/regulos/combat_log/file.rb +5 -1
- data/lib/regulos/version.rb +2 -2
- metadata +6 -5
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -12,7 +12,9 @@
|
|
12
12
|
|
13
13
|
* require 'regulos'
|
14
14
|
* log = Regulos::CombatLog.parse "/path/to/combatlog.txt"
|
15
|
-
* log.
|
15
|
+
* log.filter :only => {:event => ["Heal"]
|
16
|
+
* events = log.filter :exclude => {:event => ["Heal", "CriticalHeal"]
|
17
|
+
* events.first.full_message
|
16
18
|
|
17
19
|
|
18
20
|
#### Methods on Event
|
data/lib/regulos.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require "digest/md5"
|
2
|
+
|
1
3
|
module Regulos
|
2
4
|
module CombatLog
|
3
5
|
module Event
|
@@ -10,8 +12,8 @@ module Regulos
|
|
10
12
|
:Heal => "5",
|
11
13
|
:BuffGain => "6",
|
12
14
|
:BuffFade => "7",
|
13
|
-
:
|
14
|
-
:
|
15
|
+
:DebuffGain => "8",
|
16
|
+
:DebuffFade => "9",
|
15
17
|
:AttackMiss => "10",
|
16
18
|
:Death => "11",
|
17
19
|
:UnknownDeath => "12",
|
@@ -34,7 +36,19 @@ module Regulos
|
|
34
36
|
end
|
35
37
|
|
36
38
|
def inspect
|
37
|
-
"<#{self.class}>"
|
39
|
+
"<#{self.class} id=#{id}>"
|
40
|
+
end
|
41
|
+
|
42
|
+
def id
|
43
|
+
@id ||= Digest::MD5.hexdigest( [time, full_message].join ) if time && full_message
|
44
|
+
end
|
45
|
+
|
46
|
+
def ==(other)
|
47
|
+
other.id == id
|
48
|
+
end
|
49
|
+
|
50
|
+
def name
|
51
|
+
self.class.to_s.split("::").last
|
38
52
|
end
|
39
53
|
|
40
54
|
def code
|
@@ -50,11 +64,11 @@ module Regulos
|
|
50
64
|
end
|
51
65
|
|
52
66
|
def buff?
|
53
|
-
code == :BuffGain
|
67
|
+
code == :BuffGain || code == :BuffFade
|
54
68
|
end
|
55
69
|
|
56
70
|
def debuff?
|
57
|
-
code == :
|
71
|
+
code == :DebuffGain || code == :DebuffFade
|
58
72
|
end
|
59
73
|
|
60
74
|
def process attributes
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require "delegate"
|
2
|
+
module Regulos
|
3
|
+
module CombatLog
|
4
|
+
class EventCollection < Array
|
5
|
+
class FilterException < RuntimeError;end
|
6
|
+
|
7
|
+
attr_reader :events
|
8
|
+
|
9
|
+
def initialize(events=[])
|
10
|
+
@events = events
|
11
|
+
super(@events)
|
12
|
+
end
|
13
|
+
|
14
|
+
def inspect
|
15
|
+
"<#{self.class} size=#{size}"
|
16
|
+
end
|
17
|
+
|
18
|
+
# Search the collection
|
19
|
+
# e.g. :only => {:event => ["Heal", "BuffGain"]}
|
20
|
+
# e.g. :only => {:target => [:player]} #NYI
|
21
|
+
def filter(options={})
|
22
|
+
if options[:only] && options[:exclude]
|
23
|
+
raise FilterException, "You can't specify both 'only' and 'exclude'."
|
24
|
+
end
|
25
|
+
|
26
|
+
return only(options[:only]) if options[:only]
|
27
|
+
return exclude(options[:exclude]) if options[:exclude]
|
28
|
+
end
|
29
|
+
|
30
|
+
protected
|
31
|
+
def only(options)
|
32
|
+
filter_events(:only, options[:event]) if options[:event]
|
33
|
+
end
|
34
|
+
|
35
|
+
def exclude(options)
|
36
|
+
filter_events(:exclude, options[:event]) if options[:event]
|
37
|
+
end
|
38
|
+
|
39
|
+
def filter_events mode, keys
|
40
|
+
mode = mode == :only ? :select : :reject
|
41
|
+
EventCollection.new send(mode){|e| keys.include?(e.name) }
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -13,7 +13,7 @@ module Regulos
|
|
13
13
|
attr_reader :path, :events
|
14
14
|
def initialize(options={})
|
15
15
|
@path = ::File.exist?( options[:path] ) ? options[:path] : raise(FileNotFoundError, "The specified combat log does not exist.")
|
16
|
-
@events = []
|
16
|
+
@events = EventCollection.new []
|
17
17
|
end
|
18
18
|
|
19
19
|
def parse
|
@@ -21,6 +21,10 @@ module Regulos
|
|
21
21
|
data.each{|row| @events << Event.handle(row) }
|
22
22
|
end
|
23
23
|
|
24
|
+
def filter options
|
25
|
+
events.filter(options)
|
26
|
+
end
|
27
|
+
|
24
28
|
def inspect
|
25
29
|
"<Regulos::CombatLog::File path=#{@path}>"
|
26
30
|
end
|
data/lib/regulos/version.rb
CHANGED
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 2
|
8
|
+
- 0
|
9
|
+
version: 0.2.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- James Cook
|
@@ -40,7 +40,6 @@ extensions: []
|
|
40
40
|
extra_rdoc_files: []
|
41
41
|
|
42
42
|
files:
|
43
|
-
- lib/regulos/combat_log/event/affliction.rb
|
44
43
|
- lib/regulos/combat_log/event/attack_hit.rb
|
45
44
|
- lib/regulos/combat_log/event/attack_miss.rb
|
46
45
|
- lib/regulos/combat_log/event/base.rb
|
@@ -52,7 +51,8 @@ files:
|
|
52
51
|
- lib/regulos/combat_log/event/damage.rb
|
53
52
|
- lib/regulos/combat_log/event/damage_over_time.rb
|
54
53
|
- lib/regulos/combat_log/event/death.rb
|
55
|
-
- lib/regulos/combat_log/event/
|
54
|
+
- lib/regulos/combat_log/event/debuff_fade.rb
|
55
|
+
- lib/regulos/combat_log/event/debuff_gain.rb
|
56
56
|
- lib/regulos/combat_log/event/dodge.rb
|
57
57
|
- lib/regulos/combat_log/event/end_cast.rb
|
58
58
|
- lib/regulos/combat_log/event/fall_damage.rb
|
@@ -66,6 +66,7 @@ files:
|
|
66
66
|
- lib/regulos/combat_log/event/unknown.rb
|
67
67
|
- lib/regulos/combat_log/event/unknown_death.rb
|
68
68
|
- lib/regulos/combat_log/event.rb
|
69
|
+
- lib/regulos/combat_log/event_collection.rb
|
69
70
|
- lib/regulos/combat_log/file.rb
|
70
71
|
- lib/regulos/version.rb
|
71
72
|
- lib/regulos.rb
|