demo-reader 0.2.4 → 0.2.5
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.
- 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
|