330 lines
14 KiB
Text
330 lines
14 KiB
Text
$NetBSD: patch-ab,v 1.2 2010/09/12 03:30:06 taca Exp $
|
||
|
||
--- raggle.orig 2005-12-14 22:54:11.000000000 +0000
|
||
+++ raggle
|
||
@@ -81,6 +81,7 @@ require 'pstore'
|
||
require 'thread'
|
||
require 'time'
|
||
require 'uri'
|
||
+require 'rubygems' if RUBY_VERSION.sub(/\.\d+$/, "") < "1.9"
|
||
|
||
#########################
|
||
# load external modules #
|
||
@@ -132,7 +133,7 @@ if $HAVE_LIB['gettext']
|
||
GetText::bindtextdomain('raggle', nil)
|
||
end
|
||
|
||
-unless $HAVE_LIB['webrick'] || $HAVE_LIB['ncurses']
|
||
+unless $HAVE_LIB['webrick'] and $HAVE_LIB['ncurses']
|
||
$stderr.puts _(<<-ENDERR
|
||
ERROR: No interfaces available.
|
||
You're missing the both the Ncurses-Ruby and WEBrick modules. You need
|
||
@@ -457,16 +458,16 @@ class String
|
||
HTML_ENTITY_LUT[m]
|
||
else
|
||
case m
|
||
- when 'amp': '&'
|
||
- when 'nbsp' ' '
|
||
- when /^quot$/ni: '"'
|
||
- when /^lt$/ni: '<'
|
||
- when /^gt$/ni: '>'
|
||
- when /^copy/: '(c)'
|
||
- when /^trade/: '(tm)'
|
||
- when /^#8212$/n: ","
|
||
- when /^#8217$/n: "'"
|
||
- when /^#8218$/n: ","
|
||
+ when 'amp'; '&'
|
||
+ when 'nbsp'; ' '
|
||
+ when /^quot$/ni; '"'
|
||
+ when /^lt$/ni; '<'
|
||
+ when /^gt$/ni; '>'
|
||
+ when /^copy/; '(c)'
|
||
+ when /^trade/; '(tm)'
|
||
+ when /^#8212$/n; ","
|
||
+ when /^#8217$/n; "'"
|
||
+ when /^#8218$/n; ","
|
||
when /^#(\d+)$/n
|
||
r = $1.to_i # Integer() interprets leading zeros as octal
|
||
if !r.between?(0, 255) && munge_uni
|
||
@@ -1146,7 +1147,7 @@ module Raggle
|
||
max_items = outline.attributes['max_items'] || nil
|
||
priority = outline.attributes['priority'].to_i || $config['default_feed_priority']
|
||
# the following properties take effect unless overridden on CLI
|
||
- if outline.attributes['refresh']: opml_refresh = outline.attributes['refresh'].to_i
|
||
+ if outline.attributes['refresh']; opml_refresh = outline.attributes['refresh'].to_i
|
||
else opml_refresh = nil; end # fixes clobberation
|
||
frefresh = refresh || opml_refresh || $config['default_feed_refresh']
|
||
fsave_items = save_items || outline.attributes['save_items'] || false
|
||
@@ -1185,7 +1186,7 @@ module Raggle
|
||
raise if $wins
|
||
die "Parsing #{file_name} failed: #{parse_err.message}" unless $wins
|
||
rescue => err
|
||
- if $wins: Interfaces::NcursesInterface::set_status($config['msg_bad_uri'])
|
||
+ if $wins; Interfaces::NcursesInterface::set_status($config['msg_bad_uri'])
|
||
else die err.message; end
|
||
end
|
||
end
|
||
@@ -1222,7 +1223,7 @@ module Raggle
|
||
raise "Couldn't open output file \"#{file_name}\"."
|
||
end
|
||
rescue => err
|
||
- if $wins: Interfaces::NcursesInterface::set_status($config['msg_bad_uri'])
|
||
+ if $wins; Interfaces::NcursesInterface::set_status($config['msg_bad_uri'])
|
||
else die err.message; end
|
||
end
|
||
end
|
||
@@ -1519,14 +1520,14 @@ module Raggle
|
||
refresh_interval_check opts['refresh'] if !opts['force'] &&
|
||
opts.has_key?('refresh')
|
||
if id == -1
|
||
- 0.upto($config['feeds'].size - 1) do |id|
|
||
- feed = $config['feeds'].get(id)
|
||
+ 0.upto($config['feeds'].size - 1) do |i|
|
||
+ feed = $config['feeds'].get(i)
|
||
ourl = feed['url']
|
||
otitle = feed['title']
|
||
%w{title url site refresh priority category lock_title? save_items? max_items}.each { |key|
|
||
feed[key] = opts[key] if opts.has_key? key
|
||
}
|
||
- $config['feeds'].invalidate(id) if opts.has_key?('url') and opts['url'] != ourl
|
||
+ $config['feeds'].invalidate(i) if opts.has_key?('url') and opts['url'] != ourl
|
||
feed['lock_title?'] = true if opts.has_key?('title') and opts['title'] != otitle
|
||
end
|
||
else
|
||
@@ -1749,14 +1750,14 @@ ENDWARNING
|
||
@items = []
|
||
|
||
item_element_path = is_atom ? '//feed/entry' : '//item'
|
||
- doc.root.elements.each(item_element_path) { |e|
|
||
+ doc.root.elements.each(item_element_path) { |el|
|
||
# get item attributes (the ones that are set, anyway... stupid
|
||
# RSS)
|
||
h = {}
|
||
|
||
if is_atom
|
||
# parse atom entry
|
||
- h = parse_atom_entry(e)
|
||
+ h = parse_atom_entry(el)
|
||
else
|
||
# basic item attribute element check
|
||
['title', 'link', 'date', 'description'].each { |val|
|
||
@@ -1765,7 +1766,7 @@ ENDWARNING
|
||
|
||
# more elaborate xpath checks for item attribute elements
|
||
['link', 'date', 'description'].each { |key|
|
||
- h[key] = find_element(e, key)
|
||
+ h[key] = find_element(el, key)
|
||
}
|
||
|
||
# handle RSS enclosures for this element
|
||
@@ -1813,8 +1814,15 @@ ENDWARNING
|
||
if $HAVE_LIB['iconv'] && $config['use_iconv']
|
||
unless $iconv
|
||
# $iconv hasn't been intialized; create it
|
||
- enc += '//TRANSLIT' if $config['use_iconv_translit']
|
||
- $iconv = Iconv.new(enc, 'UTF-8')
|
||
+ if $config['use_iconv_translit']
|
||
+ begin
|
||
+ $iconv = Iconv.new(enc + '//TRANSLIT', 'UTF-8')
|
||
+ rescue Iconv::InvalidEncoding
|
||
+ $iconv = Iconv.new(enc, 'UTF-8')
|
||
+ end
|
||
+ else
|
||
+ $iconv = Iconv.new(enc, 'UTF-8')
|
||
+ end
|
||
end
|
||
|
||
# decode element using iconv
|
||
@@ -2025,37 +2033,37 @@ ENDUSAGE
|
||
when '--update'
|
||
ret['mode'] = 'update'
|
||
ret['id'] = (arg && (arg != 'all')) ? arg.to_i : 'all'
|
||
- when '--config': $config['config_path'] = arg
|
||
- when '--force': ret['force'] = true
|
||
- when '--list': ret['mode'] = 'list'
|
||
- when '--title': ret['title'] = arg
|
||
- when '--url': ret['url'] = arg
|
||
- when '--refresh': ret['refresh'] = arg.to_i
|
||
+ when '--config'; $config['config_path'] = arg
|
||
+ when '--force'; ret['force'] = true
|
||
+ when '--list'; ret['mode'] = 'list'
|
||
+ when '--title'; ret['title'] = arg
|
||
+ when '--url'; ret['url'] = arg
|
||
+ when '--refresh'; ret['refresh'] = arg.to_i
|
||
when '--version'
|
||
puts "Raggle v#$VERSION"
|
||
exit(0)
|
||
- when '--priority': ret['priority'] = arg.to_i
|
||
- when '--purge': ret['mode'] = 'purge'
|
||
+ when '--priority'; ret['priority'] = arg.to_i
|
||
+ when '--purge'; ret['mode'] = 'purge'
|
||
when '--sort'
|
||
ret['mode'] = 'sort'
|
||
- when '--lock-title': ret['lock_title?'] = true
|
||
- when '--unlock-title': ret['lock_title?'] = false
|
||
- when '--save-items': ret['save_items?'] = true
|
||
+ when '--lock-title'; ret['lock_title?'] = true
|
||
+ when '--unlock-title'; ret['lock_title?'] = false
|
||
+ when '--save-items'; ret['save_items?'] = true
|
||
when '--max'
|
||
ret['max_items'] = arg.to_i
|
||
ret['save_items?'] = true if ret['max_items'] > 0
|
||
- when '--unsave-items': ret['save_items?'] = false
|
||
- when '--verbose': $config['verbose'] = true
|
||
+ when '--unsave-items'; ret['save_items?'] = false
|
||
+ when '--verbose'; $config['verbose'] = true
|
||
when '--import-opml'
|
||
ret['mode'] = 'import_opml'
|
||
ret['opml_file'] = arg
|
||
when '--export-opml'
|
||
ret['mode'] = 'export_opml'
|
||
ret['opml_file'] = arg
|
||
- when '--diag': $config['diag'] = true
|
||
+ when '--diag'; $config['diag'] = true
|
||
when '--default-config'
|
||
ret['mode'] = 'default_config'
|
||
- when '--ascii': ret['ascii'] = true
|
||
+ when '--ascii'; ret['ascii'] = true
|
||
when '--server'
|
||
if $HAVE_LIB['webrick']
|
||
$config['run_http_server'] = true
|
||
@@ -2333,10 +2341,10 @@ ENDUSAGE
|
||
#
|
||
def Key::close_window
|
||
case $a_win
|
||
- when NcursesInterface::get_win_id('find'): $wins[$a_win].close(true)
|
||
- when NcursesInterface::get_win_id('cat'): $wins[$a_win].close(true)
|
||
- when NcursesInterface::get_win_id('keys'): $wins[$a_win].close(true)
|
||
- when NcursesInterface::get_win_id('edit'): $wins[$a_win].close(true)
|
||
+ when NcursesInterface::get_win_id('find'); $wins[$a_win].close(true)
|
||
+ when NcursesInterface::get_win_id('cat'); $wins[$a_win].close(true)
|
||
+ when NcursesInterface::get_win_id('keys'); $wins[$a_win].close(true)
|
||
+ when NcursesInterface::get_win_id('edit'); $wins[$a_win].close(true)
|
||
end
|
||
end
|
||
|
||
@@ -3391,11 +3399,11 @@ ENDUSAGE
|
||
error = true if (feedopt == 'priority' or feedopt == 'refresh') and
|
||
str !~ /^-?\d+$/
|
||
error = true if feedopt == 'max_items' and
|
||
- not (str =~ /^\d+$/ or str =~ /none|nil/i)
|
||
+ not(str =~ /^\d+$/ or str =~ /none|nil/i)
|
||
error = true if (feedopt == 'url' or feedopt == 'site') and
|
||
not uri?(str)
|
||
error = true if feedopt == 'save_items?' and
|
||
- not (str =~ /true/i or str =~ /false/i)
|
||
+ not(str =~ /true/i or str =~ /false/i)
|
||
error = true if feedopt == 'refresh' and
|
||
str.to_i < $config['feed_refresh_warn']
|
||
if error # bail if user entered nonsense via basic checks
|
||
@@ -3405,15 +3413,15 @@ ENDUSAGE
|
||
|
||
case feedopt # create options hash to pass to engine
|
||
when 'save_items?'
|
||
- if str =~ /true/i: newopts = {feedopt => true}
|
||
+ if str =~ /true/i; newopts = {feedopt => true}
|
||
else newopts = {feedopt => false}; end
|
||
when 'priority', 'refresh'
|
||
newopts = {feedopt => str.to_i}
|
||
when 'max_items'
|
||
- if str =~ /none|nil/i: newopts = {feedopt => nil}
|
||
+ if str =~ /none|nil/i; newopts = {feedopt => nil}
|
||
else newopts = {feedopt => str.to_i}; end
|
||
when 'category'
|
||
- if str =~ /\bnone\b|\bnil\b/i: newopts = {feedopt => nil}
|
||
+ if str =~ /\bnone\b|\bnil\b/i; newopts = {feedopt => nil}
|
||
else newopts = {feedopt => str}; end
|
||
else newopts = {feedopt => str}
|
||
end
|
||
@@ -3575,7 +3583,7 @@ ENDUSAGE
|
||
item_content = item_content.gsub(/href\s*=\s*["']([^'"]+?)['"]/m) {
|
||
m = $1.dup
|
||
new_url = case m
|
||
- when (/^(\w+):\/\//): m
|
||
+ when (/^(\w+):\/\//); m
|
||
else
|
||
# attempt to merge URI with host_uri. if that fails,
|
||
# log a warning, then fall back to the unmodified string
|
||
@@ -3599,7 +3607,7 @@ ENDUSAGE
|
||
# fix host-relative item URL
|
||
item_url = feed['items'][id]['url'].dup
|
||
item_url = case item_url
|
||
- when (/(\w+):\/\//): item_url
|
||
+ when (/(\w+):\/\//); item_url
|
||
else [host_uri, item_url].join('/')
|
||
end
|
||
end
|
||
@@ -3664,10 +3672,11 @@ ENDUSAGE
|
||
|
||
# get browser command
|
||
cmd = $config['browser_cmd'].map { |cmd_part|
|
||
- case cmd_part
|
||
- when /%s/: cmd_part % url.escape
|
||
- when '${browser}': $config['browser']
|
||
- else cmd_part
|
||
+ case cmd_part
|
||
+ when /%s/; cmd_part % url.escape
|
||
+ when '${browser}'; $config['browser']
|
||
+ else
|
||
+ cmd_part
|
||
end
|
||
}
|
||
|
||
@@ -3833,7 +3842,7 @@ ENDUSAGE
|
||
# if it's not nil, then add it to our list
|
||
added = false
|
||
if url && url.length > 0
|
||
- if title: added = Engine::add_feed({ 'url' => url, 'title' => title })
|
||
+ if title; added = Engine::add_feed({ 'url' => url, 'title' => title })
|
||
else added = Engine::add_feed({ 'url' => url }); end
|
||
NcursesInterface::populate_feed_win
|
||
else
|
||
@@ -4112,13 +4121,13 @@ ENDUSAGE
|
||
old_key = key
|
||
key = key.gsub(/^KEY_/, '')
|
||
case key
|
||
- when 'DC': key = 'Delete'
|
||
- when ' ': key = 'Space'
|
||
- when 'NPAGE': key = 'Page Down'
|
||
- when 'PPAGE': key = 'Page Up'
|
||
- when '': key = 'Control-L'
|
||
- when ' ': key = 'Tab'
|
||
- when /^\d$/: key = '1-9'
|
||
+ when 'DC'; key = 'Delete'
|
||
+ when ' '; key = 'Space'
|
||
+ when 'NPAGE'; key = 'Page Down'
|
||
+ when 'PPAGE'; key = 'Page Up'
|
||
+ when ''; key = 'Control-L'
|
||
+ when ' '; key = 'Tab'
|
||
+ when /^\d$/; key = '1-9'
|
||
end
|
||
unless key == old_key # remove cruft if key info updated
|
||
keys[key] = keys[old_key]
|
||
@@ -4251,9 +4260,9 @@ ENDUSAGE
|
||
$wins = []
|
||
$config['theme']['window_order'].each { |i|
|
||
case i
|
||
- when /feed/: cl = NcursesInterface::ListWindow
|
||
- when /item/: cl = NcursesInterface::ListWindow
|
||
- when /desc/: cl = NcursesInterface::TextWindow
|
||
+ when /feed/; cl = NcursesInterface::ListWindow
|
||
+ when /item/; cl = NcursesInterface::ListWindow
|
||
+ when /desc/; cl = NcursesInterface::TextWindow
|
||
else
|
||
raise "Unknown window #{i}"
|
||
end
|
||
@@ -4606,10 +4615,10 @@ ENDUSAGE
|
||
((cat =~ /\ball\b/i) ? ' selected="1"' : '') <<
|
||
">All</option>\n"
|
||
|
||
- $config['feeds'].categories.each { |cat|
|
||
- ret << " <option value='#{cat.title}'" <<
|
||
- ((cat =~ /\b#{cat.title}\b/i) ? ' selected="1"' : '') <<
|
||
- ">#{cat.title}</option>\n"
|
||
+ $config['feeds'].categories.each { |c|
|
||
+ ret << " <option value='#{c.title}'" <<
|
||
+ ((cat =~ /\b#{c.title}\b/i) ? ' selected="1"' : '') <<
|
||
+ ">#{c.title}</option>\n"
|
||
}
|
||
ret << "</select>\n"
|
||
|