diff options
Diffstat (limited to 'lib/rss/parser.rb')
-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, |