$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\n" - $config['feeds'].categories.each { |cat| - ret << " \n" + $config['feeds'].categories.each { |c| + ret << " \n" } ret << "\n"