Module: Horsefield::Scraper::ClassMethods

Defined in:
lib/horsefield/scraper.rb

Instance Method Summary collapse

Instance Method Details

#helper(name, &block) ⇒ Object



52
53
54
55
56
57
58
# File 'lib/horsefield/scraper.rb', line 52

def helper(name, &block)
  [Nokogiri::HTML::Document, Nokogiri::XML::Element].each do |klass|
    klass.instance_eval do
      define_method(name) { |*args| block.call(*args) }
    end
  end
end

#lookupsObject



44
45
46
# File 'lib/horsefield/scraper.rb', line 44

def lookups
  @lookups ||= []
end

#many(name, selector, lookup = :optional, &block) ⇒ Object



64
65
66
# File 'lib/horsefield/scraper.rb', line 64

def many(name, selector, lookup = :optional, &block)
  self.lookups << lambda { |doc| doc.many(name, selector, lookup, &block) }
end

#many!(name, selector, &block) ⇒ Object



68
69
70
# File 'lib/horsefield/scraper.rb', line 68

def many!(name, selector, &block)
  many(name, selector, :required, &block)
end

#many?(name, selector, &block) ⇒ Boolean

Returns:

  • (Boolean)


72
73
74
# File 'lib/horsefield/scraper.rb', line 72

def many?(name, selector, &block)
  many(name, selector, :presence, &block)
end

#one(name, selector = nil, lookup = :optional, &block) ⇒ Object



60
61
62
# File 'lib/horsefield/scraper.rb', line 60

def one(name, selector = nil, lookup = :optional, &block)
  self.lookups << lambda { |doc| doc.one(name, selector, lookup, &block) }
end

#one!(name, selector = nil, &block) ⇒ Object



76
77
78
# File 'lib/horsefield/scraper.rb', line 76

def one!(name, selector = nil, &block)
  one(name, selector, :required, &block)
end

#one?(name, selector = nil, &block) ⇒ Boolean

Returns:

  • (Boolean)


80
81
82
# File 'lib/horsefield/scraper.rb', line 80

def one?(name, selector = nil, &block)
  one(name, selector, :presence, &block)
end

#postprocess(&block) ⇒ Object



88
89
90
# File 'lib/horsefield/scraper.rb', line 88

def postprocess(&block)
  @postprocessor = block
end

#postprocessorObject



48
49
50
# File 'lib/horsefield/scraper.rb', line 48

def postprocessor
  @postprocessor || Proc.new { self }
end

#scope(selector, &block) ⇒ Object



84
85
86
# File 'lib/horsefield/scraper.rb', line 84

def scope(selector, &block)
  self.lookups << lambda { |doc| doc.at(selector).instance_eval(&block) }
end