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