summaryrefslogtreecommitdiff
path: root/lib/rss/parser.rb
diff options
context:
space:
mode:
authorkou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-07-06 17:43:05 +0000
committerkou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-07-06 17:43:05 +0000
commite289fcf81a22f1dc6ebcb87861877b463af04b7c ()
treeef88a6dfdfc68d57025eb98ab6fe8d237c3adccd /lib/rss/parser.rb
parent9800838ff02369fa9e393b70f40b6083af0ce595 (diff)
* lib/rss/{rss,parser,0.9,1.0,2.0}.rb: supported RSS 0.9x/2.0
validation and validation which disregard order of elements. * test/rss/test_parser.rb: added tests for RSS 0.9x/2.0 validation. * test/rss/{test_trackback,rss-testcase}.rb: fixed no good method name. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6590 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--lib/rss/parser.rb32
1 files changed, 24 insertions, 8 deletions
@@ -124,11 +124,22 @@ module RSS
class << self
@@setter = {}
def install_setter(uri, tag_name, setter)
@@setter[uri] = {} unless @@setter.has_key?(uri)
@@setter[uri][tag_name] = setter
end
def setter(uri, tag_name)
begin
@@setter[uri][tag_name]
@@ -147,27 +158,32 @@ module RSS
def install_get_text_element(name, uri, setter)
install_setter(uri, name, setter)
- def_get_text_element(name, *get_file_and_line_from_caller(1))
end
private
- def def_get_text_element(name, file, line)
unless private_instance_methods(false).include?("start_#{name}")
module_eval(<<-EOT, file, line)
def start_#{name}(name, prefix, attrs, ns)
uri = ns[prefix]
- if @do_validate
- tags = self.class.available_tags(uri)
- unless tags.include?(name)
- raise UnknownTagError.new(name, uri)
end
end
- start_get_text_element(name, prefix, ns, uri)
end
EOT
end
- send("private", "start_#{name}")
end
end