def NcursesInterface::select_item(item)
desc_win = $wins[NcursesInterface::get_win_id('desc')]
item_win = $wins[NcursesInterface::get_win_id('item')]
id = item_win.items[item]['item']
$old_item = $a_item || 0
$a_item = item
desc_win.active_item = 0
desc_win.items.clear
feed = $config['feeds'].get($a_feed) rescue return
item_win.items[item]['read?'] = true
feed['items'][id]['read?'] = true
item_win.draw_items
item_content = feed['items'][id]['desc']
if $config['repair_relative_urls']
host_uri = URI::parse(feed['url'])
item_content = item_content.gsub(/href\s*=\s*["']([^'"]+?)['"]/m) {
m = $1.dup
new_url = case m
when (/^(\w+):\/\//): m
else
begin
host_uri.merge(m).to_s
rescue
meth = 'NcursesInterface.select_item'
feed_title = feed['title']
$log.warn(meth) {
"feed \"#{feed_title}\": " +
_('repairing relative url failed')
}
m
end
end
"href='#{new_url}'"
}
item_url = feed['items'][id]['url'].dup
item_url = case item_url
when (/(\w+):\/\//): item_url
else [host_uri, item_url].join('/')
end
end
desc_win.items << {
'content' => item_content,
'title' => feed['items'][id]['title'],
'url' => item_url,
'date' => feed['items'][id]['date'],
'read?' => feed['items'][id]['read?'],
}
NcursesInterface::populate_feed_win
desc_win.offset = 0 unless $old_item == $a_item
desc_win.draw_items
if (($config['focus'] == 'select' ||
$config['focus'] == 'select_first') &&
!$config['no_desc_auto_focus'])
NcursesInterface::set_active_win(get_win_id('desc'))
end
end