glaze-analyzer 0.0.2

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 670241c9a702128cbc6ece2d23bb1ccaa3406f2a
4
+ data.tar.gz: dd86be18e358e524274109ce18883a50cd165f0b
5
+ SHA512:
6
+ metadata.gz: 2a343eb0abbf53b1196c8e74daf04e5bc30c0500983794665852f49f96df993a53c1398d34be411dc2072510efb2737c054f80ff6ccefa76b49834be8dd4e77f
7
+ data.tar.gz: 78b99e2bc8dd682706717b7c2a7965234966f23e97330c39e5cd7067743a750f498bc46cb158a2dc678609f07cd0d919b8d5fa94db3a6a7a954a8b5bf5aaf9b3
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in glaze-analyzer.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Marcus Orochena
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,31 @@
1
+ # Glaze::Analyzer
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'glaze-analyzer'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install glaze-analyzer
20
+
21
+ ## Usage
22
+
23
+ TODO: Write usage instructions here
24
+
25
+ ## Contributing
26
+
27
+ 1. Fork it ( https://github.com/[my-github-username]/glaze-analyzer/fork )
28
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
29
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
30
+ 4. Push to the branch (`git push origin my-new-feature`)
31
+ 5. Create a new Pull Request
@@ -0,0 +1,3 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ Dir.glob('tasks/**/*.rake').each(&method(:import))
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'glaze/analyzer/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "glaze-analyzer"
8
+ spec.version = Glaze::Analyzer::VERSION
9
+ spec.authors = ["Marcus Orochena"]
10
+ spec.email = ["marcus@orochena.net"]
11
+ spec.summary = %q{WoW Arena Analytics}
12
+ spec.description = %q{Queries Wow Arena Stats}
13
+ spec.homepage = "http://www.glaze-wow.com"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.7"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "rspec"
24
+ end
@@ -0,0 +1,76 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+ require 'json'
4
+ require "glaze/analyzer/version"
5
+ require "glaze/analyzer/characterdata"
6
+ require "glaze/analyzer/glyphs"
7
+
8
+ module GlazeAnalyzer
9
+ class Analyzer
10
+
11
+ attr_reader :ranking_data
12
+
13
+ def initialize
14
+ @ranking_data = retrieve_ranking_data
15
+ end
16
+
17
+ def retrieve_ranking_data
18
+ puts 'retrieving 3v3 ranking data...'
19
+ uri = URI.parse('http://us.battle.net/api/wow/leaderboard/3v3')
20
+ response = Net::HTTP.get_response(uri)
21
+ puts 'retrieved ranking data, parsing json....'
22
+ results = JSON.parse(response.body)
23
+
24
+ results['rows']
25
+ end
26
+
27
+ def get_top_characters(spec_id, number_to_retrieve)
28
+ character_list = []
29
+ retrieved = 0
30
+
31
+ @ranking_data.each do |character|
32
+ if spec_id == character['specId']
33
+ character_list << character
34
+ retrieved += 1
35
+ end
36
+ if retrieved >= number_to_retrieve
37
+ break
38
+ end
39
+ end
40
+
41
+ character_list
42
+ end
43
+
44
+ def create_glyph_hash(glyph_array, spec_id)
45
+ glyph_count = Glyphs.new(spec_id)
46
+ glyph_array.each do |g|
47
+ glyph_count.glyph_data[g] +=1
48
+ end
49
+ glyph_count.glyph_data
50
+ end
51
+
52
+ def get_glyph_data_for_spec(spec_id, number_to_retrieve)
53
+ character_list = get_top_characters(spec_id, number_to_retrieve)
54
+ glyph_list = []
55
+ character_data_list = character_list.map do |x|
56
+ begin
57
+ CharacterData.new(x['realmSlug'], x['name'], x['specId'])
58
+ rescue
59
+ puts "error.. skipped character"
60
+ nil
61
+ end
62
+ end
63
+ character_data_list.compact!
64
+ character_data_list.each do |character|
65
+ character.major_glyph_names.each do |g|
66
+ glyph_list << g
67
+ end
68
+ end
69
+
70
+ glyph_hash = create_glyph_hash(glyph_list, spec_id)
71
+
72
+ return glyph_hash, character_data_list.count
73
+ end
74
+
75
+ end
76
+ end
@@ -0,0 +1,112 @@
1
+ module GlazeAnalyzer
2
+
3
+ class CharacterData
4
+ attr_accessor :data
5
+
6
+ def initialize(realm, character_name, pvp_spec_id)
7
+ uri = URI.parse("http://us.battle.net/api/wow/character/#{realm}/#{URI.encode(character_name)}?fields=talents")
8
+ response = Net::HTTP.get_response(uri)
9
+ character_data = JSON.parse(response.body)
10
+
11
+ tries = 0
12
+ while character_data['talents'] == nil
13
+ if tries > 3
14
+ raise 'Error retrieving character data'
15
+ end
16
+
17
+ puts "error.. retrying #{character_name} - #{realm} retrying in 5 seconds"
18
+ response = Net::HTTP.get_response(uri)
19
+ character_data = JSON.parse(response.body)
20
+ tries += 1
21
+ sleep 5
22
+ end
23
+
24
+ @data = character_data
25
+ @pvp_spec_id = pvp_spec_id
26
+ end
27
+
28
+ def pvp_spec
29
+ pvp_spec_name = spec_name(@pvp_spec_id) # eg. Retribution
30
+ spec1_name, spec2_name = get_character_spec_names # eg. Retribution, Holy
31
+
32
+
33
+ if pvp_spec_name == spec1_name && pvp_spec_name == spec2_name
34
+ if @data['talents'].first['selected'] == true
35
+ return 0
36
+ else
37
+ return 1
38
+ end
39
+ elsif pvp_spec_name == spec1_name
40
+ return 0
41
+ elsif pvp_spec_name == spec2_name
42
+ return 1
43
+ else
44
+ return 0
45
+ end
46
+ end
47
+
48
+ def get_character_spec_names
49
+ begin
50
+ spec1_name = @data['talents'][0]['spec']['name']
51
+ rescue
52
+ spec1_name = 'nil'
53
+ end
54
+
55
+ begin
56
+ spec2_name = @data['talents'][1]['spec']['name']
57
+ rescue
58
+ spec2_name = 'nil'
59
+ end
60
+
61
+ return spec1_name, spec2_name
62
+ end
63
+
64
+ def major_glyph_names
65
+ @data['talents'][pvp_spec]['glyphs']['major'].map do |glyph|
66
+ glyph['name']
67
+ end
68
+ end
69
+
70
+ def spec_name(spec_id)
71
+ spec_names = {
72
+ 102 => 'Balance',
73
+ 103 => 'Feral Combat',
74
+ 104 => 'Guardian',
75
+ 105 => 'Restoration',
76
+ 250 => 'Blood',
77
+ 251 => 'Frost',
78
+ 252 => 'Unholy',
79
+ 253 => 'Beast Mastery',
80
+ 254 => 'Marksmanship',
81
+ 255 => 'Survival',
82
+ 256 => 'Discipline',
83
+ 257 => 'Holy',
84
+ 258 => 'Shadow',
85
+ 259 => 'Assassination',
86
+ 260 => 'Combat',
87
+ 261 => 'Subtlety',
88
+ 262 => 'Elemental',
89
+ 263 => 'Enhancement',
90
+ 264 => 'Restoration',
91
+ 265 => 'Affliction',
92
+ 266 => 'Demonology',
93
+ 267 => 'Destruction',
94
+ 268 => 'Brewmaster',
95
+ 269 => 'Windwalker',
96
+ 270 => 'Mistweaver',
97
+ 62 => 'Arcane',
98
+ 63 => 'Fire',
99
+ 64 => 'Frost',
100
+ 65 => 'Holy',
101
+ 66 => 'Protection',
102
+ 70 => 'Retribution',
103
+ 71 => 'Arms',
104
+ 72 => 'Fury',
105
+ 73 => 'Protection'
106
+ }
107
+
108
+ return spec_names[spec_id]
109
+ end
110
+
111
+ end
112
+ end
@@ -0,0 +1,428 @@
1
+ module GlazeAnalyzer
2
+
3
+ class Glyphs
4
+ attr_accessor :glyph_data
5
+
6
+ def initialize(spec_id)
7
+ @glyph_data = Hash.new
8
+
9
+ case spec_id
10
+ when 65..70
11
+ @glyph_data = paladin_glyphs
12
+ when 256..258
13
+ @glyph_data = priest_glyphs
14
+ when 250..252
15
+ @glyph_data = deathknight_glyphs
16
+ when 102..105
17
+ @glyph_data = druid_glyphs
18
+ when 253..255
19
+ @glyph_data = hunter_glyphs
20
+ when 62..64
21
+ @glyph_data = mage_glyphs
22
+ when 268..270
23
+ @glyph_data = monk_glyphs
24
+ when 259..261
25
+ @glyph_data = rogue_glyphs
26
+ when 262..264
27
+ @glyph_data = shaman_glyphs
28
+ when 265..267
29
+ @glyph_data = warlock_glyphs
30
+ when 71..73
31
+ @glyph_data = warrior_glyphs
32
+ end
33
+
34
+ end
35
+
36
+ def warrior_glyphs
37
+ {
38
+ 'Glyph of Rude Interruption' => 0,
39
+ 'Glyph of Blitz' => 0,
40
+ 'Glyph of Bloodthirst' => 0,
41
+ 'Glyph of Bull Rush' => 0,
42
+ 'Glyph of Cleave' => 0,
43
+ 'Glyph of Death From Above' => 0,
44
+ 'Glyph of Die by the Sword' => 0,
45
+ 'Glyph of Enraged Speed' => 0,
46
+ 'Glyph of Flawless Defense' => 0,
47
+ 'Glyph of Gag Order' => 0,
48
+ 'Glyph of Heroic Leap' => 0,
49
+ 'Glyph of Hindering Strikes' => 0,
50
+ 'Glyph of Impaling Throws' => 0,
51
+ 'Glyph of Long Charge' => 0,
52
+ 'Glyph of Mocking Banner' => 0,
53
+ 'Glyph of Mortal Strike' => 0,
54
+ 'Glyph of Raging Blow' => 0,
55
+ 'Glyph of Raging Wind' => 0,
56
+ 'Glyph of Rallying Cry' => 0,
57
+ 'Glyph of Recklessness' => 0,
58
+ 'Glyph of Resonating Power' => 0,
59
+ 'Glyph of Shattering Throw' => 0,
60
+ 'Glyph of Shield Slam' => 0,
61
+ 'Glyph of Shield Wall' => 0,
62
+ 'Glyph of Spell Reflection' => 0,
63
+ 'Glyph of Sweeping Strikes' => 0,
64
+ 'Glyph of the Drawn Sword' => 0,
65
+ 'Glyph of the Executor' => 0,
66
+ 'Glyph of Unending Rage' => 0,
67
+ 'Glyph of Victorious Throw' => 0,
68
+ 'Glyph of Victory Rush' => 0,
69
+ 'Glyph of Wind and Thunder' => 0,
70
+ }
71
+ end
72
+
73
+ def paladin_glyphs
74
+ {
75
+ "Glyph of Ardent Defender" => 0,
76
+ "Glyph of Avenging Wrath" => 0,
77
+ "Glyph of Beacon of Light" => 0,
78
+ "Glyph of Blessed Life" => 0,
79
+ "Glyph of Burden of Guilt" => 0,
80
+ "Glyph of Cleanse" => 0,
81
+ "Glyph of Consecration" => 0,
82
+ "Glyph of Dazing Shield" => 0,
83
+ "Glyph of Denounce" => 0,
84
+ "Glyph of Devotion Aura" => 0,
85
+ "Glyph of Divine Protection" => 0,
86
+ "Glyph of Divine Shield" => 0,
87
+ "Glyph of Divine Storm" => 0,
88
+ "Glyph of Divine Wrath" => 0,
89
+ "Glyph of Divinity" => 0,
90
+ "Glyph of Double Jeopardy" => 0,
91
+ "Glyph of Final Wrath" => 0,
92
+ "Glyph of Flash of Light" => 0,
93
+ "Glyph of Focused Shield" => 0,
94
+ "Glyph of Hammer of the Righteous" => 0,
95
+ "Glyph of Hand of Freedom" => 0,
96
+ "Glyph of Hand of Sacrifice" => 0,
97
+ "Glyph of Harsh Words" => 0,
98
+ "Glyph of Holy Shock" => 0,
99
+ "Glyph of Holy Wrath" => 0,
100
+ "Glyph of Illumination" => 0,
101
+ "Glyph of Immediate Truth" => 0,
102
+ "Glyph of Judgment" => 0,
103
+ "Glyph of Light of Dawn" => 0,
104
+ "Glyph of Mass Exorcism" => 0,
105
+ "Glyph of Merciful Wrath" => 0,
106
+ "Glyph of Protector of the Innocent" => 0,
107
+ "Glyph of Templar's Verdict" => 0,
108
+ "Glyph of the Alabaster Shield" => 0,
109
+ "Glyph of the Battle Healer" => 0,
110
+ "Glyph of the Consecrator" => 0,
111
+ "Glyph of the Liberator" => 0,
112
+ "Glyph of Word of Glory" => 0
113
+ }
114
+ end
115
+
116
+ def priest_glyphs
117
+ {
118
+ "Glyph of Holy Nova" => 0,
119
+ "Glyph of Binding Heal" => 0,
120
+ "Glyph of Circle of Healing" => 0,
121
+ "Glyph of Deep Wells" => 0,
122
+ "Glyph of Delayed Coalescence" => 0,
123
+ "Glyph of Dispel Magic" => 0,
124
+ "Glyph of Dispersion" => 0,
125
+ "Glyph of Fade" => 0,
126
+ "Glyph of Fear Ward" => 0,
127
+ "Glyph of Focused Mending" => 0,
128
+ "Glyph of Free Action" => 0,
129
+ "Glyph of Guardian Spirit" => 0,
130
+ "Glyph of Holy Fire" => 0,
131
+ "Glyph of Inner Fire" => 0,
132
+ "Glyph of Inner Sanctum" => 0,
133
+ "Glyph of Leap of Faith" => 0,
134
+ "Glyph of Levitate" => 0,
135
+ "Glyph of Lightwell" => 0,
136
+ "Glyph of Mass Dispel" => 0,
137
+ "Glyph of Mind Blast" => 0,
138
+ "Glyph of Mind Flay" => 0,
139
+ "Glyph of Mind Harvest" => 0,
140
+ "Glyph of Mind Spike" => 0,
141
+ "Glyph of Miraculous Dispelling" => 0,
142
+ "Glyph of Penance" => 0,
143
+ "Glyph of Power Word: Shield" => 0,
144
+ "Glyph of Prayer of Mending" => 0,
145
+ "Glyph of Psychic Horror" => 0,
146
+ "Glyph of Psychic Scream" => 0,
147
+ "Glyph of Purification" => 0,
148
+ "Glyph of Purify" => 0,
149
+ "Glyph of Reflective Shield" => 0,
150
+ "Glyph of Renew" => 0,
151
+ "Glyph of Restored Faith" => 0,
152
+ "Glyph of Scourge Imprisonment" => 0,
153
+ "Glyph of Shadow Magic" => 0,
154
+ "Glyph of Shadow Word: Death" => 0,
155
+ "Glyph of Silence" => 0,
156
+ "Glyph of Smite" => 0,
157
+ "Glyph of Spirit of Redemption" => 0,
158
+ "Glyph of the Inquisitor" => 0,
159
+ "Glyph of the Redeemer" => 0,
160
+ "Glyph of Vampiric Embrace" => 0,
161
+ "Glyph of Weakened Soul" => 0,
162
+ }
163
+ end
164
+
165
+ def deathknight_glyphs
166
+ {
167
+ "Glyph of Chains of Ice" => 0,
168
+ "Glyph of Icebound Fortitude" => 0,
169
+ "Glyph of Runic Power" => 0,
170
+ "Glyph of Shifting Presences" => 0,
171
+ "Glyph of Unholy Frenzy" => 0,
172
+ "Glyph of Vampiric Blood" => 0,
173
+ "Glyph of Absorb Magic" => 0,
174
+ "Glyph of Anti-Magic Shell" => 0,
175
+ "Glyph of Blood Boil" => 0,
176
+ "Glyph of Dancing Rune Weapon" => 0,
177
+ "Glyph of Dark Simulacrum" => 0,
178
+ "Glyph of Death and Decay" => 0,
179
+ "Glyph of Death Coil" => 0,
180
+ "Glyph of Death Grip" => 0,
181
+ "Glyph of Empowerment" => 0,
182
+ "Glyph of Enduring Infection" => 0,
183
+ "Glyph of Icy Runes" => 0,
184
+ "Glyph of Icy Touch" => 0,
185
+ "Glyph of Mind Freeze" => 0,
186
+ "Glyph of Outbreak" => 0,
187
+ "Glyph of Pillar of Frost" => 0,
188
+ "Glyph of Raise Ally" => 0,
189
+ "Glyph of Regenerative Magic" => 0,
190
+ "Glyph of Rune Tap" => 0,
191
+ "Glyph of Strangulate" => 0,
192
+ "Glyph of Swift Death" => 0,
193
+ "Glyph of the Ice Reaper" => 0,
194
+ "Glyph of Unholy Command" => 0,
195
+ }
196
+ end
197
+
198
+ def druid_glyphs
199
+ {
200
+ "Glyph of Rejuvenation" => 0,
201
+ "Glyph of Cyclone" => 0,
202
+ "Glyph of Maim" => 0,
203
+ "Glyph of Moonwarding" => 0,
204
+ "Glyph of Skull Bash" => 0,
205
+ "Glyph of the Shapemender" => 0,
206
+ "Glyph of Astral Communion" => 0,
207
+ "Glyph of Barkskin" => 0,
208
+ "Glyph of Blooming" => 0,
209
+ "Glyph of Cat Form" => 0,
210
+ "Glyph of Celestial Alignment" => 0,
211
+ "Glyph of Dash" => 0,
212
+ "Glyph of Enchanted Bark" => 0,
213
+ "Glyph of Entangling Energy" => 0,
214
+ "Glyph of Entangling Roots" => 0,
215
+ "Glyph of Fae Silence" => 0,
216
+ "Glyph of Faerie Fire" => 0,
217
+ "Glyph of Ferocious Bite" => 0,
218
+ "Glyph of Guided Stars" => 0,
219
+ "Glyph of Healing Touch" => 0,
220
+ "Glyph of Hurricane" => 0,
221
+ "Glyph of Imbued Bark" => 0,
222
+ "Glyph of Maul" => 0,
223
+ "Glyph of Nature's Cure" => 0,
224
+ "Glyph of Rake" => 0,
225
+ "Glyph of Rebirth" => 0,
226
+ "Glyph of Regrowth" => 0,
227
+ "Glyph of Savage Roar" => 0,
228
+ "Glyph of Stampeding Roar" => 0,
229
+ "Glyph of Survival Instincts" => 0,
230
+ "Glyph of the Master Shapeshifter" => 0,
231
+ "Glyph of the Ninth Life" => 0,
232
+ "Glyph of Wild Growth" => 0,
233
+ }
234
+ end
235
+
236
+ def hunter_glyphs
237
+ {
238
+ "Glyph of Liberation" => 0,
239
+ "Glyph of Quick Revival" => 0,
240
+ "Glyph of Snake Trap" => 0,
241
+ "Glyph of Animal Bond" => 0,
242
+ "Glyph of Black Ice" => 0,
243
+ "Glyph of Camouflage" => 0,
244
+ "Glyph of Chimaera Shot" => 0,
245
+ "Glyph of Deterrence" => 0,
246
+ "Glyph of Disengage" => 0,
247
+ "Glyph of Distracting Shot" => 0,
248
+ "Glyph of Endless Wrath" => 0,
249
+ "Glyph of Enduring Deceit" => 0,
250
+ "Glyph of Explosive Trap" => 0,
251
+ "Glyph of Freezing Trap" => 0,
252
+ "Glyph of Ice Trap" => 0,
253
+ "Glyph of Master's Call" => 0,
254
+ "Glyph of Mend Pet" => 0,
255
+ "Glyph of Mending" => 0,
256
+ "Glyph of Mirrored Blades" => 0,
257
+ "Glyph of Misdirection" => 0,
258
+ "Glyph of No Escape" => 0,
259
+ "Glyph of Pathfinding" => 0,
260
+ "Glyph of Solace" => 0,
261
+ "Glyph of the Lean Pack" => 0,
262
+ "Glyph of Tranquilizing Shot" => 0,
263
+ }
264
+ end
265
+
266
+ def mage_glyphs
267
+ {
268
+ "Glyph of Dragon's Breath" => 0,
269
+ "Glyph of Regenerative Ice" => 0,
270
+ "Glyph of Slow" => 0,
271
+ "Glyph of Arcane Explosion" => 0,
272
+ "Glyph of Arcane Power" => 0,
273
+ "Glyph of Blink" => 0,
274
+ "Glyph of Combustion" => 0,
275
+ "Glyph of Cone of Cold" => 0,
276
+ "Glyph of Counterspell" => 0,
277
+ "Glyph of Deep Freeze" => 0,
278
+ "Glyph of Frost Nova" => 0,
279
+ "Glyph of Frostfire Bolt" => 0,
280
+ "Glyph of Ice Block" => 0,
281
+ "Glyph of Icy Veins" => 0,
282
+ "Glyph of Inferno Blast" => 0,
283
+ "Glyph of Polymorph" => 0,
284
+ "Glyph of Rapid Displacement" => 0,
285
+ "Glyph of Remove Curse" => 0,
286
+ "Glyph of Spellsteal" => 0,
287
+ "Glyph of Splitting Ice" => 0,
288
+ "Glyph of Water Elemental" => 0,
289
+ }
290
+ end
291
+
292
+ def monk_glyphs
293
+ {
294
+ "Glyph of Expel Harm" => 0,
295
+ "Glyph of Freedom Roll" => 0,
296
+ "Glyph of Keg Smash" => 0,
297
+ "Glyph of Renewed Tea" => 0,
298
+ "Glyph of Soothing Mist" => 0,
299
+ "Glyph of the Floating Butterfly" => 0,
300
+ "Glyph of the Flying Serpent" => 0,
301
+ "Glyph of Victory Roll" => 0,
302
+ "Glyph of Breath of Fire" => 0,
303
+ "Glyph of Detox" => 0,
304
+ "Glyph of Detoxing" => 0,
305
+ "Glyph of Fists of Fury" => 0,
306
+ "Glyph of Flying Fists" => 0,
307
+ "Glyph of Fortifying Brew" => 0,
308
+ "Glyph of Fortuitous Spheres" => 0,
309
+ "Glyph of Guard" => 0,
310
+ "Glyph of Leer of the Ox" => 0,
311
+ "Glyph of Life Cocoon" => 0,
312
+ "Glyph of Mana Tea" => 0,
313
+ "Glyph of Nimble Brew" => 0,
314
+ "Glyph of Paralysis" => 0,
315
+ "Glyph of Rapid Rolling" => 0,
316
+ "Glyph of Renewing Mist" => 0,
317
+ "Glyph of Surging Mist" => 0,
318
+ "Glyph of Targeted Expulsion" => 0,
319
+ "Glyph of Touch of Death" => 0,
320
+ "Glyph of Touch of Karma" => 0,
321
+ "Glyph of Transcendence" => 0,
322
+ "Glyph of Zen Focus" => 0,
323
+ "Glyph of Zen Meditation" => 0,
324
+ }
325
+ end
326
+
327
+ def rogue_glyphs
328
+ {
329
+ "Glyph of Ambush" => 0,
330
+ "Glyph of Blade Flurry" => 0,
331
+ "Glyph of Blind" => 0,
332
+ "Glyph of Cheap Shot" => 0,
333
+ "Glyph of Cloak of Shadows" => 0,
334
+ "Glyph of Deadly Momentum" => 0,
335
+ "Glyph of Disappearance" => 0,
336
+ "Glyph of Elusiveness" => 0,
337
+ "Glyph of Energy" => 0,
338
+ "Glyph of Energy Flows" => 0,
339
+ "Glyph of Evasion" => 0,
340
+ "Glyph of Feint" => 0,
341
+ "Glyph of Garrote" => 0,
342
+ "Glyph of Gouge" => 0,
343
+ "Glyph of Hemorrhaging Veins" => 0,
344
+ "Glyph of Kick" => 0,
345
+ "Glyph of Recovery" => 0,
346
+ "Glyph of Recuperate" => 0,
347
+ "Glyph of Shiv" => 0,
348
+ "Glyph of Smoke Bomb" => 0,
349
+ "Glyph of Sprint" => 0,
350
+ "Glyph of Stealth" => 0,
351
+ "Glyph of Vanish" => 0,
352
+ "Glyph of Vendetta" => 0,
353
+ }
354
+ end
355
+
356
+ def shaman_glyphs
357
+ {
358
+ "Glyph of Grounding" => 0,
359
+ "Glyph of Lava Spread" => 0,
360
+ "Glyph of Reactive Shielding" => 0,
361
+ "Glyph of Shamanistic Resolve" => 0,
362
+ "Glyph of Shocks" => 0,
363
+ "Glyph of Spiritwalker's Focus" => 0,
364
+ "Glyph of Capacitor Totem" => 0,
365
+ "Glyph of Chain Lightning" => 0,
366
+ "Glyph of Chaining" => 0,
367
+ "Glyph of Cleansing Waters" => 0,
368
+ "Glyph of Ephemeral Spirits" => 0,
369
+ "Glyph of Eternal Earth" => 0,
370
+ "Glyph of Feral Spirit" => 0,
371
+ "Glyph of Fire Elemental Totem" => 0,
372
+ "Glyph of Fire Nova" => 0,
373
+ "Glyph of Flame Shock" => 0,
374
+ "Glyph of Frost Shock" => 0,
375
+ "Glyph of Frostbrand Weapon" => 0,
376
+ "Glyph of Ghost Wolf" => 0,
377
+ "Glyph of Grounding Totem" => 0,
378
+ "Glyph of Healing Stream Totem" => 0,
379
+ "Glyph of Healing Wave" => 0,
380
+ "Glyph of Hex" => 0,
381
+ "Glyph of Lightning Shield" => 0,
382
+ "Glyph of Purge" => 0,
383
+ "Glyph of Purging" => 0,
384
+ "Glyph of Purify Spirit" => 0,
385
+ "Glyph of Riptide" => 0,
386
+ "Glyph of Shamanistic Rage" => 0,
387
+ "Glyph of Spirit Walk" => 0,
388
+ "Glyph of Spiritwalker's Aegis" => 0,
389
+ "Glyph of Spiritwalker's Grace" => 0,
390
+ "Glyph of Thunder" => 0,
391
+ "Glyph of Totemic Recall" => 0,
392
+ "Glyph of Totemic Vigor" => 0,
393
+ "Glyph of Unstable Earth" => 0,
394
+ "Glyph of Water Shield" => 0,
395
+ "Glyph of Wind Shear" => 0,
396
+ }
397
+ end
398
+
399
+ def warlock_glyphs
400
+ {
401
+ "Glyph of Conflagrate" => 0,
402
+ "Glyph of Dark Soul" => 0,
403
+ "Glyph of Demon Training" => 0,
404
+ "Glyph of Demonic Circle" => 0,
405
+ "Glyph of Drain Life" => 0,
406
+ "Glyph of Ember Tap" => 0,
407
+ "Glyph of Eternal Resolve" => 0,
408
+ "Glyph of Fear" => 0,
409
+ "Glyph of Havoc" => 0,
410
+ "Glyph of Healthstone" => 0,
411
+ "Glyph of Imp Swarm" => 0,
412
+ "Glyph of Life Pact" => 0,
413
+ "Glyph of Life Tap" => 0,
414
+ "Glyph of Shadowflame" => 0,
415
+ "Glyph of Siphon Life" => 0,
416
+ "Glyph of Soul Consumption" => 0,
417
+ "Glyph of Soul Swap" => 0,
418
+ "Glyph of Soul Swap" => 0,
419
+ "Glyph of Soulstone" => 0,
420
+ "Glyph of Strengthened Resolve" => 0,
421
+ "Glyph of Twilight Ward" => 0,
422
+ "Glyph of Unending Resolve" => 0,
423
+ "Glyph of Unstable Affliction" => 0,
424
+ }
425
+ end
426
+
427
+ end
428
+ end
@@ -0,0 +1,5 @@
1
+ module Glaze
2
+ module Analyzer
3
+ VERSION = "0.0.2"
4
+ end
5
+ end
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+
3
+
4
+ describe GlazeAnalyzer::Analyzer do
5
+ analyzer = GlazeAnalyzer::Analyzer.new('sample_3v3.json')
6
+
7
+ it 'retrieves 3v3 ranking data and parses as array' do
8
+ expect(analyzer.ranking_data).to be_an(Array)
9
+ end
10
+
11
+ it 'gets top arena players by spec' do
12
+ top_paladins = analyzer.get_top_characters(70, 3)
13
+ expect(top_paladins).to be_an(Array)
14
+ end
15
+
16
+ it 'gets glyph data for a spec' do
17
+ glyph_data, character_count = analyzer.get_glyph_data_for_spec(70, 3)
18
+ expect(glyph_data).to be_an(Hash)
19
+ end
20
+
21
+ it 'increments glyph list based on glyph array' do
22
+ glyph_array = [
23
+ "Glyph of Templar's Verdict",
24
+ "Glyph of Templar's Verdict",
25
+ "Glyph of Templar's Verdict",
26
+ "Glyph of Burden of Guilt",
27
+ "Glyph of Burden of Guilt",
28
+ "Glyph of Burden of Guilt",
29
+ "Glyph of Hand of Freedom",
30
+ "Glyph of Hand of Freedom",
31
+ "Glyph of Hand of Freedom",
32
+ ]
33
+ glyph_hash = analyzer.create_glyph_hash(glyph_array, 70)
34
+ expect(glyph_hash["Glyph of Hand of Freedom"]).to eq 3
35
+ end
36
+
37
+ it 'gets total amount of a spec' do
38
+ num_of_ret_paladins = analyzer.get_total_spec(70)
39
+
40
+ end
41
+
42
+
43
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe GlazeAnalyzer::CharacterData do
4
+ character_data = GlazeAnalyzer::CharacterData.new(
5
+ 'bleeding-hollow',
6
+ 'aeze',
7
+ 70)
8
+
9
+ it 'successfully retrives character information' do
10
+ expect(character_data.data).to be_an(Hash)
11
+ end
12
+ end
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+
3
+ describe GlazeAnalyzer::Glyphs do
4
+ glyphs = GlazeAnalyzer::Glyphs.new(70)
5
+
6
+ it 'should initialize as a hash' do
7
+ expect(glyphs.glyph_data).to be_an(Hash)
8
+ end
9
+
10
+ it 'should be initialized with proper hash data' do
11
+ expect(glyphs.glyph_data["Glyph of Templar's Verdict"]).to eq 0
12
+ end
13
+
14
+ end
@@ -0,0 +1,12 @@
1
+ require 'glaze/analyzer'
2
+
3
+ RSpec.configure do |config|
4
+ # Use color in STDOUT
5
+ config.color = true
6
+
7
+ # Use color not only in STDOUT but also in pagers and files
8
+ config.tty = true
9
+
10
+ # Use the specified formatter
11
+ config.formatter = :documentation # :progress, :html, :textmate
12
+ end
@@ -0,0 +1,3 @@
1
+ require 'rspec/core/rake_task'
2
+
3
+ RSpec::Core::RakeTask.new(:spec)
metadata ADDED
@@ -0,0 +1,105 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: glaze-analyzer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Marcus Orochena
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
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'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: Queries Wow Arena Stats
56
+ email:
57
+ - marcus@orochena.net
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".gitignore"
63
+ - Gemfile
64
+ - LICENSE.txt
65
+ - README.md
66
+ - Rakefile
67
+ - glaze-analyzer.gemspec
68
+ - lib/glaze/analyzer.rb
69
+ - lib/glaze/analyzer/characterdata.rb
70
+ - lib/glaze/analyzer/glyphs.rb
71
+ - lib/glaze/analyzer/version.rb
72
+ - spec/analyzer_spec.rb
73
+ - spec/characterdata_spec.rb
74
+ - spec/glyphs_spec.rb
75
+ - spec/spec_helper.rb
76
+ - tasks/rspec.rake
77
+ homepage: http://www.glaze-wow.com
78
+ licenses:
79
+ - MIT
80
+ metadata: {}
81
+ post_install_message:
82
+ rdoc_options: []
83
+ require_paths:
84
+ - lib
85
+ required_ruby_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ required_rubygems_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ requirements: []
96
+ rubyforge_project:
97
+ rubygems_version: 2.4.3
98
+ signing_key:
99
+ specification_version: 4
100
+ summary: WoW Arena Analytics
101
+ test_files:
102
+ - spec/analyzer_spec.rb
103
+ - spec/characterdata_spec.rb
104
+ - spec/glyphs_spec.rb
105
+ - spec/spec_helper.rb