summaryrefslogtreecommitdiff
path: root/lib/rss/parser.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rss/parser.rb')
-rw-r--r--lib/rss/parser.rb28
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)