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

Method parseItem

rss/parser.go:315–465  ·  view source on GitHub ↗
(p *xpp.XMLPullParser)

Source from the content-addressed store, hash-verified

313}
314
315func (rp *Parser) parseItem(p *xpp.XMLPullParser) (item *Item, err error) {
316 if err = p.Expect(xpp.StartTag, "item"); err != nil {
317 return nil, err
318 }
319
320 item = &Item{}
321 extensions := ext.Extensions{}
322 categories := []*Category{}
323 enclosures := []*Enclosure{}
324 links := []string{}
325
326 for {
327 tok, err := shared.NextTag(p)
328 if err != nil {
329 return nil, err
330 }
331
332 if tok == xpp.EndTag {
333 break
334 }
335
336 if tok == xpp.StartTag {
337
338 name := strings.ToLower(p.Name)
339
340 if shared.IsExtension(p) {
341 ext, err := shared.ParseExtension(extensions, p)
342 if err != nil {
343 return nil, err
344 }
345 item.Extensions = ext
346 } else if name == "title" {
347 result, err := shared.ParseText(p)
348 if err != nil {
349 return nil, err
350 }
351 item.Title = result
352 } else if name == "description" {
353 result, err := shared.ParseText(p)
354 if err != nil {
355 return nil, err
356 }
357 item.Description = result
358 } else if name == "encoded" {
359 space := strings.TrimSpace(p.Space)
360 prefix := shared.PrefixForNamespace(space, p)
361 if prefix == "content" {
362 result, err := shared.ParseText(p)
363 if err != nil {
364 return nil, err
365 }
366 item.Content = result
367 }
368 } else if name == "link" {
369 result, err := rp.parseLink(p)
370 if err != nil {
371 return nil, err
372 }

Callers 2

parseRootMethod · 0.95
parseChannelMethod · 0.95

Calls 11

parseLinkMethod · 0.95
parseSourceMethod · 0.95
parseEnclosureMethod · 0.95
parseGUIDMethod · 0.95
parseCategoryMethod · 0.95
NextTagFunction · 0.92
IsExtensionFunction · 0.92
ParseExtensionFunction · 0.92
ParseTextFunction · 0.92
PrefixForNamespaceFunction · 0.92
ParseDateFunction · 0.92

Tested by

no test coverage detected