summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorkou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-05-12 09:06:00 +0000
committerkou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-05-12 09:06:00 +0000
commit97c07d3487aac92f72469d0f955eda12c851e87f (patch)
treec983fa577af3ab2c548316cb1631a8838e234615 /lib
parent961cbe5262946732e47182714ea3b4395a71227d (diff)
rss: Add option Hash support to RSS::Parser.parse
Available options: * :validate * :ignore_unknown_element * :parser_class git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63407 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r--lib/rss/parser.rb22
1 files changed, 20 insertions, 2 deletions
diff --git a/lib/rss/parser.rb b/lib/rss/parser.rb
index a9842e6d40..e271dc381c 100644
--- a/lib/rss/parser.rb
+++ b/lib/rss/parser.rb
@@ -72,13 +72,31 @@ module RSS
end
end
- def parse(rss, do_validate=true, ignore_unknown_element=true,
- parser_class=default_parser)
+ def parse(rss, *args)
+ if args.last.is_a?(Hash)
+ options = args.pop
+ else
+ options = {}
+ end
+ do_validate = boolean_argument(args[0], options[:validate], true)
+ ignore_unknown_element =
+ boolean_argument(args[1], options[:ignore_unknown_element], true)
+ parser_class = args[2] || options[:parser_class] || default_parser
parser = new(rss, parser_class)
parser.do_validate = do_validate
parser.ignore_unknown_element = ignore_unknown_element
parser.parse
end
+
+ private
+ def boolean_argument(positioned_value, option_value, default)
+ value = positioned_value
+ if value.nil? and not option_value.nil?
+ value = option_value
+ end
+ value = default if value.nil?
+ value
+ end
end
def_delegators(:@parser, :parse, :rss,