diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-01-11 09:31:15 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-01-11 09:31:15 +0000 |
commit | 7e6cf122efcea0aceda17feff2614fe6cda491c5 (patch) | |
tree | 38a4b52687f7400becfb8f45de57d5a0204c8cf8 /lib | |
parent | b5417ef56d8706cd340f7c6c97a73dfbae3b3833 (diff) |
Remove lib/rdoc/usage.rb
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14994 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r-- | lib/getoptlong.rb | 34 | ||||
-rw-r--r-- | lib/rdoc/usage.rb | 210 |
2 files changed, 14 insertions, 230 deletions
diff --git a/lib/getoptlong.rb b/lib/getoptlong.rb index ba9ca3742a..3ebbf3b1b6 100644 --- a/lib/getoptlong.rb +++ b/lib/getoptlong.rb @@ -24,25 +24,6 @@ # # Here is a simple example of usage: # -# # == Synopsis -# # -# # hello: greets user, demonstrates command line parsing -# # -# # == Usage -# # -# # hello [OPTION] ... DIR -# # -# # -h, --help: -# # show help -# # -# # --repeat x, -n x: -# # repeat x times -# # -# # --name [name]: -# # greet user by name, if name not supplied default is John -# # -# # DIR: The directory in which to issue the greeting. -# # require 'getoptlong' # require 'rdoc/usage' # @@ -58,7 +39,20 @@ # opts.each do |opt, arg| # case opt # when '--help' -# RDoc::usage +# puts <<-EOF +# hello [OPTION] ... DIR +# +# -h, --help: +# show help +# +# --repeat x, -n x: +# repeat x times +# +# --name [name]: +# greet user by name, if name not supplied default is John +# +# DIR: The directory in which to issue the greeting. +# EOF # when '--repeat' # repetitions = arg.to_i # when '--name' diff --git a/lib/rdoc/usage.rb b/lib/rdoc/usage.rb deleted file mode 100644 index def516b3d7..0000000000 --- a/lib/rdoc/usage.rb +++ /dev/null @@ -1,210 +0,0 @@ -# = Synopsis -# -# This library allows command-line tools to encapsulate their usage -# as a comment at the top of the main file. Calling <tt>RDoc::usage</tt> -# then displays some or all of that comment, and optionally exits -# the program with an exit status. We always look for the comment -# in the main program file, so it is safe to call this method -# from anywhere in the executing program. -# -# = Usage -# -# RDoc::usage( [ exit_status ], [ section, ...]) -# RDoc::usage_no_exit( [ section, ...]) -# -# where: -# -# exit_status:: -# the integer exit code (default zero). RDoc::usage will exit -# the calling program with this status. -# -# section:: -# an optional list of section names. If specified, only the -# sections with the given names as headings will be output. -# For example, this section is named 'Usage', and the next -# section is named 'Examples'. The section names are case -# insensitive. -# -# = Examples -# -# # Comment block describing usage -# # with (optional) section headings -# # . . . -# -# require 'rdoc/usage' -# -# # Display all usage and exit with a status of 0 -# -# RDoc::usage -# -# # Display all usage and exit with a status of 99 -# -# RDoc::usage(99) -# -# # Display usage in the 'Summary' section only, then -# # exit with a status of 99 -# -# RDoc::usage(99, 'Summary') -# -# # Display information in the Author and Copyright -# # sections, then exit 0. -# -# RDoc::usage('Author', 'Copyright') -# -# # Display information in the Author and Copyright -# # sections, but don't exit -# -# RDoc::usage_no_exit('Author', 'Copyright') -# -# = Author -# -# Dave Thomas, The Pragmatic Programmers, LLC -# -# = Copyright -# -# Copyright (c) 2004 Dave Thomas. -# Licensed under the same terms as Ruby -# - -require 'rdoc/markup/simple_markup' -require 'rdoc/markup/simple_markup/to_flow' -require 'rdoc/ri/ri_formatter' -require 'rdoc/ri/ri_options' - -module RDoc - - # Display usage information from the comment at the top of - # the file. String arguments identify specific sections of the - # comment to display. An optional integer first argument - # specifies the exit status (defaults to 0) - - def RDoc.usage(*args) - exit_code = 0 - - if args.size > 0 - status = args[0] - if status.respond_to?(:to_int) - exit_code = status.to_int - args.shift - end - end - - # display the usage and exit with the given code - usage_no_exit(*args) - exit(exit_code) - end - - # Display usage - def RDoc.usage_no_exit(*args) - main_program_file = caller[-1].sub(/:\d+$/, '') - comment = File.open(main_program_file) do |file| - find_comment(file) - end - - comment = comment.gsub(/^\s*#/, '') - - markup = SM::SimpleMarkup.new - flow_convertor = SM::ToFlow.new - - flow = markup.convert(comment, flow_convertor) - - format = "plain" - - unless args.empty? - flow = extract_sections(flow, args) - end - - options = RI::Options.instance - if args = ENV["RI"] - options.parse(args.split) - end - formatter = options.formatter.new(options, "") - formatter.display_flow(flow) - end - - ###################################################################### - - private - - # 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 empty string - - def RDoc.gets(file) - if (line = file.gets) && (line =~ /^#!/) # shebang - throw :exit, find_comment(file) - else - line - end - end - - 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 - - 0 while line && (line = gets(file)) - return no_comment if comment.empty? - return comment.join - end - end - - - ##### - # Given an array of flow items and an array of section names, extract those - # sections from the flow which have headings corresponding to - # a section name in the list. Return them in the order - # of names in the +sections+ array. - - def RDoc.extract_sections(flow, sections) - result = [] - sections.each do |name| - name = name.downcase - copy_upto_level = nil - - flow.each do |item| - case item - when SM::Flow::H - if copy_upto_level && item.level >= copy_upto_level - copy_upto_level = nil - else - if item.text.downcase == name - result << item - copy_upto_level = item.level - end - end - else - if copy_upto_level - result << item - end - end - end - end - if result.empty? - puts "Note to developer: requested section(s) [#{sections.join(', ')}] " + - "not found" - result = flow - end - result - end - - ##### - # Report the fact that no doc comment count be found - def RDoc.no_comment - $stderr.puts "No usage information available for this program" - "" - end -end - - -if $0 == __FILE__ - - RDoc::usage(*ARGV) - -end |