Class: Kickstarter::Project

Inherits:
Object
  • Object
show all
Defined in:
lib/kickstarter/project.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#nodeObject (readonly)

Returns the value of attribute node.



5
6
7
# File 'lib/kickstarter/project.rb', line 5

def node
  @node
end

Instance Method Details

#descriptionObject



19
20
21
# File 'lib/kickstarter/project.rb', line 19

def description
  @description ||= node.css('h2 + p').inner_html
end

#emailObject



32
33
# File 'lib/kickstarter/project.rb', line 32

def email
end

#handleObject



11
12
13
# File 'lib/kickstarter/project.rb', line 11

def handle
  @handle ||= url.split('/projects/').last
end

#inspectObject



81
82
83
# File 'lib/kickstarter/project.rb', line 81

def inspect
  to_hash.inspect
end

#nameObject



15
16
17
# File 'lib/kickstarter/project.rb', line 15

def name
  @name ||= link.inner_html
end

#ownerObject



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_amountObject



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_deadlineObject

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_percentObject



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_urlObject



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_hashObject



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

#urlObject



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