Class: Partyhat::Util
- Inherits:
-
Object
- Object
- Partyhat::Util
- Defined in:
- lib/partyhat/util.rb
Class Method Summary collapse
-
.experience_to_level(experience) ⇒ Object
Convert an experience value to a level Uses a formula from somewhere.
-
.fetch_remote(urls) ⇒ Object
Fetch a remote page and return it If you pass in only one URL, direct source will be returneds If you pass in multiple URLs, a hash will be returned with url indexes.
-
.level_to_experience(level) ⇒ Object
Convert a level value into experience Uses a formula from somewhere.
-
.parse_number(string) ⇒ Object
De-abbreviate the already compressed number with the abbreviate_number method.
-
.shorten_number(number) ⇒ Object
Abbreviate a small or large number into compressed form Usage: Partyhat::Util.abbreviate_number(55_500) => “55K” as seen all over the game.
Class Method Details
.experience_to_level(experience) ⇒ Object
Convert an experience value to a level Uses a formula from somewhere. TODO: Add source for formula.
6 7 8 9 10 11 12 13 14 |
# File 'lib/partyhat/util.rb', line 6 def self.experience_to_level experience modifier = 0 (1..200).each do |n| modifier += (n + 300 * (2 ** (n.to_f/7.0))).floor level = (modifier/4).floor return n if experience < level end 200 end |
.fetch_remote(urls) ⇒ Object
Fetch a remote page and return it If you pass in only one URL, direct source will be returneds If you pass in multiple URLs, a hash will be returned with url indexes
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/partyhat/util.rb', line 68 def self.fetch_remote urls urls = [urls] unless urls.is_a?(Array) responses = {} m = Curl::Multi.new urls.reject.each do |url| responses[url] = "" c = Curl::Easy.new(url) do|curl| curl.follow_location = true curl.on_body do |data| responses[url] << data data.size end end m.add(c) end m.perform if responses.size > 1 responses else responses[urls.pop] end end |
.level_to_experience(level) ⇒ Object
Convert a level value into experience Uses a formula from somewhere. FIXME: This is not accurate, check partyhat_util_spec results TODO: Add source for formula.
20 21 22 23 24 25 26 |
# File 'lib/partyhat/util.rb', line 20 def self.level_to_experience level experience = 0 (1..level-1).each do |n| experience += (n + 300 * (2 ** (n.to_f/7.0))).floor end (experience/4).floor end |
.parse_number(string) ⇒ Object
De-abbreviate the already compressed number with the abbreviate_number method. Note: Values might not stay the same if abbreviated and then deabbreviated
53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/partyhat/util.rb', line 53 def self.parse_number string number = string.chop.to_f ending = string[-1, 1] multiplier = 1 case ending.upcase when 'B' then multiplier = 1_000_000_000 when 'M' then multiplier = 1_000_000 when 'K' then multiplier = 1_000 end (number * (multiplier || 1)).round(1) end |
.shorten_number(number) ⇒ Object
Abbreviate a small or large number into compressed form Usage: Partyhat::Util.abbreviate_number(55_500) => “55K” as seen all over the game. e.g. “5K”
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/partyhat/util.rb', line 32 def self.shorten_number number divider = 1 suffix = nil if number >= 1_000_000_000 divider = 1_000_000_000 suffix = 'B' elsif number >= 1_000_000 divider = 1_000_000 suffix = 'M' elsif number >= 1_000 divider = 1_000 suffix = 'K' end (number / divider.to_f).round(1).to_s + suffix end |