Sha256: acb75a1ab15c759a157b79fbcd1c0ec8bc7c3afe89e48a9dd50f983fe503fbbc

Contents?: true

Size: 1.86 KB

Versions: 4

Compression:

Stored size: 1.86 KB

Contents

class CobwebLinks
  
  # processes links supplied to it
  def initialize(options={})
    @options = options
    
    raise InternalUrlsMissingError, ":internal_urls is required" unless @options.has_key? :internal_urls
    raise InvalidUrlsError, ":internal_urls must be an array" unless @options[:internal_urls].kind_of? Array
    raise InvalidUrlsError, ":external_urls must be an array" unless !@options.has_key?(:external_urls) || @options[:external_urls].kind_of?(Array)
    @options[:external_urls] = [] unless @options.has_key? :external_urls
    @options[:debug] = false unless @options.has_key? :debug
    
    @internal_patterns = @options[:internal_urls].map{|pattern| Regexp.new("^#{pattern.gsub(".", "\\.").gsub("*", ".*?")}")}
    @external_patterns = @options[:external_urls].map{|pattern| Regexp.new("^#{pattern.gsub(".", "\\.").gsub("*", ".*?")}")}
    
  end
  
  def internal?(link)
    if @options[:debug]
      puts "--------------------------------"
      puts "Link: #{link}"
      puts "Internal matches"
      ap @internal_patterns.select{|pattern| link.match(pattern)}
      puts "External matches"
      ap @external_patterns.select{|pattern| link.match(pattern)}
    end
    !@internal_patterns.select{|pattern| link.match(pattern)}.empty? && @external_patterns.select{|pattern| link.match(pattern)}.empty?
  end
  
  def external?(link)
    if @options[:debug]
      puts "--------------------------------"
      puts "Link: #{link}"
      puts "Internal matches"
      ap @internal_patterns.select{|pattern| link.match(pattern)}
      puts "External matches"
      ap @external_patterns.select{|pattern| link.match(pattern)}
    end
    @internal_patterns.select{|pattern| link.match(pattern)}.empty? || !@external_patterns.select{|pattern| link.match(pattern)}.empty?
  end
  
end

class InternalUrlsMissingError < Exception
end  
class InvalidUrlsError < Exception
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
cobweb-0.0.48 lib/cobweb_links.rb
cobweb-0.0.47 lib/cobweb_links.rb
cobweb-0.0.46 lib/cobweb_links.rb
cobweb-0.0.45 lib/cobweb_links.rb