From 7c755d4174414e6ab7677736673092ba6f84357c Mon Sep 17 00:00:00 2001 From: ocean Date: Mon, 29 Aug 2005 10:56:05 +0000 Subject: * lib/rdoc/usage.rb: improper exceptions. [ruby-dev:26870] * lib/rdoc/usage.rb: support the case when non-ruby code exists before shebang. (this is needed when ri.bat is executed on windows) git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9041 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 +++++++ lib/rdoc/usage.rb | 37 ++++++++++++++++++++++--------------- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 61df6fec23..bfc7fa761f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Mon Aug 29 19:47:18 2005 Hirokazu Yamamoto + + * lib/rdoc/usage.rb: improper exceptions. [ruby-dev:26870] + + * lib/rdoc/usage.rb: support the case when non-ruby code exists before + shebang. (this is needed when ri.bat is executed on windows) + Mon Aug 29 18:58:05 2005 Keiju Ishitsuka * lib/irb/init.rb: make IRB -I option that is same befavior for ruby. [ruby-dev:26872] diff --git a/lib/rdoc/usage.rb b/lib/rdoc/usage.rb index 3e64cd6433..3a3718e2d3 100644 --- a/lib/rdoc/usage.rb +++ b/lib/rdoc/usage.rb @@ -128,24 +128,31 @@ module RDoc # Find the first comment in the file (that isn't a shebang line) # If the file doesn't start with a comment, report the fact - # and return nil + # and return empty string - def RDoc.find_comment(file) - # skip leading blank lines and shebangs - while line = file.gets - break unless line =~ /^(#!|\s*$)/ + def RDoc.gets(file) + if (line = file.gets) && (line =~ /^#!/) # shebang + throw :exit, find_comment(file) + else + line end + end - comment = [] + def RDoc.find_comment(file) + catch (:exit) do + # skip leading blank lines + 0 while (line = gets(file)) && (line =~ /^\s*$/) + + comment = [] + while line && line =~ /^\s*#/ + comment << line + line = gets(file) + end - while line && line =~ /^\s*#/ - comment << line - line = file.gets + 0 while line && (line = gets(file)) + return no_comment if comment.empty? + return comment.join end - - return no_comment if comment.empty? - - comment.join end @@ -167,7 +174,7 @@ module RDoc if copy_upto_level && item.level >= copy_upto_level copy_upto_level = nil else - if item.text[0].downcase == name + if item.text.downcase == name result << item copy_upto_level = item.level end @@ -191,7 +198,7 @@ module RDoc # Report the fact that no doc comment count be found def RDoc.no_comment $stderr.puts "No usage information available for this program" - nil + "" end end -- cgit v1.2.3