elvarg 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f996173667b01d63eb1fc686c3ab1567e39756d552de283926a1501dccd6008d
4
- data.tar.gz: ed61f3c8fad382a412ba1bf9d9f65d63b90ef8dfc84ea077725de369964d464b
3
+ metadata.gz: 67e2cce699cff36e9c3449c7c89db0da859d702a3d464e75f78b491636aa1014
4
+ data.tar.gz: b5da4d18227f1233ba51e7605aa5d51dc245e2a7209528aeaa6aaa675efc4911
5
5
  SHA512:
6
- metadata.gz: 215449333501c3ef8c79b114c08c2439a197ea17f61a835b776f872ea27719c1080a39503c358b9d989ae605a0682e9dea960ca2d9a1acad08d487e22fa55e7c
7
- data.tar.gz: 2b2788d9b646573f48c27c40c07af33016c75fa81bfbb03fd01603811398130e7d2f9a2b6d1f884ecedb800d5d516cfdc7d55409512b32875007d122c996d3e1
6
+ metadata.gz: 59a1de2cd781d6b452c4db7d0497fcd2abc30d6cfa23dd8e1eb0bc3013a15e5cba415d0693c9050652945f910fca00ddb593a8102ba25b8a4e2ea28b48990fda
7
+ data.tar.gz: 264f3d2466a0780ddff14fcc53f01449d03ce8a1eba2f7fa4d8b94b992ef957f1c982cab3f79ff1565ec19dcdc89f9e7356e1c60064c7edebb5b0493eadc9fb8
@@ -1,12 +1,13 @@
1
- require_relative "stats/stats"
2
- require_relative "skills/skill"
3
- require_relative "hiscores/player"
4
- require_relative "hiscores/hiscores"
1
+ require_relative 'hiscores/hiscores'
2
+ require_relative 'hiscores/player'
3
+ require_relative 'hiscores/skill'
4
+ require_relative 'stats/skill'
5
+ require_relative 'stats/stats'
5
6
 
6
7
  ##
7
- # A Ruby Gem that provides useful methods for OldSchool
8
- # RuneScape related applications.
8
+ # A Ruby Gem that provides useful methods
9
+ # for OldSchool Runescape related applications.
9
10
  #
10
- # Author: Marcello A. Sabino
11
+ # @author Marcello Sabino <marchsabino@gmail.com>
11
12
  module Elvarg
12
13
  end
@@ -1,36 +1,36 @@
1
1
  require 'open-uri'
2
2
 
3
- module Elvarg # :nodoc:
4
- module Hiscores
3
+ module Elvarg #:nodoc:
4
+ module Hiscores #:nodoc:
5
+ ##
6
+ # Represents different modes base URL's on the OldSchool RuneScape Hiscores.
5
7
  MODES = {
6
- default: "https://secure.runescape.com/m=hiscore_oldschool/",
7
- ironman: "http://services.runescape.com/m=hiscore_oldschool_ironman/",
8
- ultimate: "http://services.runescape.com/m=hiscore_oldschool_ultimate/",
9
- hardcore: "http://services.runescape.com/m=hiscore_oldschool_hardcore_ironman/",
10
- deadman: "http://services.runescape.com/m=hiscore_oldschool_deadman/",
11
- seasonal: "http://services.runescape.com/m=hiscore_oldschool_seasonal/",
12
- tournament: "http://services.runescape.com/m=hiscore_oldschool_tournament/",
13
- }
14
- ENDPOINT = {
15
- stats: "index_lite.ws?player=",
16
- scores: 'overall.ws?',
17
- }
8
+ default: 'https://secure.runescape.com/m=hiscore_oldschool/',
9
+ ironman: 'http://services.runescape.com/m=hiscore_oldschool_ironman/',
10
+ ultimate: 'http://services.runescape.com/m=hiscore_oldschool_ultimate/',
11
+ hardcore: 'http://services.runescape.com/m=hiscore_oldschool_hardcore_ironman/',
12
+ deadman: 'http://services.runescape.com/m=hiscore_oldschool_deadman/',
13
+ seasonal: 'http://services.runescape.com/m=hiscore_oldschool_seasonal/',
14
+ tournament: 'http://services.runescape.com/m=hiscore_oldschool_tournament/'
15
+ }.freeze
18
16
 
19
17
  ##
20
- # Searches for a specific user on a specified mode on the OldSchool
21
- # RuneScape HiScores website.
22
- #
23
- # ==== Parameters
24
- #
25
- # * [String] +username+ - The user's username
26
- # * [Symbol] +mode+ - the mode to look in, see Hiscores::MODES for available modes. Default is `:default`.
27
- #
28
- # ==== Examples
18
+ # Represents different endpoints on the Hiscores.
19
+ ENDPOINTS = {
20
+ stats: 'index_lite.ws?player=',
21
+ scores: 'overall.ws?'
22
+ }.freeze
23
+
24
+ ##
25
+ # Searches for a particular player on the Hiscores and grabs data
26
+ # about the player.
29
27
  #
30
- # player = Elvarg::Hiscores.search_for 'ruby'
31
- # player = Elvarg::Hiscores.search_for('github', :ironman)
28
+ # @param username [String] the player's username
29
+ # @param mode [Symbol] the mode to grab data in.
30
+ # This can be any of the Elvarg::Hiscores::MODES.
31
+ # @return [String] data about the Player on the Hiscores
32
32
  def self.search_for(username, mode = :default)
33
- open(MODES[mode] + ENDPOINT[:stats] + username, &:read)
33
+ open(MODES[mode] + ENDPOINTS[:stats] + username, &:read)
34
34
  end
35
35
  end
36
36
  end
@@ -1,119 +1,67 @@
1
- require_relative './hiscores'
2
1
  require_relative '../stats/stats'
3
- require_relative '../skills/skill'
2
+ require_relative './hiscores'
3
+ require_relative './skill'
4
4
 
5
- module Elvarg
6
- module Hiscores
5
+ module Elvarg #:nodoc:
6
+ module Hiscores #:nodoc:
7
7
  ##
8
- # Represents a single player on OldSchool Runescape
9
- class Player include Hiscores, Stats
8
+ # Represents a Player on the Hiscores
9
+ class Player
10
+ include Elvarg::Stats
10
11
  attr_reader :username
11
12
  attr_reader :mode
12
13
  attr_reader :skills
13
14
 
14
15
  ##
15
- # Creates a new Player object
16
- #
17
- # ==== Parameters
18
- #
19
- # * [String] +username+ - The user's username
20
- # * [Symbol] +mode+ - The mode to search in. see +Hiscores::MODES+, defaults to +:default+
16
+ # Creates a Player object
21
17
  #
22
- # ==== Examples
18
+ # @example a Player on the default Hiscores
19
+ # player = Elvarg::Hiscores::Player.new('ruby')
20
+ # player.username #=> "ruby"
21
+ # player.mode #=> :default
22
+ # @example a Player on the ironman Hiscores
23
+ # ironman = Elvarg::Hiscores::Player.new('dids', :ironman)
24
+ # ironman.username #=> "dids"
25
+ # ironman.mode #=> :ironman
23
26
  #
24
- # # Search through the default overall hiscores
25
- # player = Elvarg::Hiscores::Player.new 'ruby'
26
- # # Search through the ultimate ironman hiscores
27
- # player = Elvarg::Hiscores::Player.new('ruby', :ultimate)
27
+ # @param username [String] the Player's username
28
+ # @param mode [Symbol] The mode to search in (default) `:default`
28
29
  def initialize(username, mode = :default)
29
30
  @username = username
30
31
  @mode = mode
31
32
  @skills = {}
32
33
 
33
- extract(Hiscores.search_for(username, mode))
34
- end
35
-
36
- ##
37
- # Determines if this player is a member
38
- #
39
- # ==== Details
40
- #
41
- # This detects membership if the user has greater than 0 experience in
42
- # any member's only skill.
43
- #
44
- # ==== Returns
45
- #
46
- # [true] if the player has experience in a member's only skill, false otherwise
47
- #
48
- # ==== Examples
49
- #
50
- # player = Elvarg::Hiscores::Player.new 'ruby'
51
- # player.is_member?
52
- # #=> true
53
- def is_member?
54
- @skills.each { |key, skill| return true if skill.xp > 0 && skill.is_member? }
55
- false
56
- end
57
-
58
- ##
59
- # The inverse of +is_member?+
60
- def is_free?
61
- !is_member?
62
- end
63
-
64
- ##
65
- # Determines if this player is a skiller
66
- # A user is a skiller when they do not have any combat skill
67
- # (other than 10 hitpoints) greater than 1.
68
- #
69
- # ==== Returns
70
- #
71
- # [true] if the player has 1 in all combat skills (and 10 hitpoints) false otherwise
72
- #
73
- # ==== Examples
74
- #
75
- # player = Elvarg::Hiscores::Player.new 'ruby'
76
- # player.is_skiller?
77
- # #=> false
78
- def is_skiller?
79
- @skills.each { |key, skill|
80
- next if key == :hitpoints && skill.level <= 10
81
- return false if skill.level > 1 && skill.is_combat?
82
- }
83
- true
34
+ parse_data(Hiscores.search_for(username, mode))
84
35
  end
85
36
 
86
37
  private
87
38
 
88
39
  ##
89
- # Extracts the data from the OldSchool RuneScape HiScores API and
90
- # creates an array so that we can work with the data.
40
+ # Parses the data that's grabbed from RuneScape.
91
41
  #
92
- # Parameters:
93
- # [String] data - The HiScores data from
94
- # the OldSchool Runescape HiScores API
95
- def extract(data)
96
- hiscores_data = []
42
+ # @param data [String] the data grabbed from RuneScape.
43
+ def parse_data(data)
44
+ hiscore_data = []
97
45
  data.split("\n").each { |skill|
98
- hiscores_data.push(skill.split(',').map(&:to_i))
46
+ hiscore_data.push(skill.split(',').map(&:to_i))
99
47
  }
100
48
 
101
- extract_skills hiscores_data
49
+ extract_skills(hiscore_data)
102
50
  end
103
51
 
104
52
  ##
105
- # Extracts only the skills' data from the hiscores array
106
- def extract_skills(hiscores_data)
107
- i = 0
108
- SKILLS.each { |skill|
109
- @skills[skill] = Elvarg::Skill.new(
110
- skill,
111
- hiscores_data[i][0],
112
- hiscores_data[i][1],
113
- hiscores_data[i][2],
114
- i)
115
- i += 1
116
- }
53
+ # Extracts only the skill data from the hiscore data.
54
+ #
55
+ # @param hiscore_data [Array] Skill data from the Hiscores in an array
56
+ def extract_skills(hiscore_data)
57
+ SKILLS.each_with_index do |skill, i|
58
+ @skills[skill] = Skill.new(
59
+ skill, i,
60
+ hiscore_data[i][0],
61
+ hiscore_data[i][1],
62
+ hiscore_data[i][2]
63
+ )
64
+ end
117
65
  end
118
66
  end
119
67
  end
@@ -0,0 +1,25 @@
1
+ require_relative '../stats/skill'
2
+
3
+ module Elvarg #:nodoc:
4
+ module Hiscores #:nodoc:
5
+ ##
6
+ # Represents a Skill on the Hiscores
7
+ class Skill < Stats::Skill
8
+ # TODO
9
+ attr_reader :rank
10
+ # TODO
11
+ attr_reader :level
12
+ # TODO
13
+ attr_reader :exp
14
+
15
+ ##
16
+ # TODO
17
+ def initialize(symbol, id = 0, rank = -1, level = 1, exp = 0)
18
+ super(symbol, id)
19
+ @rank = rank
20
+ @level = level
21
+ @exp = exp
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,90 @@
1
+ require_relative './stats'
2
+
3
+ module Elvarg #:nodoc:
4
+ module Stats
5
+ ##
6
+ # Represents a Skill in OldSchool RuneScape
7
+ class Skill
8
+ # The link to the `.gif` of the related Skill
9
+ attr_reader :icon
10
+ # The unique id of this Skill
11
+ attr_reader :id
12
+ # The human readable name of this Skill
13
+ attr_reader :name
14
+ ##
15
+ # The symbol of this Skill
16
+ # @see Elvarg::Stats::SKILLS for list of symbols
17
+ attr_reader :symbol
18
+
19
+ ##
20
+ # Creates a new Skill object.
21
+ #
22
+ # @example Create a Hunter Skill object
23
+ # hunter = Elvarg::Stats::Skill.new(:hunter, 22)
24
+ # hunter.level #=> 1
25
+ # @example Create a Hitpoints Skill object
26
+ # hitpoints = Elvarg::Stats::Skill.new(:hitpoints, 4)
27
+ # hitpoints.level #=> 10
28
+ # @example Create a Runecraft Skill, with no id will default to 0
29
+ # runecraft = Elvarg::Stats::Skill.new(:runecraft)
30
+ # runecraft.level #=> 1
31
+ # runecraft.id #=> 0
32
+ #
33
+ # @param symbol [Symbol] the symbol of this skill.
34
+ # @param id [Integer] the unique identifier of this skill, 1 is attack.
35
+ # (0).
36
+ def initialize(symbol, id = 0)
37
+ @id = id
38
+ @symbol = symbol
39
+ @name = symbol.to_s.capitalize
40
+ @icon = 'https://www.runescape.com/img/rsp777/' \
41
+ "hiscores/skill_icon_#{@name.downcase}1.gif"
42
+ end
43
+
44
+ ##
45
+ # Determines if this Skill is a member's only skill.
46
+ #
47
+ # @example Slayer is a member's only skill.
48
+ # Elvarg::Stats::Skill.new(:hunter).members? #=> true
49
+ # @example Runecraft is a free-to-play skill.
50
+ # Elvarg::Stats::Skill.new(:runecraft).members? #=> false
51
+ # @return [true] if this Skill is a member's only skill.
52
+ # @return [false] if this Skill is free-to-play.
53
+ def members?
54
+ MEMBER_SKILLS.include? @symbol
55
+ end
56
+
57
+ ##
58
+ # Determines if this Skill is a free-to-play skill.
59
+ #
60
+ # @note This is the inverse of `members?`
61
+ # @see members?
62
+ def free?
63
+ !members?
64
+ end
65
+
66
+ ##
67
+ # Determines if this Skill will affect a player's combat
68
+ #
69
+ # @example Attack will affect one's combat level
70
+ # Elvarg::Stats::Skill.new(:attack).combat? #=> true
71
+ # @example Woodcutting will not affect one's combat level
72
+ # Elvarg::Stats::Skill.new(:woodcutting).combat? #=> false
73
+ #
74
+ # @return [true] if this Skill affects a player's combat
75
+ # @return [false] if this Skill does not affect a player's combat
76
+ def combat?
77
+ COMBAT_SKILLS.include? @symbol
78
+ end
79
+
80
+ ##
81
+ # Determines if this Skill does not affect a player's combat
82
+ #
83
+ # @note This is the inverse of `combat?`
84
+ # @see combat?
85
+ def skiller_friendly?
86
+ !combat?
87
+ end
88
+ end
89
+ end
90
+ end
@@ -1,27 +1,31 @@
1
1
  module Elvarg
2
- module Stats
3
- SKILLS = %i(
4
- overall attack defence strength
5
- hitpoints ranged prayer magic
6
- cooking woodcutting fletching fishing
7
- firemaking crafting smithing mining
8
- herblore agility thieving slayer
2
+ module Stats #:nodoc:
3
+ ##
4
+ # An array of symbols that represent all
5
+ # available skills on OldSchool RuneScape.
6
+ SKILLS = %i[
7
+ overall attack defence strength
8
+ hitpoints ranged prayer magic
9
+ cooking woodcutting fletching fishing
10
+ firemaking crafting smithing mining
11
+ herblore agility thieving slayer
9
12
  farming runecraft hunter construction
10
- )
11
- MEMBER_SKILLS = %i(
13
+ ].freeze
14
+
15
+ ##
16
+ # An array of symbols that represent all skills
17
+ # that are member's only.
18
+ MEMBER_SKILLS = %i[
12
19
  fletching herblore agility thieving
13
20
  slayer farming hunter construction
14
- )
15
- COMBAT_SKILLS = %i(
21
+ ].freeze
22
+
23
+ ##
24
+ # An array of symbols that represent all skills
25
+ # that affect a player's combat level.
26
+ COMBAT_SKILLS = %i[
16
27
  attack defence strength hitpoints
17
28
  ranged prayer magic
18
- )
19
- MINIGAMES = %i(
20
- bounty_hunter bounty_rogue
21
- )
22
- CLUES = %i(
23
- all easy medium hard
24
- elite master
25
- )
29
+ ].freeze
26
30
  end
27
31
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elvarg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcello A. Sabino
@@ -20,7 +20,8 @@ files:
20
20
  - lib/elvarg.rb
21
21
  - lib/hiscores/hiscores.rb
22
22
  - lib/hiscores/player.rb
23
- - lib/skills/skill.rb
23
+ - lib/hiscores/skill.rb
24
+ - lib/stats/skill.rb
24
25
  - lib/stats/stats.rb
25
26
  homepage: https://github.com/marchsabino/Elvarg
26
27
  licenses:
@@ -1,66 +0,0 @@
1
- require_relative '../stats/stats'
2
-
3
- module Elvarg
4
- class Skill include Stats
5
- attr_reader :id
6
- attr_reader :symbol
7
- attr_reader :name
8
- attr_reader :rank
9
- attr_reader :level
10
- attr_reader :xp
11
- attr_reader :icon
12
-
13
- ##
14
- # Creates a new Skill object
15
- #
16
- # Paramters:
17
- # [Symbol] symbol - The symbol of the skill, like :attack, :magic, :ranged
18
- # [Integer] rank - The user's rank. Default is -1
19
- # [Integer] level - The user's level in this skill. Default is 1
20
- # [Integer] xp - The user's experience in this skill. Default is 0
21
- # [Integer] id - The id of this skill, default is -1
22
- def initialize(symbol, rank = -1, level = 1, xp = 0, id = -1)
23
- @id = id
24
- @symbol = symbol
25
- @name = symbol.to_s.capitalize
26
- @rank = rank
27
- @level = level
28
- @level = 10 if level == 1 && symbol == :hitpoints
29
- @xp = xp
30
- @xp = 1154 if xp == 0 && symbol == :hitpoints
31
- @icon = "https://www.runescape.com/img/rsp777/hiscores/skill_icon_#{@name.downcase}1.gif"
32
- end
33
-
34
- ##
35
- # Determines if this Skill is a member's only skill
36
- #
37
- # Returns:
38
- # true - if this skill is member's only, false otherwise
39
- def is_member?
40
- Stats::MEMBER_SKILLS.include? @symbol
41
- end
42
-
43
- ##
44
- # Determines if this Skill is a free to play skill
45
- # The inverse of `is_member?`
46
- def is_free?
47
- !is_member?
48
- end
49
-
50
- ##
51
- # Determines if this Skill will affect a user's combat level
52
- #
53
- # Returns:
54
- # true - if this skill will affect combat level, false otherwise
55
- def is_combat?
56
- Stats::COMBAT_SKILLS.include? @symbol
57
- end
58
-
59
- ##
60
- # Determines if this Skill is skiller friendly
61
- # The inverse of `is_combat?`
62
- def is_skiller_friendly?
63
- !combat?
64
- end
65
- end
66
- end