Class: RSS::Parser
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
Forwardable
|
|
Inherits: | Object |
Defined in: | lib/rss/parser.rb |
Class Attribute Summary
- .default_parser rw
-
.default_parser=(new_value)
rw
Set @@default_parser to new_value if it is one of the available parsers.
Class Method Summary
Instance Method Summary
-
#maybe_xml?(source) ⇒ Boolean
private
maybe_xml? tests if source is a string that looks like
XML
. -
#normalize_rss(rss)
private
Try to get the
XML
associated withrss
. -
#to_uri(rss)
private
Attempt to convert rss to a URI, but just return it if there’s a ::URI::Error.
Constructor Details
.new(rss, parser_class = self.class.default_parser) ⇒ Parser
# File 'lib/rss/parser.rb', line 107
def initialize(rss, parser_class=self.class.default_parser) @parser = parser_class.new(normalize_rss(rss)) end
Class Attribute Details
.default_parser (rw)
[ GitHub ]# File 'lib/rss/parser.rb', line 61
def default_parser @@default_parser || AVAILABLE_PARSERS.first end
.default_parser=(new_value) (rw)
Set @@default_parser to new_value if it is one of the available parsers. Else raise NotValidXMLParser
error.
# File 'lib/rss/parser.rb', line 67
def default_parser=(new_value) if AVAILABLE_PARSERS.include?(new_value) @@default_parser = new_value else raise NotValidXMLParser.new(new_value) end end
Class Method Details
.boolean_argument(positioned_value, option_value, default) (private)
[ GitHub ]# File 'lib/rss/parser.rb', line 92
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
.parse(rss, *args)
[ GitHub ]# File 'lib/rss/parser.rb', line 75
def parse(rss, *args) if args.last.is_a?(Hash) = args.pop else = {} end do_validate = boolean_argument(args[0], [:validate], true) ignore_unknown_element = boolean_argument(args[1], [:ignore_unknown_element], true) parser_class = args[2] || [:parser_class] || default_parser parser = new(rss, parser_class) parser.do_validate = do_validate parser.ignore_unknown_element = ignore_unknown_element parser.parse end
Instance Method Details
#maybe_xml?(source) ⇒ Boolean
(private)
maybe_xml? tests if source is a string that looks like XML
.
# File 'lib/rss/parser.rb', line 131
def maybe_xml?(source) source.is_a?(String) and /</ =~ source end
#normalize_rss(rss) (private)
# File 'lib/rss/parser.rb', line 116
def normalize_rss(rss) return rss if maybe_xml?(rss) uri = to_uri(rss) if uri.respond_to?(:read) uri.read elsif (RUBY_VERSION >= '2.7' || !rss.tainted?) and File.readable?(rss) File.open(rss) {|f| f.read} else rss end end
#to_uri(rss) (private)
Attempt to convert rss to a URI, but just return it if there’s a ::URI::Error