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 CHANGED
@@ -1 +1 @@
1
- 0.2.4
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.4"
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
@@ -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
- $1 if File.basename(filename) =~ /(\d{2}\.\d{2}\.\d{3})/
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-df_mdf.vq3_06.25.832_rlxmini.CountryHere cyfio-df 06:25.832 r^1l^7x^0|^7m^1i^7n^1i)
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: 31
4
+ hash: 29
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 4
10
- version: 0.2.4
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