gamer_stats 0.2.3 → 0.2.4
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.
- checksums.yaml +8 -8
- data/.gitignore +1 -0
- data/gamer_stats.gemspec +6 -3
- data/lib/achievements/achievements.rb +45 -0
- data/lib/gamer_stats.rb +1 -0
- data/lib/gamer_stats/version.rb +1 -1
- data/test/achievements/achievements_test.rb +89 -0
- data/test/{bf3_test.rb → bf3/bf3_test.rb} +1 -5
- data/test/{hash_path_eval_test.rb → helper/hash_path_eval_test.rb} +1 -3
- data/test/test_helper.rb +27 -0
- metadata +65 -18
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZjNkMmFkMTg4NTA1YzllMDY2MmRhYjMxMzM1ZWU2YjVkMzM3ZmM4Nw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
Yjg5OWMwNTRiNWEzYzRhOGRmZjk2OTBkNjMxMTJjYTJlOTBlMzdhMw==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NDU5N2RkZGZiY2ZjYzk4ZDYzMzdmOWZiMDNmYTdkOGFiYjg1Y2JmOTYwY2E5
|
10
|
+
NTllNDQ0MjA3OWUyZjg2OTgyODU2M2Q1NTMyZjBjODEyMWEyNmQzYTcxNDE5
|
11
|
+
ZmEzZTIxN2MyZTcwNjk0NmQwY2NiMGVhZTUwMjY1ZmQxZWI5YzU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MmQzMGIxYjNlMWJkNGQ5MWY1MWQ0YTJlMWQzYzI5MDY5ZjRmODMyNTI4NTQz
|
14
|
+
MjQzODE4YTBkZmI2ZDc0MWQzMDFhNmFhYTAwMzJlY2QxNmQ3ZWU3OTEyN2M3
|
15
|
+
MGI3MDkwZDJkZWY3YzE1MWE5ZTcyYTVkYjRjZTg1N2U3ZjI4Yjg=
|
data/.gitignore
CHANGED
data/gamer_stats.gemspec
CHANGED
@@ -19,8 +19,11 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
-
spec.add_development_dependency "rake"
|
22
|
+
spec.add_development_dependency "rake", "~> 10.0.4"
|
23
|
+
spec.add_development_dependency "vcr", "~> 2.4.0"
|
24
|
+
spec.add_development_dependency "webmock", "~> 1.11.0"
|
23
25
|
|
24
|
-
spec.add_dependency "httparty"
|
25
|
-
spec.add_dependency "json"
|
26
|
+
spec.add_dependency "httparty", "~> 0.11.0"
|
27
|
+
spec.add_dependency "json", "~> 1.7.7"
|
28
|
+
spec.add_dependency "percentage", "~> 1.0.0"
|
26
29
|
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# https://github.com/timcraft/percentage
|
2
|
+
require 'percentage'
|
3
|
+
|
4
|
+
module Achievements
|
5
|
+
class ValueInfo < Struct.new(:data, :path, :rangeFrom, :rangeTo)
|
6
|
+
end
|
7
|
+
|
8
|
+
class Achievement
|
9
|
+
def initialize(info)
|
10
|
+
@info = info
|
11
|
+
end
|
12
|
+
|
13
|
+
def getPercentage
|
14
|
+
value = getValueByPath
|
15
|
+
|
16
|
+
return 0 if (value <= @info.rangeFrom)
|
17
|
+
return 100 if (value >= @info.rangeTo)
|
18
|
+
|
19
|
+
p = Percentage.new(Rational(value, @info.rangeTo))
|
20
|
+
i = p.to_i
|
21
|
+
|
22
|
+
return i if !p.zero? && i > 1
|
23
|
+
1
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def getValueByPath
|
29
|
+
localData = @info.data
|
30
|
+
|
31
|
+
@info.path.split('/').each do |p|
|
32
|
+
# either use the symbol or the string as key
|
33
|
+
key = p.to_sym
|
34
|
+
key = p.to_s unless localData.key? key
|
35
|
+
|
36
|
+
localData = localData.fetch(key)
|
37
|
+
end
|
38
|
+
|
39
|
+
localData.to_i
|
40
|
+
|
41
|
+
rescue
|
42
|
+
0
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/gamer_stats.rb
CHANGED
data/lib/gamer_stats/version.rb
CHANGED
@@ -0,0 +1,89 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
|
3
|
+
def getAchievement(data, path, from, to)
|
4
|
+
Achievement.new(getInfo(data, path, from, to))
|
5
|
+
end
|
6
|
+
|
7
|
+
def getInfo(data, path, from, to)
|
8
|
+
ValueInfo.new(data, path, from, to)
|
9
|
+
end
|
10
|
+
|
11
|
+
describe Achievements::Achievement do
|
12
|
+
it 'can be initialized' do
|
13
|
+
achievement = Achievement.new(nil).wont_be_nil
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'can take ValueInfo as parameter for initialization' do
|
17
|
+
info = ValueInfo.new
|
18
|
+
achievement = Achievement.new(info).wont_be_nil
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'returns zero if target value is below range' do
|
22
|
+
getAchievement({ val: 50 }, 'val', 100, 200).getPercentage.must_equal 0
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'returns 100 if target value is above range' do
|
26
|
+
getAchievement({ val: 250 }, 'val', 100, 200).getPercentage.must_equal 100
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'data can be made of symbols' do
|
30
|
+
data = { a: { b: { c: 50 } } }
|
31
|
+
getAchievement(data, 'a/b/c', 0, 100).getPercentage.must_equal 50
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'data can be made of literal symbols' do
|
35
|
+
data = { :"a a" => { :"b b" => { :"cc" => 50 } } }
|
36
|
+
getAchievement(data, 'a a/b b/cc', 0, 100).getPercentage.must_equal 50
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'data can be made of strings' do
|
40
|
+
data = { "a" => { "b" => { "c" => 50 } } }
|
41
|
+
getAchievement(data, 'a/b/c', 0, 100).getPercentage.must_equal 50
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'data can be made of strings with spaces' do
|
45
|
+
data = { "a a" => { "b b b" => { " c " => 50 } } }
|
46
|
+
getAchievement(data, 'a a/b b b/ c ', 0, 100).getPercentage.must_equal 50
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'data can be made of symbols and strings' do
|
50
|
+
data = { "a a" => { b: { " c " => 50 } } }
|
51
|
+
getAchievement(data, 'a a/b/ c ', 0, 100).getPercentage.must_equal 50
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'returns 99 if a very big number is close to maximum' do
|
55
|
+
getAchievement({ val: 9999999 }, 'val', 0, 10000000).getPercentage.must_equal 99
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'returns 1 if a very big number is close to minimum but not rangeFrom' do
|
59
|
+
getAchievement({ val: 1 }, 'val', 0, 10000000).getPercentage.must_equal 1
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'returns 0 if the target value is exact rangeFrom' do
|
63
|
+
getAchievement({ val: 0 }, 'val', 0, 100).getPercentage.must_equal 0
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'returns 100 if the target value is exact rangeTo' do
|
67
|
+
getAchievement({ val: 100 }, 'val', 0, 100).getPercentage.must_equal 100
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'can deal with float values in the data' do
|
71
|
+
getAchievement({ val: 50.0 }, 'val', 0, 100).getPercentage.must_equal 50
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'can deal with float values in the rangeFrom' do
|
75
|
+
getAchievement({ val: 50 }, 'val', 0.0, 100).getPercentage.must_equal 50
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'can deal with float values in the rangeTo' do
|
79
|
+
getAchievement({ val: 50 }, 'val', 0, 100.0).getPercentage.must_equal 50
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'can deal with string value in the target value' do
|
83
|
+
getAchievement({ val: "50" }, 'val', 0, 100.0).getPercentage.must_equal 50
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'can deal with an invalid string value in the target value' do
|
87
|
+
getAchievement({ val: "abc" }, 'val', 0, 100.0).getPercentage.must_equal 0
|
88
|
+
end
|
89
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'minitest/spec'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require 'vcr'
|
4
|
+
|
5
|
+
require 'gamer_stats'
|
6
|
+
|
7
|
+
include GamerStats
|
8
|
+
include Achievements
|
9
|
+
|
10
|
+
VCR.configure do |c|
|
11
|
+
c.hook_into :webmock
|
12
|
+
c.cassette_library_dir = 'test/cassettes'
|
13
|
+
# :new_episodes = add new requests to the same cassette
|
14
|
+
c.default_cassette_options = { :record => :new_episodes, :erb => true }
|
15
|
+
# dont raise exceptions when no cassette is in the tray
|
16
|
+
c.allow_http_connections_when_no_cassette = true
|
17
|
+
# ignore local host calls (local development)
|
18
|
+
c.ignore_localhost = true
|
19
|
+
|
20
|
+
# catch all requests and store them
|
21
|
+
c.around_http_request do |request|
|
22
|
+
VCR.use_cassette("all", &request)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# dont raise exceptions when the http connection is unexpected (turn off with WebMock.disable_net_connect!)
|
27
|
+
WebMock.allow_net_connect!
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gamer_stats
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SeriousM - Bernhard Millauer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-05-
|
11
|
+
date: 2013-05-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -28,44 +28,86 @@ dependencies:
|
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 10.0.4
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 10.0.4
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: vcr
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
47
|
+
version: 2.4.0
|
34
48
|
type: :development
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
|
-
- -
|
52
|
+
- - ~>
|
39
53
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
54
|
+
version: 2.4.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: webmock
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.11.0
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.11.0
|
41
69
|
- !ruby/object:Gem::Dependency
|
42
70
|
name: httparty
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
44
72
|
requirements:
|
45
|
-
- -
|
73
|
+
- - ~>
|
46
74
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
75
|
+
version: 0.11.0
|
48
76
|
type: :runtime
|
49
77
|
prerelease: false
|
50
78
|
version_requirements: !ruby/object:Gem::Requirement
|
51
79
|
requirements:
|
52
|
-
- -
|
80
|
+
- - ~>
|
53
81
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
82
|
+
version: 0.11.0
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
84
|
name: json
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
58
86
|
requirements:
|
59
|
-
- -
|
87
|
+
- - ~>
|
60
88
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
89
|
+
version: 1.7.7
|
62
90
|
type: :runtime
|
63
91
|
prerelease: false
|
64
92
|
version_requirements: !ruby/object:Gem::Requirement
|
65
93
|
requirements:
|
66
|
-
- -
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 1.7.7
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: percentage
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ~>
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 1.0.0
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ~>
|
67
109
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
110
|
+
version: 1.0.0
|
69
111
|
description: Provides a way to gather gamer stats from the http://p-stats.com network
|
70
112
|
email:
|
71
113
|
- bernhard.millauer@gmail.com
|
@@ -79,6 +121,7 @@ files:
|
|
79
121
|
- README.md
|
80
122
|
- Rakefile
|
81
123
|
- gamer_stats.gemspec
|
124
|
+
- lib/achievements/achievements.rb
|
82
125
|
- lib/bf3/bf3.rb
|
83
126
|
- lib/error/gamer_stats_error.rb
|
84
127
|
- lib/gamer_stats.rb
|
@@ -86,8 +129,10 @@ files:
|
|
86
129
|
- lib/helper/deep_dup.rb
|
87
130
|
- lib/helper/deep_merge.rb
|
88
131
|
- lib/helper/hash_path_eval.rb
|
89
|
-
- test/
|
90
|
-
- test/
|
132
|
+
- test/achievements/achievements_test.rb
|
133
|
+
- test/bf3/bf3_test.rb
|
134
|
+
- test/helper/hash_path_eval_test.rb
|
135
|
+
- test/test_helper.rb
|
91
136
|
homepage: https://github.com/SeriousM/gamer_stats
|
92
137
|
licenses:
|
93
138
|
- MIT
|
@@ -113,6 +158,8 @@ signing_key:
|
|
113
158
|
specification_version: 4
|
114
159
|
summary: Provides a way to gather gamer stats from the http://p-stats.com network
|
115
160
|
test_files:
|
116
|
-
- test/
|
117
|
-
- test/
|
161
|
+
- test/achievements/achievements_test.rb
|
162
|
+
- test/bf3/bf3_test.rb
|
163
|
+
- test/helper/hash_path_eval_test.rb
|
164
|
+
- test/test_helper.rb
|
118
165
|
has_rdoc:
|