diff options
author | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-05-12 09:06:00 +0000 |
---|---|---|
committer | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-05-12 09:06:00 +0000 |
commit | 97c07d3487aac92f72469d0f955eda12c851e87f (patch) | |
tree | c983fa577af3ab2c548316cb1631a8838e234615 /lib/rss | |
parent | 961cbe5262946732e47182714ea3b4395a71227d (diff) | |
download | ruby-97c07d3487aac92f72469d0f955eda12c851e87f.tar.gz |
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/rss')
-rw-r--r-- | lib/rss/parser.rb | 22 |
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, |