summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorkou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-06-29 08:44:53 +0000
committerkou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-06-29 08:44:53 +0000
commit1695dd0f023a1171148ef8e6f854acaab3ed32e2 (patch)
treeaa57cbf0fa8b72591b94fd851b1fda97607c083a /lib
parent94031b9628f4a5e02df018a29111051a97a7a2cb (diff)
* lib/rss/parser.rb (RSS::ListenerMixin#known_class): define to
work with ruby 1.8.x too. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17674 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r--lib/rss/parser.rb18
1 files changed, 15 insertions, 3 deletions
diff --git a/lib/rss/parser.rb b/lib/rss/parser.rb
index 0cba624bcb..2e137da3ed 100644
--- a/lib/rss/parser.rb
+++ b/lib/rss/parser.rb
@@ -361,9 +361,7 @@ module RSS
def start_else_element(local, prefix, attrs, ns)
class_name = self.class.class_name(_ns(ns, prefix), local)
current_class = @last_element.class
- if class_name and
- (current_class.const_defined?(class_name, false) or
- current_class.constants.include?(class_name.to_sym))
+ if known_class?(current_class, class_name)
next_class = current_class.const_get(class_name)
start_have_something_element(local, prefix, attrs, ns, next_class)
else
@@ -379,6 +377,20 @@ module RSS
end
end
+ if Module.method(:const_defined?).arity == -1
+ def known_class?(target_class, class_name)
+ class_name and
+ (target_class.const_defined?(class_name, false) or
+ target_class.constants.include?(class_name.to_sym))
+ end
+ else
+ def known_class?(target_class, class_name)
+ class_name and
+ (target_class.const_defined?(class_name) or
+ target_class.constants.include?(class_name))
+ end
+ end
+
NAMESPLIT = /^(?:([\w:][-\w\d.]*):)?([\w:][-\w\d.]*)/
def split_name(name)
name =~ NAMESPLIT