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

Method parseSource

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

Source from the content-addressed store, hash-verified

350}
351
352func (ap *Parser) parseSource(p *xpp.XMLPullParser) (*Source, error) {
353
354 if err := p.Expect(xpp.StartTag, "source"); err != nil {
355 return nil, err
356 }
357
358 source := &Source{}
359
360 contributors := []*Person{}
361 authors := []*Person{}
362 categories := []*Category{}
363 links := []*Link{}
364 extensions := ext.Extensions{}
365
366 for {
367 tok, err := shared.NextTag(p)
368 if err != nil {
369 return nil, err
370 }
371
372 if tok == xpp.EndTag {
373 break
374 }
375
376 if tok == xpp.StartTag {
377
378 name := strings.ToLower(p.Name)
379
380 if shared.IsExtension(p) {
381 e, err := shared.ParseExtension(extensions, p)
382 if err != nil {
383 return nil, err
384 }
385 extensions = e
386 } else if name == "title" {
387 result, err := ap.parseAtomText(p)
388 if err != nil {
389 return nil, err
390 }
391 source.Title = result
392 } else if name == "id" {
393 result, err := ap.parseAtomText(p)
394 if err != nil {
395 return nil, err
396 }
397 source.ID = result
398 } else if name == "updated" ||
399 name == "modified" {
400 result, err := ap.parseAtomText(p)
401 if err != nil {
402 return nil, err
403 }
404 source.Updated = result
405 date, err := shared.ParseDate(result)
406 if err == nil {
407 utcDate := date.UTC()
408 source.UpdatedParsed = &utcDate
409 }

Callers 1

parseEntryMethod · 0.95

Calls 9

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

Tested by

no test coverage detected