lib/muri/base.rb in muri-1.1.0 vs lib/muri/base.rb in muri-1.1.1

- old
+ new

@@ -7,23 +7,25 @@ # UnsupportedURI raised if parser is found, but URI path does not # match accepted formats class UnsupportedURI < ArgumentError; end - PARSERS = { } + AVAILABLE_PARSERS = %w[Youtube Flickr Vimeo Imageshack Photobucket Facebook Twitpic Picasa].freeze - # Defines is_#{service}? and is_#{service type constant}? methods, and sets service name constnat - ['Youtube', 'Flickr', 'Vimeo', 'Imageshack', 'Photobucket', 'Facebook', 'Twitpic', 'Picasa'].each do |filter| - eval "include Filter::#{filter}" - is_service = "is_#{filter.downcase}?" - define_method(is_service) { self.media_service == filter } - self.constants.reject { |c| c !~ /^#{filter.upcase}/ }.each do |exp| + PARSERS = { } + + # Defines is_#{service}? and is_#{service type}? methods, and sets service name constnat + AVAILABLE_PARSERS.each do |parser| + eval "include Filter::#{parser}" + is_service = "is_#{parser.downcase}?" + define_method(is_service) { self.media_service == parser } + self.constants.reject { |c| c !~ /^#{parser.upcase}/ }.each do |exp| define_method("is_#{exp.downcase}?") do self.media_api_type == eval(exp) && self.instance_eval(is_service) end end - const_set "#{filter.upcase}_SERVICE_NAME", "#{filter}" + const_set "#{parser.upcase}_SERVICE_NAME", "#{parser}" end def self.parse(url) self.new(url) end @@ -33,11 +35,11 @@ PARSERS.keys end def initialize(url) @info = { } - _parse(url) + parse(url) end # Determine if Muri object is valid (errors mean not valid) def valid? self.errors.nil? @@ -57,11 +59,12 @@ def self.determine_feed_parser(uri) PARSERS.keys.detect {|klass| klass.parsable?(uri)} end - def _parse(raw_url) + def parse(raw_url) begin + raw_url = URI.encode(URI.decode(raw_url)) unless raw_url.nil? self.uri = URI.parse(raw_url) if self.uri.scheme.nil? raw_url = "http://#{raw_url}" self.uri = URI.parse(raw_url) end