Class: Reputation::Service

Inherits:
Object
  • Object
show all
Defined in:
lib/services/base.rb

Direct Known Subclasses

Github, Twitter, Youtube

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(account) ⇒ Service

Returns a new instance of Service.



8
9
10
# File 'lib/services/base.rb', line 8

def initialize()
  @account = 
end

Instance Attribute Details

#accountObject (readonly)

Returns the value of attribute account.



6
7
8
# File 'lib/services/base.rb', line 6

def 
  @account
end

Class Method Details

.class_for(service) ⇒ Object



59
60
61
62
63
# File 'lib/services/base.rb', line 59

def self.class_for(service)
  service_name = service.camelize

  Reputation.const_get(service_name)
end

.inherited(sub) ⇒ Object

CLASS



42
43
44
# File 'lib/services/base.rb', line 42

def self.inherited(sub)
  sub.class_eval{ @items = []}
end

.item(name, description, &block) ⇒ Object



46
47
48
49
50
51
52
53
# File 'lib/services/base.rb', line 46

def self.item(name, description, &block)
  self.send(:define_method, name) do
    result = instance_eval(&block)
    # assume Hpricot::Elem
    result.inner_text.strip rescue result
  end
  self.items << [name, description]
end

.itemsObject



55
56
57
# File 'lib/services/base.rb', line 55

def self.items
  @items
end

Instance Method Details

#profile_pageObject



12
13
14
15
16
17
18
19
20
# File 'lib/services/base.rb', line 12

def profile_page
  begin
    @profile_page ||= Hpricot(open())
  rescue OpenURI::HTTPError
    # assume no account
    puts "No account named '#{}' found on #{self}"
    exit(1)
  end
end

#render_itemsObject



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/services/base.rb', line 22

def render_items
  result = []
  
  max_description_len = self.class.items.collect{|_, description| description.size}.max
  
  self.class.items.each do |name, description|
    gap = max_description_len - description.size
    
    result      << "#{description}: #{' ' * gap}"
    result.last << self.send(name)
  end
  result.join("\n")
end

#to_sObject



36
37
38
# File 'lib/services/base.rb', line 36

def to_s
  self.class.to_s.split('::').last.gsub(/^./){$&.upcase}
end