summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorryan <ryan@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-07-08 23:17:53 +0000
committerryan <ryan@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-07-08 23:17:53 +0000
commit2bf2f48a0be06e57d596968358ff60f57e488b0d (patch)
tree75d28bc7c09f5119911e3543896c0eabc773a61e
parent8e1789ded76520406b9aba9ab47194b9257e83aa (diff)
cached rdoc diagrams, private rdoc comments, minor clarifications in debug.rb and pp.rb
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10491 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog20
-rw-r--r--lib/debug.rb2
-rw-r--r--lib/irb/completion.rb5
-rw-r--r--lib/pp.rb2
-rw-r--r--lib/rdoc/diagram.rb22
-rw-r--r--lib/rdoc/generators/html_generator.rb15
-rw-r--r--lib/rdoc/parsers/parse_c.rb7
7 files changed, 55 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog
index 8836c9cd574..444029cc759 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+Sun Jul 9 07:58:48 2006 Ryan Davis <ryand@zenspider.com>
+
+ * lib/rdoc/parsers/parse_f95.rb: massive overhaul from Yasuhiro
+ Morikawa including new file suffixes, function support, public
+ variables and constants, derived-types, defined operators and
+ assignments, namelists, and subroutine and function
+ arguments. Truly massive.
+
+ * lib/rdoc/diagram.rb: diagrams are now cached.
+
+ * lib/irb/completion.rb: fixed a crasher when completing against
+ an unnamed class/module.
+
+ * lib/rdoc/parsers/parse_c.rb: private comment (--/++) support in
+ C-file rdoc.
+
+ * lib/debug.rb: minor clarification in help.
+
+ * lib/pp.rb: minor clarification on exception.
+
Sun Jul 9 00:54:11 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (next_jump): deal with destination of next.
diff --git a/lib/debug.rb b/lib/debug.rb
index 8b522821a52..9ae119f8fb7 100644
--- a/lib/debug.rb
+++ b/lib/debug.rb
@@ -551,7 +551,7 @@ Commands
b[reak] [class.]<line|method>
set breakpoint to some position
wat[ch] <expression> set watchpoint to some expression
- cat[ch] <an Exception> set catchpoint to an exception
+ cat[ch] (<exception>|off) set catchpoint to an exception
b[reak] list breakpoints
cat[ch] show catchpoint
del[ete][ nnn] delete some or all breakpoints
diff --git a/lib/irb/completion.rb b/lib/irb/completion.rb
index e51a92adc14..ac227fee90d 100644
--- a/lib/irb/completion.rb
+++ b/lib/irb/completion.rb
@@ -137,9 +137,10 @@ module IRB
else
# func1.func2
candidates = []
+ name = m.name rescue ""
ObjectSpace.each_object(Module){|m|
- next if m.name != "IRB::Context" and
- /^(IRB|SLex|RubyLex|RubyToken)/ =~ m.name
+ next if name != "IRB::Context" and
+ /^(IRB|SLex|RubyLex|RubyToken)/ =~ name
candidates.concat m.instance_methods(false)
}
candidates.sort!
diff --git a/lib/pp.rb b/lib/pp.rb
index 266949e22ba..bc614841483 100644
--- a/lib/pp.rb
+++ b/lib/pp.rb
@@ -318,7 +318,7 @@ class PP < PrettyPrint
# implement #pretty_print, or a RuntimeError will be raised.
def pretty_print_inspect
if /\(PP::ObjectMixin\)#/ =~ method(:pretty_print).inspect
- raise "pretty_print is not overridden."
+ raise "pretty_print is not overridden for #{self.class}"
end
PP.singleline_pp(self, '')
end
diff --git a/lib/rdoc/diagram.rb b/lib/rdoc/diagram.rb
index bbaa7043653..9fdc49c02ef 100644
--- a/lib/rdoc/diagram.rb
+++ b/lib/rdoc/diagram.rb
@@ -38,6 +38,7 @@ module RDoc
@options = options
@counter = 0
File.makedirs(DOT_PATH)
+ @diagram_cache = {}
end
# Draw the diagrams. We traverse the files, drawing a diagram for
@@ -55,7 +56,6 @@ module RDoc
@local_names = find_names(i)
@global_names = []
@global_graph = graph = DOT::DOTDigraph.new('name' => 'TopLevel',
- 'label' => i.file_absolute_name,
'fontname' => FONT,
'fontsize' => '8',
'bgcolor' => 'lightcyan1',
@@ -73,7 +73,7 @@ module RDoc
end
add_classes(i, graph, i.file_relative_name)
- i.diagram = convert_to_png("f_#{file_count}", graph, i.name)
+ i.diagram = convert_to_png("f_#{file_count}", graph)
# now go through and document each top level class and
# module independently
@@ -83,7 +83,6 @@ module RDoc
@global_names = []
@global_graph = graph = DOT::DOTDigraph.new('name' => 'TopLevel',
- 'label' => i.full_name,
'fontname' => FONT,
'fontsize' => '8',
'bgcolor' => 'lightcyan1',
@@ -95,8 +94,7 @@ module RDoc
'fontsize' => 8)
draw_module(mod, graph, true)
mod.diagram = convert_to_png("m_#{file_count}_#{count}",
- graph,
- "Module: #{mod.name}")
+ graph)
end
end
$stderr.puts unless @options.quiet
@@ -280,7 +278,9 @@ module RDoc
end
- def convert_to_png(file_base, graph, name)
+ def convert_to_png(file_base, graph)
+ str = graph.to_s
+ return @diagram_cache[str] if @diagram_cache[str]
op_type = Options.instance.image_format
dotfile = File.join(DOT_PATH, file_base)
src = dotfile + ".dot"
@@ -292,7 +292,7 @@ module RDoc
end
File.open(src, 'w+' ) do |f|
- f << graph.to_s << "\n"
+ f << str << "\n"
end
system "dot", "-T#{op_type}", src, "-o", dot
@@ -300,7 +300,9 @@ module RDoc
# Now construct the imagemap wrapper around
# that png
- return wrap_in_image_map(src, dot, name)
+ ret = wrap_in_image_map(src, dot)
+ @diagram_cache[str] = ret
+ return ret
end
# Extract the client-side image map from dot, and use it
@@ -308,7 +310,7 @@ module RDoc
# <map>..<img> combination, suitable for inclusion on
# the page
- def wrap_in_image_map(src, dot, name)
+ def wrap_in_image_map(src, dot)
res = %{<map id="map" name="map">\n}
dot_map = `dot -Tismap #{src}`
dot_map.each do |area|
@@ -326,7 +328,7 @@ module RDoc
res << "</map>\n"
# map_file = src.sub(/.dot/, '.map')
# system("dot -Timap #{src} -o #{map_file}")
- res << %{<img src="#{dot}" usemap="#map" border="0" alt="#{name}" />}
+ res << %{<img src="#{dot}" usemap="#map" border="0" alt="#{dot}">}
return res
end
end
diff --git a/lib/rdoc/generators/html_generator.rb b/lib/rdoc/generators/html_generator.rb
index be79226c8e6..1f9b808e8de 100644
--- a/lib/rdoc/generators/html_generator.rb
+++ b/lib/rdoc/generators/html_generator.rb
@@ -114,7 +114,12 @@ module Generators
lookup = name
end
- if /([A-Z].*)[.\#](.*)/ =~ lookup
+ # Find class, module, or method in class or module.
+ if /([A-Z]\w*)[.\#](\w+[!?=]?)/ =~ lookup
+ container = $1
+ method = $2
+ ref = @context.find_symbol(container, method)
+ elsif /([A-Za-z]\w*)[.\#](\w+(\([\.\w+\*\/\+\-\=\<\>]+\))?)/ =~ lookup
container = $1
method = $2
ref = @context.find_symbol(container, method)
@@ -206,12 +211,14 @@ module Generators
unless defined? @markup
@markup = SM::SimpleMarkup.new
- # class names, variable names, file names, or instance variables
+ # class names, variable names, or instance variables
@markup.add_special(/(
- \b([A-Z]\w*(::\w+)*[.\#]\w+) # A::B.meth
+ \w+(::\w+)*[.\#]\w+(\([\.\w+\*\/\+\-\=\<\>]+\))? # A::B.meth(**) (for operator in Fortran95)
+ | \#\w+(\([.\w\*\/\+\-\=\<\>]+\))? # meth(**) (for operator in Fortran95)
+ | \b([A-Z]\w*(::\w+)*[.\#]\w+) # A::B.meth
| \b([A-Z]\w+(::\w+)*) # A::B..
| \#\w+[!?=]? # #meth_name
- | \b\w+([_\/\.]+\w+)+[!?=]? # meth_name
+ | \b\w+([_\/\.]+\w+)*[!?=]? # meth_name
)/x,
:CROSSREF)
diff --git a/lib/rdoc/parsers/parse_c.rb b/lib/rdoc/parsers/parse_c.rb
index 89d36c6c500..e43fb008290 100644
--- a/lib/rdoc/parsers/parse_c.rb
+++ b/lib/rdoc/parsers/parse_c.rb
@@ -212,6 +212,11 @@ module RDoc
$stderr.flush
end
+ def remove_private_comments(comment)
+ comment.gsub!(/\/?\*--(.*?)\/?\*\+\+/m, '')
+ comment.sub!(/\/?\*--.*/m, '')
+ end
+
# remove lines that are commented out that might otherwise get
# picked up when scanning for classes and methods
@@ -552,6 +557,8 @@ module RDoc
comment, params = $1, $2
body_text = $&
+ remove_private_comments(comment) if comment
+
# see if we can find the whole body
re = Regexp.escape(body_text) + '[^(]*^\{.*?^\}'