MCPcopy
hub / github.com/mmcdole/gofeed / parseRoot

Method parseRoot

atom/parser.go:41–197  ·  view source on GitHub ↗
(p *xpp.XMLPullParser)

Source from the content-addressed store, hash-verified

39}
40
41func (ap *Parser) parseRoot(p *xpp.XMLPullParser) (*Feed, error) {
42 if err := p.Expect(xpp.StartTag, "feed"); err != nil {
43 return nil, err
44 }
45
46 atom := &Feed{}
47 atom.Entries = []*Entry{}
48 atom.Version = ap.parseVersion(p)
49 atom.Language = ap.parseLanguage(p)
50
51 contributors := []*Person{}
52 authors := []*Person{}
53 categories := []*Category{}
54 links := []*Link{}
55 extensions := ext.Extensions{}
56
57 for {
58 tok, err := shared.NextTag(p)
59 if err != nil {
60 return nil, err
61 }
62
63 if tok == xpp.EndTag {
64 break
65 }
66
67 if tok == xpp.StartTag {
68
69 name := strings.ToLower(p.Name)
70
71 if shared.IsExtension(p) {
72 e, err := shared.ParseExtension(extensions, p)
73 if err != nil {
74 return nil, err
75 }
76 extensions = e
77 } else if name == "title" {
78 result, err := ap.parseAtomText(p)
79 if err != nil {
80 return nil, err
81 }
82 atom.Title = result
83 } else if name == "id" {
84 result, err := ap.parseAtomText(p)
85 if err != nil {
86 return nil, err
87 }
88 atom.ID = result
89 } else if name == "updated" ||
90 name == "modified" {
91 result, err := ap.parseAtomText(p)
92 if err != nil {
93 return nil, err
94 }
95 atom.Updated = result
96 date, err := shared.ParseDate(result)
97 if err == nil {
98 utcDate := date.UTC()

Callers 1

ParseMethod · 0.95

Calls 12

parseVersionMethod · 0.95
parseLanguageMethod · 0.95
parseAtomTextMethod · 0.95
parseLinkMethod · 0.95
parseGeneratorMethod · 0.95
parsePersonMethod · 0.95
parseCategoryMethod · 0.95
parseEntryMethod · 0.95
NextTagFunction · 0.92
IsExtensionFunction · 0.92
ParseExtensionFunction · 0.92
ParseDateFunction · 0.92

Tested by

no test coverage detected