summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rw-r--r--lib/rdoc/README10
-rw-r--r--lib/rdoc/parsers/parse_rb.rb55
-rw-r--r--lib/rdoc/ri/ri_options.rb6
4 files changed, 57 insertions, 26 deletions
diff --git a/ChangeLog b/ChangeLog
index 67b18ccac4..2527450e50 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,18 @@ Thu Apr 1 19:58:37 2004 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp>
* lib/soap/mapping/{factory.rb,registry.rb}: fixed illegal mapped URI
object with soap/marshal.
added URIFactory class for URI mapping. BasetypeFactory checks
+Thu Apr 1 22:55:33 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb: Allow rdoc comments in
+ =begin rdoc/=end
+
+ * lib/rdoc/parsers/parse_rb.rb: Fix problem with comment in
+ top-level method being taken as file comment.
+
+Thu Apr 1 22:55:04 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_options.rb: Fix undefined variable warning.
+
instance_variables when original mapping is not allowed (ivar must
be empty). Instance of URI have instance_variables but it must be
llowed whenever original mapping is allowed or not.
diff --git a/lib/rdoc/README b/lib/rdoc/README
index 0c10d0ea69..6e234e31a5 100644
--- a/lib/rdoc/README
+++ b/lib/rdoc/README
@@ -240,7 +240,15 @@ can see the formatted result in EXAMPLE.rb and Anagram.
= Markup
-Comment blocks can be written fairly naturally.
+Comment blocks can be written fairly naturally, either using '#' on
+successive lines of the comment, or by including the comment in
+an =begin/=end block. If you use the latter form, the =begin line
+must be flagged with an RDoc tag:
+
+ =begin rdoc
+ Documentation to
+ be processed by RDoc.
+ =end
Paragraphs are lines that share the left margin. Text indented past
this margin are formatted verbatim.
diff --git a/lib/rdoc/parsers/parse_rb.rb b/lib/rdoc/parsers/parse_rb.rb
index e5276bf6c9..9988b71337 100644
--- a/lib/rdoc/parsers/parse_rb.rb
+++ b/lib/rdoc/parsers/parse_rb.rb
@@ -624,7 +624,14 @@ class RubyLex
ungetc
@ltype = nil
- Token(TkRD_COMMENT).set_text(str)
+
+ if str =~ /\A=begin\s+rdoc/i
+ str.sub!(/\A=begin.*\n/, '')
+ str.sub!(/^=end.*/m, '')
+ Token(TkCOMMENT).set_text(str)
+ else
+ Token(TkRD_COMMENT)#.set_text(str)
+ end
end
@OP.def_rule("\n") do
@@ -1394,7 +1401,7 @@ module RDoc
@read = []
catch(:eof) do
begin
- parse_statements(@top_level)
+ parse_toplevel_statements(@top_level)
rescue Exception => e
$stderr.puts "\n\n"
$stderr.puts "RDoc failure in #@input_file_name at or around " +
@@ -1546,26 +1553,30 @@ module RDoc
res
end
- def parse_statements(container, single=NORMAL, current_method = nil)
+ def parse_toplevel_statements(container)
+ comment = collect_first_comment
+ look_for_directives_in(container, comment)
+ container.comment = comment unless comment.empty?
+ parse_statements(container, NORMAL, nil, comment)
+ end
+
+ def parse_statements(container, single=NORMAL, current_method=nil, comment='')
nest = 1
save_visibility = container.visibility
-
- if container.kind_of?(TopLevel)
- comment = collect_first_comment
- look_for_directives_in(container, comment)
- container.comment = comment unless comment.empty?
- else
- comment = ''
- end
+
+# if container.kind_of?(TopLevel)
+# else
+# comment = ''
+# end
non_comment_seen = true
-
+
while tk = get_tk
-
+
keep_comment = false
-
+
non_comment_seen = true unless tk.kind_of?(TkCOMMENT)
-
+
# $stderr.puts "===== #{tk.inspect}"
# blank_line_seen = true
# while tk.kind_of?(TkNL)
@@ -1713,7 +1724,7 @@ module RDoc
end
end
-
+
def parse_class(container, single, tk, comment, &block)
progress("c")
@@ -1867,7 +1878,7 @@ module RDoc
@stats.num_methods += 1
line_no = tk.line_no
column = tk.char_no
-
+
start_collecting_tokens
add_token(tk)
add_token_listener(self)
@@ -1949,20 +1960,20 @@ module RDoc
meth.visibility = :public
end
end
-
+
parse_statements(container, single, meth)
-
+
remove_token_listener(meth)
-
+
meth.comment = comment
end
-
+
def skip_method(container)
meth = AnyMethod.new("", "anon")
parse_method_parameters(meth)
parse_statements(container, false, meth)
end
-
+
# Capture the method's parameters. Along the way,
# look for a comment containing
#
diff --git a/lib/rdoc/ri/ri_options.rb b/lib/rdoc/ri/ri_options.rb
index b9ee21f073..4c8531aa47 100644
--- a/lib/rdoc/ri/ri_options.rb
+++ b/lib/rdoc/ri/ri_options.rb
@@ -5,7 +5,7 @@ module RI
require 'rdoc/ri/ri_display'
- VERSION_STRING = "beta1"
+ VERSION_STRING = "ri: beta1"
CVS_ID = "$Id$";
class Options
@@ -171,7 +171,7 @@ module RI
# Show the version and exit
def show_version
cvs_info = CVS_ID.split
- puts "ri #{VERSION_STRING} (#{cvs_info[2]} #{cvs_info[3]})"
+ puts "#{VERSION_STRING} (#{cvs_info[2]} #{cvs_info[3]})"
exit(0)
end
@@ -230,7 +230,7 @@ module RI
# Return the doc_dir as an array, or nil if no overriding doc dir was given
def paths
- @doc_dir ? [ @doc_dir ] : nil
+ defined?(@doc_dir) ? [ @doc_dir ] : nil
end
# Return an instance of the displayer (the thing that actually writes