Module: Extractula

Defined in:
lib/extractula/custom_extractors/dinosaur_comics.rb,
lib/extractula.rb,
lib/extractula.rb,
lib/extractula/oembed.rb,
lib/extractula/custom_extractors/vimeo.rb,
lib/extractula/custom_extractors/flickr.rb,
lib/extractula/custom_extractors/y_frog.rb,
lib/extractula/custom_extractors/twit_pic.rb,
lib/extractula/custom_extractors/you_tube.rb

Overview

This is mostly a proof-of-concept.

Defined Under Namespace

Modules: OEmbed Classes: DinosaurComics, ExtractedContent, Extractor, Flickr, TwitPic, Vimeo, YFrog, YouTube

Constant Summary collapse

VERSION =
"0.0.8"

Class Method Summary collapse

Class Method Details

.add_extractor(extractor_class) ⇒ Object



16
17
18
# File 'lib/extractula.rb', line 16

def self.add_extractor(extractor_class)
  @extractors << extractor_class
end

.custom_extractor(config = {}) ⇒ Object



31
32
33
34
35
36
# File 'lib/extractula.rb', line 31

def self.custom_extractor(config = {})
  klass = Class.new(Extractula::Extractor)
  klass.include(Extractula::OEmbed) if config.delete(:oembed)
  config.each { |option, args| klass.__send__(option, *args) }
  klass
end

.extract(url, html) ⇒ Object



24
25
26
27
28
29
# File 'lib/extractula.rb', line 24

def self.extract(url, html)
  parsed_url = Domainatrix.parse(url)
  parsed_html = Nokogiri::HTML(html)
  extractor = @extractors.detect {|e| e.can_extract? parsed_url, parsed_html} || Extractor
  extractor.new(parsed_url, parsed_html).extract
end

.remove_extractor(extractor_class) ⇒ Object



20
21
22
# File 'lib/extractula.rb', line 20

def self.remove_extractor(extractor_class)
  @extractors.delete extractor_class
end