diff options
author | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-03-21 09:20:47 +0000 |
---|---|---|
committer | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-03-21 09:20:47 +0000 |
commit | 7ead69e5b3a2b09878037f11a7dda59ae402ccbf (patch) | |
tree | f7a422e5983f2c475c831e5d70987437eb77fa69 /lib/rss/parser.rb | |
parent | 2639d6dc809a3f78c96543c839d72d05e6e90ca7 (diff) | |
download | ruby-7ead69e5b3a2b09878037f11a7dda59ae402ccbf.tar.gz |
* test/rss/test_xml-stylesheet.rb: added tests for xml-stylesheet.
* lib/rss/xml-stylesheet.rb: added xml-stylesheet parsing
function.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5989 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rss/parser.rb')
-rw-r--r-- | lib/rss/parser.rb | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/lib/rss/parser.rb b/lib/rss/parser.rb index aadd9658cf..a04f7959ec 100644 --- a/lib/rss/parser.rb +++ b/lib/rss/parser.rb @@ -191,12 +191,22 @@ module RSS @proc_stack = [] @last_element = nil @version = @encoding = @standalone = nil + @xml_stylesheets = [] end def xmldecl(version, encoding, standalone) @version, @encoding, @standalone = version, encoding, standalone end + def instruction(name, content) + if name == "xml-stylesheet" + params = parse_pi_content(content) + if params.has_key?("href") + @xml_stylesheets << XMLStyleSheet.new(*params) + end + end + end + def tag_start(name, attributes) @text_stack.push('') @@ -204,7 +214,7 @@ module RSS attrs = {} attributes.each do |n, v| if n =~ /\Axmlns:?/ - ns[$'] = v # $' is post match + ns[$POSTMATCH] = v else attrs[n] = v end @@ -238,15 +248,13 @@ module RSS private - def start_RDF(tag_name, prefix, attrs, ns) - check_ns(tag_name, prefix, ns, RDF::URI) - - @rss = RDF.new(@version, @encoding, @standalone) - @rss.do_validate = @do_validate - @last_element = @rss - @proc_stack.push Proc.new { |text, tags| - @rss.validate_for_stream(tags) if @do_validate - } + CONTENT_PATTERN = /\s*([^=]+)=(["'])([^\2]+?)\2/ + def parse_pi_content(content) + params = {} + content.scan(CONTENT_PATTERN) do |name, quote, value| + params[name] = value + end + params end def start_else_element(local, prefix, attrs, ns) |