From 1b31d09edd94a1bad3fa8e987490d82e7088ebad Mon Sep 17 00:00:00 2001 From: dave Date: Mon, 5 Jan 2004 21:48:16 +0000 Subject: [PATCH] Add RDoc to build. Add --ri-system to RDoc git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5382 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 20 ++++++++++ Makefile.in | 10 ++++- bin/ri | 2 +- lib/.document | 27 ++++++++++++- lib/rdoc/parsers/parse_rb.rb | 5 ++- lib/rdoc/ri/ri_options.rb | 73 ++++++++++++++++++++++-------------- lib/test/unit.rb | 9 ++--- 7 files changed, 107 insertions(+), 39 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7a7ce4d673..1b77e5e5fd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,23 @@ +Tue Jan 6 06:37:53 2004 Dave Thomas + + * bin/rdoc: Add --ri-system switch + + * lib/.document: Update with list of files that seem to have + documentation + + * lib/test/unit.rb: Reorder comment to make it RDoc friendly. + + * Makefile.in: add install-nodoc target, and make it + generate RDoc on default install. + + * lib/rdoc/ri/ri_options.rb (RI::Options::parse): Add + --doc-dir option to ri. + +Tue Jan 6 00:04:40 2004 Dave Thomas + + * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_method_or_yield_parameters): + fix parsing if there are braces in a method parameter list + Tue Jan 6 01:01:04 2004 NAKAMURA Usaku * win32/dir.h, win32/win32.c: fix patch miss. diff --git a/Makefile.in b/Makefile.in index 1a9179dda1..6e8cd18b42 100644 --- a/Makefile.in +++ b/Makefile.in @@ -139,7 +139,9 @@ ruby.imp: $(LIBRUBY_A) @@NM@ -Pgp $(LIBRUBY_A) | awk 'BEGIN{print "#!"}; $$2~/^[BD]$$/{print $$1}' | sort -u -o $@ # $(MINIRUBY) $< $@ -install: rbconfig.rb +install: install-nodoc rdoc + +install-nodoc: rbconfig.rb $(MINIRUBY) $(srcdir)/instruby.rb $(SCRIPT_ARGS) --mantype="$(MANTYPE)" $(MINIRUBY) $(srcdir)/ext/extmk.rb $(SCRIPT_ARGS) install @@ -147,6 +149,10 @@ what-where no-install: rbconfig.rb $(MINIRUBY) $(srcdir)/instruby.rb -n $(SCRIPT_ARGS) --mantype="$(MANTYPE)" $(MINIRUBY) $(srcdir)/ext/extmk.rb -n $(SCRIPT_ARGS) install +rdoc: + @echo Generating RDoc documentation + $(MINIRUBY) -I lib bin/rdoc --all --ri-system + clean-ext: @-$(MINIRUBY) $(srcdir)/ext/extmk.rb $(SCRIPT_ARGS) clean 2> /dev/null || true @@ -198,7 +204,7 @@ Makefile: $(srcdir)/Makefile.in .PRECIOUS: @MAKEFILES@ -.PHONY: test +.PHONY: test install install-nodoc rdoc PHONY: diff --git a/bin/ri b/bin/ri index 498850027d..49d8849974 100755 --- a/bin/ri +++ b/bin/ri @@ -28,7 +28,7 @@ class RiDisplay def initialize @options = RI::Options.instance @options.parse - paths = RI::Paths::PATH + paths = @options.paths || RI::Paths::PATH if paths.empty? $stderr.puts "No ri documentation found in:" [ RI::Paths::SYSDIR, RI::Paths::SITEDIR, RI::Paths::HOMEDIR].each do |d| diff --git a/lib/.document b/lib/.document index dc9eab9a8d..d01d7d7f8f 100644 --- a/lib/.document +++ b/lib/.document @@ -1,4 +1,29 @@ # We only run RDoc on the top-level files in here: we skip # all the helper stuff in sub-directories -*.rb \ No newline at end of file +# Eventually, we hope to see... +# *.rb + +# But for now + +benchmark.rb +cgi.rb +complex.rb +date.rb +fileutils.rb +find.rb +generator.rb +logger.rb +matrix.rb +observer.rb +optionparser.rb +pathname.rb +set.rb +shellwords.rb +singleton.rb +tempfile.rb +test/unit.rb +thread.rb +thwait.rb +time.rb +yaml.rb \ No newline at end of file diff --git a/lib/rdoc/parsers/parse_rb.rb b/lib/rdoc/parsers/parse_rb.rb index b8044c119b..d050829915 100644 --- a/lib/rdoc/parsers/parse_rb.rb +++ b/lib/rdoc/parsers/parse_rb.rb @@ -1997,8 +1997,11 @@ module RDoc case tk when TkSEMICOLON break + when TkLBRACE + nest += 1 when TkRBRACE - break + nest -= 1 + break if nest <= 0 when TkLPAREN, TkfLPAREN nest += 1 when end_token diff --git a/lib/rdoc/ri/ri_options.rb b/lib/rdoc/ri/ri_options.rb index fe323ed45f..f0ba69f4d3 100644 --- a/lib/rdoc/ri/ri_options.rb +++ b/lib/rdoc/ri/ri_options.rb @@ -25,6 +25,9 @@ module RI # the formatting we apply to the output attr_reader :formatter + # the directory we search for original documentation + attr_reader :doc_dir + module OptionList OPTION_LIST = [ @@ -34,12 +37,16 @@ module RI [ "--classes", "-c", nil, "Display the names of classes and modules we\n" + "know about"], + + [ "--doc-dir", "-d", "", + "A directory to search for documentation. If not\n"+ + "specified, we search the standard rdoc/ri directories."], [ "--format", "-f", "", "Format to use when displaying output:\n" + " " + RI::TextFormatter.list + "\n" + "Use 'bs' (backspace) with most pager programs.\n" + - "To use ANSI, either also use the -T option, or\n\n" + + "To use ANSI, either also use the -T option, or\n" + "tell your pager to allow control characters\n" + "(for example using the -R option to less)"], @@ -116,54 +123,56 @@ module RI ri 'Array.[]' ri compact\\! - EOT + EOT - if short_form - puts "For help on options, type 'ri -h'" - puts "For a list of classes I know about, type 'ri -c'" - else - puts "Options:\n\n" - OPTION_LIST.each do |long, short, arg, desc| - opt = sprintf("%20s", "#{long}, #{short}") - oparg = sprintf("%-7s", arg) - print "#{opt} #{oparg}" - desc = desc.split("\n") - if arg.nil? || arg.length < 7 - puts desc.shift - else + if short_form + puts "For help on options, type 'ri -h'" + puts "For a list of classes I know about, type 'ri -c'" + else + puts "Options:\n\n" + OPTION_LIST.each do|long, short, arg, desc| + opt = sprintf("%15s", "#{long}, #{short}") + if arg + opt << " " << arg + end + print opt + desc = desc.split("\n") + if opt.size < 17 + print " "*(18-opt.size) + puts desc.shift + else + puts + end + desc.each do |line| + puts(" "*18 + line) + end puts end - desc.each do |line| - puts(" "*28 + line) - end - puts + exit 0 end - - exit 0 end end - end - # Parse command line options. def parse - + @use_stdout = !STDOUT.tty? @width = 72 @formatter = RI::TextFormatter.for("plain") - @list_classes = false + @list_classes = false begin - + go = GetoptLong.new(*OptionList.options) go.quiet = true - + go.each do |opt, arg| case opt when "--help" then OptionList.usage when "--no-pager" then @use_stdout = true when "--classes" then @list_classes = true + when "--doc-dir" then @doc_dir = arg when "--format" @formatter = RI::TextFormatter.for(arg) @@ -181,12 +190,18 @@ module RI end end end - + rescue GetoptLong::InvalidOption, GetoptLong::MissingArgument => error OptionList.error(error.message) - + end end + + # Return the doc_dir as an array, or nil if no overriding doc dir was given + def paths + @doc_dir ? [ @doc_dir ] : nil + end end + end diff --git a/lib/test/unit.rb b/lib/test/unit.rb index 7d2c464500..a784359136 100644 --- a/lib/test/unit.rb +++ b/lib/test/unit.rb @@ -1,3 +1,6 @@ +require 'test/unit/testcase' +require 'test/unit/autorunner' + # = Test::Unit - Ruby Unit Testing Framework # # == Introduction @@ -255,12 +258,8 @@ # missing points, etc., in this document (or any other). - - -require 'test/unit/testcase' -require 'test/unit/autorunner' - module Test + # For documentation, see module Test module Unit def self.run=(flag) @run = flag