Class: Reputation::Service
- Inherits:
-
Object
- Object
- Reputation::Service
- Defined in:
- lib/services/base.rb
Instance Attribute Summary collapse
-
#account ⇒ Object
readonly
Returns the value of attribute account.
Class Method Summary collapse
- .class_for(service) ⇒ Object
-
.inherited(sub) ⇒ Object
CLASS.
- .item(name, description, &block) ⇒ Object
- .items ⇒ Object
Instance Method Summary collapse
-
#initialize(account) ⇒ Service
constructor
A new instance of Service.
- #profile_page ⇒ Object
- #render_items ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize(account) ⇒ Service
Returns a new instance of Service.
8 9 10 |
# File 'lib/services/base.rb', line 8 def initialize(account) @account = account end |
Instance Attribute Details
#account ⇒ Object (readonly)
Returns the value of attribute account.
6 7 8 |
# File 'lib/services/base.rb', line 6 def account @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 |
.items ⇒ Object
55 56 57 |
# File 'lib/services/base.rb', line 55 def self.items @items end |
Instance Method Details
#profile_page ⇒ Object
12 13 14 15 16 17 18 19 20 |
# File 'lib/services/base.rb', line 12 def profile_page begin @profile_page ||= Hpricot(open(account_uri)) rescue OpenURI::HTTPError # assume no account puts "No account named '#{account}' found on #{self}" exit(1) end end |
#render_items ⇒ Object
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_s ⇒ Object
36 37 38 |
# File 'lib/services/base.rb', line 36 def to_s self.class.to_s.split('::').last.gsub(/^./){$&.upcase} end |