demo-reader 0.2.4 → 0.2.5
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/demo-reader.gemspec +1 -2
- data/lib/demo-reader.rb +4 -4
- data/lib/demo_reader_defrag.rb +5 -3
- data/test/unit/demo_reader_defrag_dm_68_cpm_test.rb +4 -2
- data/test/unit/demo_reader_defrag_dm_68_vq3_test.rb +1 -1
- metadata +3 -4
- data/test/fixtures/defrag/dm_68/vq3/cyfio-df_mdf.vq3_06.25.832_rlxmini.CountryHere.dm_68 +0 -0
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.5
|
data/demo-reader.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{demo-reader}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["aekym"]
|
@@ -42,7 +42,6 @@ Gem::Specification.new do |s|
|
|
42
42
|
"lib/demo_reader_warsow.rb",
|
43
43
|
"test/fixtures/defrag/dm_68/cpm/pornchronostar_mdf.cpm_00.49.216_tyaz.germany.dm_68",
|
44
44
|
"test/fixtures/defrag/dm_68/cpm/puremotion_df.cpm_00.10.600_eS-Rody.russia.dm_68",
|
45
|
-
"test/fixtures/defrag/dm_68/vq3/cyfio-df_mdf.vq3_06.25.832_rlxmini.CountryHere.dm_68",
|
46
45
|
"test/fixtures/defrag/dm_68/vq3/runkull2_df.vq3_01.05.904_XunderBIRD.Germany.dm_68",
|
47
46
|
"test/fixtures/defrag/dm_68/vq3/un-dead029_df.vq3_00.16.912_uN-DeaD!WiNTeR.ru.dm_68",
|
48
47
|
"test/fixtures/warsow/wd10/racesow_0.42.b2/dinirun2_racesow_0.42.b2.wd10",
|
data/lib/demo-reader.rb
CHANGED
@@ -10,8 +10,8 @@ class DemoReader
|
|
10
10
|
#
|
11
11
|
# @returns an instance of DemoReaderWarsow or DemoReaderDefrag or nil on failure
|
12
12
|
#
|
13
|
-
def self.parse(filename)
|
14
|
-
try_warsow(filename) || try_defrag(filename)
|
13
|
+
def self.parse(filename, hint_for_time = nil)
|
14
|
+
try_warsow(filename) || try_defrag(filename, hint_for_time)
|
15
15
|
end
|
16
16
|
|
17
17
|
|
@@ -23,8 +23,8 @@ class DemoReader
|
|
23
23
|
demo.valid ? demo : nil
|
24
24
|
end
|
25
25
|
|
26
|
-
def self.try_defrag(filename)
|
27
|
-
demo = DemoReaderDefrag.new(filename)
|
26
|
+
def self.try_defrag(filename, hint_for_time)
|
27
|
+
demo = DemoReaderDefrag.new(filename, hint_for_time)
|
28
28
|
|
29
29
|
demo.valid ? demo : nil
|
30
30
|
end
|
data/lib/demo_reader_defrag.rb
CHANGED
@@ -7,8 +7,9 @@ class DemoReaderDefrag
|
|
7
7
|
|
8
8
|
|
9
9
|
|
10
|
-
def initialize(filename)
|
10
|
+
def initialize(filename, hint_for_time = nil)
|
11
11
|
@filename = filename
|
12
|
+
@hint_for_time = hint_for_time
|
12
13
|
|
13
14
|
@game = "Defrag"
|
14
15
|
@version = -1
|
@@ -45,7 +46,7 @@ class DemoReaderDefrag
|
|
45
46
|
if @raw['server_info']['defrag_vers'].to_i > 0
|
46
47
|
@gamemode = @raw['server_info']['df_promode'].to_i.zero? ? 'vq3' : 'cpm'
|
47
48
|
|
48
|
-
time_hint = extract_time_from_filename(@filename)
|
49
|
+
time_hint = extract_time_from_filename(@hint_for_time || @filename)
|
49
50
|
@time = extract_time(@raw['prints'], time_hint)
|
50
51
|
|
51
52
|
@player = extract_player(@raw['prints'], @time)
|
@@ -103,7 +104,8 @@ class DemoReaderDefrag
|
|
103
104
|
|
104
105
|
|
105
106
|
def extract_time_from_filename(filename)
|
106
|
-
|
107
|
+
filename = File.basename(filename) if File.exists?(filename)
|
108
|
+
$1 if filename =~ /(\d{2}\.\d{2}\.\d{3})/
|
107
109
|
end
|
108
110
|
|
109
111
|
# extract time from server prints
|
@@ -10,13 +10,15 @@ class DemoReaderDefragDm68CpmTest < Test::Unit::TestCase
|
|
10
10
|
|
11
11
|
[
|
12
12
|
%w(pornchronostar_mdf.cpm_00.49.216_tyaz.germany pornchronostar 00:49.216 *tyaz*),
|
13
|
-
%w(puremotion_df.cpm_00.10.600_eS-Rody.russia puremotion 00:10.600 ^2eS-Rody)
|
13
|
+
%w(puremotion_df.cpm_00.10.600_eS-Rody.russia puremotion 00:10.600 ^2eS-Rody),
|
14
|
+
%w(mega_wood[mdf.cpm]_without_time_hint_\(kreator.Germany\) mega_wood 00:14.752 r^8l^7x^0|^7Kr^8e^7ator here is the time hint: 00.14.752)
|
14
15
|
].each do |entry|
|
15
16
|
|
16
17
|
file, map, time, player = entry
|
18
|
+
time_hint = entry.last if entry.size > 4
|
17
19
|
|
18
20
|
define_method "test_defrag_dm_#{version}_demo_#{file.gsub(/[^a-z_0-9]/, "_")}" do
|
19
|
-
demo = DemoReader.parse("test/fixtures/defrag/dm_#{version}/#{gamemode}/#{file}.dm_#{version}")
|
21
|
+
demo = DemoReader.parse("test/fixtures/defrag/dm_#{version}/#{gamemode}/#{file}.dm_#{version}", time_hint)
|
20
22
|
|
21
23
|
assert demo.valid
|
22
24
|
assert_equal game, demo.game
|
@@ -10,7 +10,7 @@ class DemoReaderDefragDm68Vq3Test < Test::Unit::TestCase
|
|
10
10
|
[
|
11
11
|
%w(runkull2_df.vq3_01.05.904_XunderBIRD.Germany runkull2 01:05.904 ^2XunderBIRD),
|
12
12
|
%w(un-dead029_df.vq3_00.16.912_uN-DeaD!WiNTeR.ru un-dead029 00:16.912 ^2uN-DeaD!WiNTeR),
|
13
|
-
%w(cyfio-
|
13
|
+
%w(cyfio-df[mdf.vq3]06.25.832\(rlxmini.CountryHere\) cyfio-df 06:25.832 r^1l^7x^0|^7m^1i^7n^1i)
|
14
14
|
].each do |entry|
|
15
15
|
|
16
16
|
file, map, time, player = entry
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: demo-reader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 29
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 5
|
10
|
+
version: 0.2.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- aekym
|
@@ -53,7 +53,6 @@ files:
|
|
53
53
|
- lib/demo_reader_warsow.rb
|
54
54
|
- test/fixtures/defrag/dm_68/cpm/pornchronostar_mdf.cpm_00.49.216_tyaz.germany.dm_68
|
55
55
|
- test/fixtures/defrag/dm_68/cpm/puremotion_df.cpm_00.10.600_eS-Rody.russia.dm_68
|
56
|
-
- test/fixtures/defrag/dm_68/vq3/cyfio-df_mdf.vq3_06.25.832_rlxmini.CountryHere.dm_68
|
57
56
|
- test/fixtures/defrag/dm_68/vq3/runkull2_df.vq3_01.05.904_XunderBIRD.Germany.dm_68
|
58
57
|
- test/fixtures/defrag/dm_68/vq3/un-dead029_df.vq3_00.16.912_uN-DeaD!WiNTeR.ru.dm_68
|
59
58
|
- test/fixtures/warsow/wd10/racesow_0.42.b2/dinirun2_racesow_0.42.b2.wd10
|