Skip to content

Commit 9da4cab

Browse files
committed
failsafe.
1 parent 131256a commit 9da4cab

1 file changed

Lines changed: 23 additions & 15 deletions

File tree

autoload/webapi/feed.vim

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,46 @@
11
let s:save_cpo = &cpo
22
set cpo&vim
33

4+
function! s:attr(node, name)
5+
let n = a:node.childNode(a:name)
6+
if empty(n)
7+
return ""
8+
endif
9+
return n.value()
10+
endfunction
11+
412
function! webapi#feed#parseURL(url)
5-
let dom = webapi#xml#parse(webapi#http#get(a:url).content)
13+
let dom = webapi#xml#parseURL(a:url)
614
let items = []
715
if dom.name == 'rss'
816
let channel = dom.childNode('channel')
917
for item in channel.childNodes('item')
1018
call add(items, {
11-
\ "title": item.childNode('title').value(),
12-
\ "link": item.childNode('link').value(),
13-
\ "content": item.childNode('description').value(),
14-
\ "id": item.childNode('guid').value(),
15-
\ "date": item.childNode('pubDate').value(),
19+
\ "title": s:attr(item, 'title'),
20+
\ "link": s:attr(item, 'link'),
21+
\ "content": s:attr(item, 'description'),
22+
\ "id": s:attr(item, 'guid'),
23+
\ "date": s:attr(item, 'pubDate'),
1624
\})
1725
endfor
1826
elseif dom.name == 'rdf:RDF'
1927
for item in dom.childNodes('item')
2028
call add(items, {
21-
\ "title": item.childNode('title').value(),
22-
\ "link": item.childNode('link').value(),
23-
\ "content": item.childNode('description').value(),
24-
\ "id": item.childNode('link').value(),
25-
\ "date": item.childNode('dc:date').value(),
29+
\ "title": s:attr(item, 'title'),
30+
\ "link": s:attr(item, 'link'),
31+
\ "content": : s:attr(item, 'description'),
32+
\ "id": s:attr(item, 'guid'),
33+
\ "date": s:attr(item, 'dc:date'),
2634
\})
2735
endfor
2836
elseif dom.name == 'feed'
2937
for item in dom.childNodes('entry')
3038
call add(items, {
31-
\ "title": item.childNode('title').value(),
39+
\ "title": s:attr(item, 'title'),
3240
\ "link": item.childNode('link').attr['href'],
33-
\ "content": item.childNode('content').value(),
34-
\ "id": item.childNode('id').value(),
35-
\ "date": item.childNode('updated').value(),
41+
\ "content": s:attr(item, 'content'),
42+
\ "id": s:attr(item, 'id'),
43+
\ "date": s:attr(item, 'update'),
3644
\})
3745
endfor
3846
endif

0 commit comments

Comments
 (0)