summaryrefslogtreecommitdiff
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
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
-rw-r--r--ChangeLog5
-rw-r--r--lib/rss/parser.rb18
2 files changed, 20 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 91f948f504..183a6f7399 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sun Jun 29 17:44:23 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb (RSS::ListenerMixin#known_class): define to
+ work with ruby 1.8.x too.
+
Sun Jun 29 17:41:42 2008 Kouhei Sutou <kou@cozmixng.org>
* lib/rss/maker/base.rb (RSS::Maker::RSSBase#to_feed): raise
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