renchap-wowr 0.5.0 → 0.5.1

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.
Files changed (3) hide show
  1. data/VERSION.yml +2 -2
  2. data/lib/wowr/achievements.rb +143 -0
  3. metadata +27 -26
@@ -1,4 +1,4 @@
1
1
  ---
2
- :patch: 0
3
- :major: 0
4
2
  :minor: 5
3
+ :patch: 1
4
+ :major: 0
@@ -0,0 +1,143 @@
1
+ module Wowr
2
+ module Classes
3
+ class CharacterAchievementsInfo
4
+ attr_reader :latest_achievements, :categories
5
+
6
+ def initialize elem, api
7
+ @api = api
8
+ @latest_achievements = Array.new
9
+ @categories = Array.new
10
+
11
+ achievements = elem%'achievements'
12
+ summary = achievements%'summary'
13
+
14
+ # Get list of latest achievements
15
+ summary.search('achievement').each do |achievement|
16
+ @latest_achievements << CompletedAchievement.new(achievement)
17
+ end
18
+
19
+ # Get the infos about categories completion
20
+ # They are ordered in same order as categories below
21
+ categories_completion = summary.search('category/c')
22
+
23
+ # Get the list of rootCategories
24
+ i = 0
25
+ achievements.search('rootCategories/category').each do |category|
26
+ elem = Hash.new
27
+ type = AchievementsCategoryDetails
28
+ elem['id'] = category['id']
29
+ elem['name'] = category['name']
30
+ completion = categories_completion[i]
31
+ elem['earned'] = completion['earned']
32
+
33
+ # If we have more informations
34
+ if completion['total']
35
+ type = AchievementsCategoryDetailsWithPoints
36
+ elem['total'] = completion['total']
37
+ elem['totalPoints'] = completion['totalPoints']
38
+ elem['earnedPoints'] = completion['earnedPoints']
39
+ end
40
+ new_cat = type.new(elem)
41
+
42
+ # Add subcategories
43
+ category.search('category').each do |subcategory|
44
+ subcat = AchievementsCategory.new subcategory
45
+ new_cat.add_subcategory subcat
46
+ end
47
+
48
+ @categories << new_cat
49
+ i = i+1
50
+ end
51
+ end
52
+ end
53
+
54
+ class Achievement
55
+ attr_reader :desc, :title, :category_id, :icon, :id, :points, :reward
56
+ def initialize achievement
57
+ @desc = achievement['desc']
58
+ @category_id = achievement['categoryId'].to_i
59
+ @icon = achievement['icon']
60
+ @id = achievement['id'].to_i
61
+
62
+ if achievement['points']
63
+ @points = achievement['points'].to_i
64
+ else
65
+ @points = nil
66
+ end
67
+
68
+ if achievement['reward']
69
+ @reward = achievement['reward']
70
+ else
71
+ @reward = nil
72
+ end
73
+
74
+ @title = achievement['title']
75
+ end
76
+ end
77
+
78
+ class CompletedAchievement < Achievement
79
+ attr_reader :date_completed
80
+ def initialize achievement
81
+ super(achievement)
82
+ @date_completed = achievement['dateCompleted']
83
+ begin
84
+ @date_completed = achievement[:dateCompleted] == "" ? nil : DateTime.parse(achievement[:dateCompleted])
85
+ rescue
86
+ @date_completed = achievement[:dateCompleted] == "" ? nil : achievement[:dateCompleted]
87
+ end
88
+ end
89
+ end
90
+
91
+ class AchievementsCategory
92
+ attr_reader :name
93
+ attr_reader :subcategories
94
+ attr_reader :id
95
+ attr_writer :parent
96
+ def initialize category
97
+ @name = category['name']
98
+ @id = category['id'].to_i if category['id']
99
+ @subcategories = Array.new
100
+ end
101
+
102
+ def add_subcategory category
103
+ @subcategories << category
104
+ category.parent = self
105
+ end
106
+ end
107
+
108
+ class AchievementsCategoryDetails < AchievementsCategory
109
+ attr_reader :earned
110
+ def initialize category
111
+ super(category)
112
+ @earned = category['earned'].to_i
113
+ end
114
+ end
115
+
116
+ class AchievementsCategoryDetailsWithPoints < AchievementsCategoryDetails
117
+ attr_reader :earned_points, :total, :total_points
118
+ def initialize category
119
+ super(category)
120
+ @earned_points = category['earnedPoints'].to_i
121
+ @total = category['total'].to_i
122
+ @total_points = category['totalPoints'].to_i
123
+ end
124
+ end
125
+
126
+ class AchievementsList
127
+ attr_reader :achievements
128
+ def initialize elem, api
129
+ @api = api
130
+ @achievements = Array.new
131
+ elem.search('achievement').each do |achievement|
132
+ if achievement['dateCompleted']
133
+ new_achievement = CompletedAchievement.new(achievement)
134
+ else
135
+ new_achievement = Achievement.new(achievement)
136
+ end
137
+ @achievements << new_achievement
138
+
139
+ end
140
+ end
141
+ end
142
+ end
143
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: renchap-wowr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Humphreys
@@ -11,7 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2009-03-21 00:00:00 -07:00
14
+ date: 2009-04-04 00:00:00 -07:00
15
15
  default_executable:
16
16
  dependencies: []
17
17
 
@@ -26,43 +26,44 @@ extra_rdoc_files:
26
26
  files:
27
27
  - VERSION.yml
28
28
  - lib/wowr
29
- - lib/wowr/arena_team.rb
30
29
  - lib/wowr/calendar.rb
31
- - lib/wowr/character.rb
32
- - lib/wowr/dungeon.rb
33
30
  - lib/wowr/exceptions.rb
34
- - lib/wowr/extensions.rb
35
- - lib/wowr/general.rb
31
+ - lib/wowr/dungeon.rb
32
+ - lib/wowr/arena_team.rb
33
+ - lib/wowr/character.rb
34
+ - lib/wowr/achievements.rb
36
35
  - lib/wowr/guild.rb
37
36
  - lib/wowr/guild_bank.rb
37
+ - lib/wowr/general.rb
38
+ - lib/wowr/extensions.rb
38
39
  - lib/wowr/item.rb
39
40
  - lib/wowr.rb
40
- - test/wowr_arena_team_test.rb
41
- - test/wowr_character_test.rb
42
- - test/wowr_dungeon_test.rb
43
- - test/wowr_guild_test.rb
44
- - test/wowr_item_test.rb
45
- - test/wowr_test.rb
46
41
  - test/xml
47
- - test/xml/arena_team_search.xml
48
- - test/xml/arena_team_single.xml
49
- - test/xml/armory-search.xml
42
+ - test/xml/dungeonStrings.xml
50
43
  - test/xml/armory_search.xml
51
- - test/xml/benedictt.xml
52
- - test/xml/character-reputation.xml
53
- - test/xml/character-sheet.xml
54
- - test/xml/character-skills.xml
55
44
  - test/xml/character-talents.xml
45
+ - test/xml/itemSearch.xml
56
46
  - test/xml/character_info.xml
57
- - test/xml/character_search.xml
58
- - test/xml/dungeons.xml
59
- - test/xml/dungeonStrings.xml
47
+ - test/xml/arena_team_single.xml
48
+ - test/xml/character-reputation.xml
60
49
  - test/xml/example.xml
61
- - test/xml/guild-info.xml
62
- - test/xml/item-info.xml
63
50
  - test/xml/item-tooltip.xml
64
51
  - test/xml/item_search.xml
65
- - test/xml/itemSearch.xml
52
+ - test/xml/character-sheet.xml
53
+ - test/xml/benedictt.xml
54
+ - test/xml/armory-search.xml
55
+ - test/xml/item-info.xml
56
+ - test/xml/arena_team_search.xml
57
+ - test/xml/character-skills.xml
58
+ - test/xml/character_search.xml
59
+ - test/xml/guild-info.xml
60
+ - test/xml/dungeons.xml
61
+ - test/wowr_item_test.rb
62
+ - test/wowr_dungeon_test.rb
63
+ - test/wowr_character_test.rb
64
+ - test/wowr_arena_team_test.rb
65
+ - test/wowr_guild_test.rb
66
+ - test/wowr_test.rb
66
67
  - README
67
68
  has_rdoc: true
68
69
  homepage: http://wowr.rubyforge.org/