detect rss without version
This commit is contained in:
1 parent
1a30289123
commit
986df46a25
2 files changed
+14
-2
No files matched your search
@@ -1,5 +1,5 @@
|
|||||||
defmodule FeedReader.Formats.RSS do
|
defmodule FeedReader.Formats.RSS do
|
||||||
@moduledoc "RSS 2.0 format detection and normalization."
|
@moduledoc "RSS format detection and normalization."
|
||||||
|
|
||||||
@behaviour FeedReader.Format
|
@behaviour FeedReader.Format
|
||||||
|
|
||||||
@@ -7,7 +7,17 @@ defmodule FeedReader.Formats.RSS do
|
|||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
def matches_prefix?(prefix) do
|
def matches_prefix?(prefix) do
|
||||||
Regex.match?(~r/<rss\b[^>]*\bversion\s*=\s*(["'])(?:0\.9(?:1|2)?|2\.0)\1/is, prefix)
|
case Regex.run(~r/<rss\b([^>]*)>/is, prefix, capture: :all_but_first) do
|
||||||
|
[attributes] ->
|
||||||
|
not Regex.match?(~r/\bversion\s*=/is, attributes) or
|
||||||
|
Regex.match?(
|
||||||
|
~r/\bversion\s*=\s*(["'])(?:0\.9(?:1|2)?|2\.0)\1/is,
|
||||||
|
attributes
|
||||||
|
)
|
||||||
|
|
||||||
|
_none ->
|
||||||
|
false
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ defmodule FeedReader.FormatDetectionTest do
|
|||||||
test "detects RSS, Atom, and RDF from a bounded XML prefix" do
|
test "detects RSS, Atom, and RDF from a bounded XML prefix" do
|
||||||
assert FeedReader.detect_format("<?xml version='1.0'?><rss version='2.0'>") == :rss
|
assert FeedReader.detect_format("<?xml version='1.0'?><rss version='2.0'>") == :rss
|
||||||
assert FeedReader.detect_format("<rss version='0.91'>") == :rss
|
assert FeedReader.detect_format("<rss version='0.91'>") == :rss
|
||||||
|
assert FeedReader.detect_format("<rss xmlns:xsi='urn:test'>") == :rss
|
||||||
|
assert FeedReader.detect_format("<rss version='1.0'>") == :unknown
|
||||||
assert FeedReader.detect_format("<feed xmlns='http://www.w3.org/2005/Atom'>") == :atom
|
assert FeedReader.detect_format("<feed xmlns='http://www.w3.org/2005/Atom'>") == :atom
|
||||||
assert FeedReader.detect_format("<rdf:RDF xmlns:rdf='urn:rdf'>") == :rdf
|
assert FeedReader.detect_format("<rdf:RDF xmlns:rdf='urn:rdf'>") == :rdf
|
||||||
assert FeedReader.detect_format("<html><body>not a feed</body></html>") == :unknown
|
assert FeedReader.detect_format("<html><body>not a feed</body></html>") == :unknown
|
||||||
|
|||||||
Reference in new issue
Block a user