From fbb0dfed47c907f9f97500967491aad85c92577a Mon Sep 17 00:00:00 2001 From: Nazar Kanaev Date: Wed, 7 Apr 2021 10:25:30 +0100 Subject: [PATCH] remove bom --- doc/formats.txt | 1 + src/parser/feed.go | 1 + src/parser/feed_test.go | 15 +++++++++++++++ 3 files changed, 17 insertions(+) diff --git a/doc/formats.txt b/doc/formats.txt index 9d63771..8f6951c 100644 --- a/doc/formats.txt +++ b/doc/formats.txt @@ -152,6 +152,7 @@ The parser should be reasonably handle content provided by them. Delete any from the list in case they drop support of web feeds. - blogger +- cnblogs - flickr - hatenablog - livejournal diff --git a/src/parser/feed.go b/src/parser/feed.go index 28e4d16..2d7cc00 100644 --- a/src/parser/feed.go +++ b/src/parser/feed.go @@ -17,6 +17,7 @@ type processor func(r io.Reader) (*Feed, error) func sniff(lookup string) (string, processor) { lookup = strings.TrimSpace(lookup) + lookup = strings.TrimLeft(lookup, "\x00\xEF\xBB\xBF\xFE\xFF") switch lookup[0] { case '<': decoder := xmlDecoder(strings.NewReader(lookup)) diff --git a/src/parser/feed_test.go b/src/parser/feed_test.go index 5b4f9d8..223ac3f 100644 --- a/src/parser/feed_test.go +++ b/src/parser/feed_test.go @@ -92,3 +92,18 @@ func TestParseShortFeed(t *testing.T) { t.FailNow() } } + +func TestParseFeedWithBOM(t *testing.T) { + have, err := Parse(strings.NewReader( + "\xEF\xBB\xBF" + ``, + )) + want := &Feed{} + if err != nil { + t.Fatal(err) + } + if !reflect.DeepEqual(want, have) { + t.Logf("want: %#v", want) + t.Logf("have: %#v", have) + t.FailNow() + } +}