class WebPageParser::ParserFactory

Public Class Methods

add_factory(f) click to toggle source
# File lib/web-page-parser/parser_factory.rb, line 19
def self.add_factory(f)
  @@factories << f unless @@factories.include? f
end
factories() click to toggle source
# File lib/web-page-parser/parser_factory.rb, line 23
def self.factories
  @@factories
end
inherited(factory) click to toggle source

Keep track of any newly defined factories

# File lib/web-page-parser/parser_factory.rb, line 45
def self.inherited(factory)
  self.add_factory(factory)
end
load(dirname) click to toggle source

Load all the plugins in the given directory

# File lib/web-page-parser/parser_factory.rb, line 37
def self.load(dirname)
  Dir.open(dirname).each do |fn|
    next unless fn =~ /page_parser\.rb$/
    require File.join(dirname, fn)
  end
end
parser_for(options = {}) click to toggle source

Return a PageParser than can parse the given page. options hash must have a :url key

# File lib/web-page-parser/parser_factory.rb, line 29
def self.parser_for(options = {})
  @@factories.each do |factory|
    return factory.create(options) if factory.can_parse?(options)
  end
  nil
end

Public Instance Methods

can_parse?(options = {}) click to toggle source

return true if the Parser can handle the given page. options hash must have a :url key

# File lib/web-page-parser/parser_factory.rb, line 7
def can_parse?(options = {})
  false
end
create(options = {}) click to toggle source

Allocate a new parser. options hash is passed to new method of parser class.

# File lib/web-page-parser/parser_factory.rb, line 13
def create(options = {})
  nil
end