Class: Kickstarter::Project
- Inherits:
-
Object
- Object
- Kickstarter::Project
- Defined in:
- lib/kickstarter/project.rb
Instance Attribute Summary collapse
-
#node ⇒ Object
readonly
Returns the value of attribute node.
Instance Method Summary collapse
- #description ⇒ Object
- #email ⇒ Object
- #handle ⇒ Object
-
#initialize(node) ⇒ Project
constructor
A new instance of Project.
- #inspect ⇒ Object
- #name ⇒ Object
- #owner ⇒ Object
- #pledge_amount ⇒ Object
-
#pledge_deadline ⇒ Object
or <strong>FUNDED</strong> Aug 12, 2011.
- #pledge_percent ⇒ Object
- #thumbnail_url ⇒ Object
- #to_hash ⇒ Object
- #url ⇒ Object
Constructor Details
#initialize(node) ⇒ Project
Returns a new instance of Project.
7 8 9 |
# File 'lib/kickstarter/project.rb', line 7 def initialize(node) @node = node end |
Instance Attribute Details
#node ⇒ Object (readonly)
Returns the value of attribute node.
5 6 7 |
# File 'lib/kickstarter/project.rb', line 5 def node @node end |
Instance Method Details
#description ⇒ Object
19 20 21 |
# File 'lib/kickstarter/project.rb', line 19 def description @description ||= node.css('h2 + p').inner_html end |
#email ⇒ Object
32 33 |
# File 'lib/kickstarter/project.rb', line 32 def email end |
#handle ⇒ Object
11 12 13 |
# File 'lib/kickstarter/project.rb', line 11 def handle @handle ||= url.split('/projects/').last end |
#inspect ⇒ Object
81 82 83 |
# File 'lib/kickstarter/project.rb', line 81 def inspect to_hash.inspect end |
#name ⇒ Object
15 16 17 |
# File 'lib/kickstarter/project.rb', line 15 def name @name ||= link.inner_html end |
#owner ⇒ Object
28 29 30 |
# File 'lib/kickstarter/project.rb', line 28 def owner @owner ||= node.css('h2 span').first.inner_html.gsub(/by/, "").strip end |
#pledge_amount ⇒ Object
39 40 41 |
# File 'lib/kickstarter/project.rb', line 39 def pledge_amount @pledge_amount ||= node.css('.project-stats li')[1].css('strong').inner_html.gsub(/[^\d]/,'').to_i end |
#pledge_deadline ⇒ Object
or <strong>FUNDED</strong> Aug 12, 2011
51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/kickstarter/project.rb', line 51 def pledge_deadline @pledge_deadline ||= begin date = node.css('.project-stats li').last.inner_html.to_s puts "parsing date #{date}" if date =~ /Funded/ Date.parse date.split('<strong>Funded</strong>').last.strip elsif date =~ /hours left/ future = Time.now + date.match(/\d+/)[0].to_i * 60*60 Date.parse(future.to_s) elsif date =~ /days left/ Date.parse(Time.now.to_s) + date.match(/\d+/)[0].to_i end end end |
#pledge_percent ⇒ Object
43 44 45 |
# File 'lib/kickstarter/project.rb', line 43 def pledge_percent @pledge_percent ||= node.css('.project-stats li strong').inner_html.gsub(/\,/,"").to_i end |
#thumbnail_url ⇒ Object
35 36 37 |
# File 'lib/kickstarter/project.rb', line 35 def thumbnail_url @thumbnail_url ||= node.css('.project-thumbnail img').first.attribute('src').to_s end |
#to_hash ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/kickstarter/project.rb', line 67 def to_hash { :name => name, :handle => handle, :url => url, :description => description, :owner => owner, :pledge_amount => pledge_amount, :pledge_percent => pledge_percent, :pledge_deadline => pledge_deadline, :thumbnail_url => thumbnail_url } end |
#url ⇒ Object
23 24 25 |
# File 'lib/kickstarter/project.rb', line 23 def url @url ||= File.join(Kickstarter::BASE_URL, link.attribute('href').to_s.split('?').first) end |