Class: Partyhat::Util

Inherits:
Object
  • Object
show all
Defined in:
lib/partyhat/util.rb

Class Method Summary collapse

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