diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-08-02 02:39:36 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-08-02 02:39:36 +0000 |
commit | a781b40242a475ada741cc0765f2ec2d2524e3d9 (patch) | |
tree | edb66ef8a42194244e6c2c80fdbf90cedc58b896 | |
parent | c2dbf58575ecc96663bd7b9e0745d7662b680d13 (diff) |
Revert r32803.
Do you know "code freeze"?
Anyway this breaks make rdoc.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@32808 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
33 files changed, 570 insertions, 1025 deletions
@@ -1,12 +1,3 @@ -Tue Aug 2 03:55:41 2011 Eric Hodel <drbrain@segment7.net> - - * lib/rdoc: Update to 3.9.1. Fixes === lines in verbatim sections. - Fixes :nodoc: on class aliases. Fixes :stopdoc: creating references - to Object. Fixes spacing when class comments are merged in ri. - Fixes `ri []` crash. Fixes bug report URL when rdoc crashes. Adds - :doc: and :nodoc: to allow hiding of implementation details in ruby. - Makes `rdoc` and `ri` gem-aware. - Tue Aug 2 03:26:02 2011 NAKAMURA Usaku <usa@ruby-lang.org> * test/rake/test_rake_directory_task.rb (TestRakeDirectoryTask# @@ -258,7 +258,7 @@ with all sufficient information, see the ChangeLog file. https://github.com/jimweirich/rake/blob/master/CHANGES * RDoc - * RDoc has been upgraded from 2.5.8 to 3.9.1. For full release notes see + * RDoc has been upgraded from 2.5.8 to 3.8. For full release notes see http://docs.seattlerb.org/rdoc/History_txt.html * rexml @@ -8,13 +8,6 @@ # # $Revision$ -begin - gem 'rdoc' -rescue NameError => e # --disable-gems - raise unless e.name == :gem -rescue Gem::LoadError -end - require 'rdoc/rdoc' begin @@ -1,12 +1,5 @@ #!/usr/bin/env ruby -begin - gem 'rdoc' -rescue NameError => e # --disable-gems - raise unless e.name == :gem -rescue Gem::LoadError -end - require 'rdoc/ri/driver' RDoc::RI::Driver.run ARGV diff --git a/lib/rdoc.rb b/lib/rdoc.rb index 86c194f8ba..187b7d4d51 100644 --- a/lib/rdoc.rb +++ b/lib/rdoc.rb @@ -104,7 +104,7 @@ module RDoc ## # RDoc version you are using - VERSION = '3.9.1' + VERSION = '3.8' ## # Method visibilities diff --git a/lib/rdoc/class_module.rb b/lib/rdoc/class_module.rb index 27066d8bd7..e104101dcc 100644 --- a/lib/rdoc/class_module.rb +++ b/lib/rdoc/class_module.rb @@ -222,9 +222,6 @@ class RDoc::ClassModule < RDoc::Context end end - ## - # TODO: filter included items by #display? - def marshal_dump # :nodoc: attrs = attributes.sort.map do |attr| [ attr.name, attr.rw, diff --git a/lib/rdoc/code_object.rb b/lib/rdoc/code_object.rb index 54826fffbd..606fd8ff49 100644 --- a/lib/rdoc/code_object.rb +++ b/lib/rdoc/code_object.rb @@ -114,7 +114,6 @@ class RDoc::CodeObject @done_documenting = false @force_documentation = false @received_nodoc = false - @ignored = false end ## @@ -141,13 +140,6 @@ class RDoc::CodeObject end ## - # Should this CodeObject be shown in documentation? - - def display? - @document_self and not @ignored - end - - ## # Enables or disables documentation of this CodeObject's children unless it # has been turned off by :enddoc: @@ -203,11 +195,6 @@ class RDoc::CodeObject self end - ## - # File name where this CodeObject was found. - # - # See also RDoc::Context#in_files - def file_name return unless @file @@ -234,34 +221,6 @@ class RDoc::CodeObject end ## - # Use this to ignore a CodeObject and all its children until found again - # (#record_location is called). An ignored item will not be shown in - # documentation. - # - # See github issue #55 - # - # The ignored status is temporary in order to allow implementation details - # to be hidden. At the end of processing a file RDoc allows all classes - # and modules to add new documentation to previously created classes. - # - # If a class was ignored (via stopdoc) then reopened later with additional - # documentation it should be shown. If a class was ignored and never - # reopened it should not be shown. The ignore flag allows this to occur. - - def ignore - @ignored = true - - stop_doc - end - - ## - # Has this class been ignored? - - def ignored? - @ignored - end - - ## # File name of our parent def parent_file_name @@ -279,7 +238,6 @@ class RDoc::CodeObject # Records the RDoc::TopLevel (file) where this code object was defined def record_location top_level - @ignored = false @file = top_level end @@ -292,7 +250,6 @@ class RDoc::CodeObject @document_self = true @document_children = true - @ignored = false end ## diff --git a/lib/rdoc/context.rb b/lib/rdoc/context.rb index abdab2026d..d2552c647c 100644 --- a/lib/rdoc/context.rb +++ b/lib/rdoc/context.rb @@ -423,7 +423,6 @@ class RDoc::Context < RDoc::CodeObject if klass then # if TopLevel, it may not be registered in the classes: enclosing.classes_hash[name] = klass - # update the superclass if needed if superclass then existing = klass.superclass @@ -624,10 +623,8 @@ class RDoc::Context < RDoc::CodeObject ## # Is there any content? - # - # This means any of: comment, aliases, methods, attributes, external - # aliases, require, constant. - # + # This means any of: comment, aliases, methods, attributes, + # external aliases, require, constant. # Includes are also checked unless <tt>includes == false</tt>. def any_content(includes = true) diff --git a/lib/rdoc/generator/darkfish.rb b/lib/rdoc/generator/darkfish.rb index a3ffea0ce8..299e6b7dec 100644 --- a/lib/rdoc/generator/darkfish.rb +++ b/lib/rdoc/generator/darkfish.rb @@ -192,7 +192,7 @@ class RDoc::Generator::Darkfish top_level = klass.full_name.gsub( /::.*/, '' ) [nscounts[top_level] * -1, klass.full_name] end.select do |klass| - klass.display? + klass.document_self end end diff --git a/lib/rdoc/generator/template/darkfish/classpage.rhtml b/lib/rdoc/generator/template/darkfish/classpage.rhtml index 9c74cacf0f..856321532b 100644 --- a/lib/rdoc/generator/template/darkfish/classpage.rhtml +++ b/lib/rdoc/generator/template/darkfish/classpage.rhtml @@ -176,8 +176,6 @@ </div><!-- description --> <% klass.each_section do |section, constants, attributes| %> - <% constants = constants.select { |const| const.display? } %> - <% attributes = attributes.select { |attr| attr.display? } %> <div id="<%= section.aref %>" class="documentation-section"> <% if section.title then %> <h2 class="section-header"> diff --git a/lib/rdoc/markup.rb b/lib/rdoc/markup.rb index 3dd2459e61..6122fcac65 100644 --- a/lib/rdoc/markup.rb +++ b/lib/rdoc/markup.rb @@ -269,43 +269,40 @@ require 'rdoc' # preceding the first character with a backslash (see <i>Escaping # Text Markup</i>, below). # -# === Links +# === Hyperlinks # -# Links to starting with +http:+, +https:+, +mailto:+, +ftp:+ or +www.+ +# Hyperlinks to the web starting with +http:+, +mailto:+, +ftp:+ or +www.+ # are recognized. An HTTP url that references an external image file is -# converted into an inline image element. +# converted into an inline <img...>. Hyperlinks starting with +link:+ are +# assumed to refer to local files whose path is relative to the <tt>--op</tt> +# directory. # -# Links starting with <tt>rdoc-ref:</tt> will link to the referenced class, -# module, method, file, etc. If the referenced item is not documented the -# text will be and no link will be generated. +# Hyperlinks can also be of the form _label_[_url_], in which +# case _label_ is used in the displayed text, and _url_ is +# used as the target. If _label_ contains multiple words, +# put it in braces: {<em>multi word label</em>}[url]. # -# Links starting with +link:+ refer to local files whose path is relative to -# the <tt>--op</tt> directory. +# Example hyperlinks: # -# Links can also be of the form <tt>label[url]</tt>, in which case +label+ is -# used in the displayed text, and +url+ is used as the target. If +label+ -# contains multiple words, put it in braces: <tt>{multi word label}[url]<tt>. -# -# Example links: -# -# https://github.com/rdoc/rdoc +# link:RDoc.html +# http://rdoc.rubyforge.org # mailto:user@example.com # {RDoc Documentation}[http://rdoc.rubyforge.org] -# {RDoc Markup}[rdoc-ref:RDoc::Markup] +# {RDoc Markup}[link:RDoc/Markup.html] # # === Escaping Text Markup # # Text markup can be escaped with a backslash, as in \<tt>, which was obtained -# with <tt>\\<tt></tt>. Except in verbatim sections and between \<tt> tags, -# to produce a backslash you have to double it unless it is followed by a +# with "<tt>\\<tt></tt>". Except in verbatim sections and between \<tt> tags, +# to produce a backslash, you have to double it unless it is followed by a # space, tab or newline. Otherwise, the HTML formatter will discard it, as it -# is used to escape potential links: +# is used to escape potential hyperlinks: # # * The \ must be doubled if not followed by white space: \\. # * But not in \<tt> tags: in a Regexp, <tt>\S</tt> matches non-space. # * This is a link to {ruby-lang}[www.ruby-lang.org]. # * This is not a link, however: \{ruby-lang.org}[www.ruby-lang.org]. -# * This will not be linked to \RDoc::RDoc#document +# * This will not be hyperlinked to \RDoc::RDoc#document # # generates: # @@ -313,16 +310,16 @@ require 'rdoc' # * But not in \<tt> tags: in a Regexp, <tt>\S</tt> matches non-space. # * This is a link to {ruby-lang}[www.ruby-lang.org] # * This is not a link, however: \{ruby-lang.org}[www.ruby-lang.org] -# * This will not be linked to \RDoc::RDoc#document +# * This will not be hyperlinked to \RDoc::RDoc#document # -# Inside \<tt> tags, more precisely, leading backslashes are removed only if -# followed by a markup character (<tt><*_+</tt>), a backslash, or a known link -# reference (a known class or method). So in the example above, the backslash -# of <tt>\S</tt> would be removed if there was a class or module named +S+ in -# the current context. +# Inside \<tt> tags, more precisely, leading backslashes are removed +# only if followed by a markup character (<tt><*_+</tt>), a backslash, +# or a known hyperlink reference (a known class or method). So in the +# example above, the backslash of <tt>\S</tt> would be removed +# if there was a class or module named +S+ in the current context. # -# This behavior is inherited from RDoc version 1, and has been kept for -# compatibility with existing RDoc documentation. +# This behavior is inherited from RDoc version 1, and has been kept +# for compatibility with existing RDoc documentation. # # === Conversion of characters # @@ -381,10 +378,11 @@ require 'rdoc' # # ... # end # -# Names of classes, files, and any method names containing an underscore or -# preceded by a hash character are automatically linked from comment text to -# their description. This linking works inside the current class or module, -# and with ancestor methods (in included modules or in the superclass). +# Names of classes, files, and any method names containing an +# underscore or preceded by a hash character are automatically hyperlinked +# from comment text to their description. This hyperlinking works inside +# the current class or module, and with ancestor methods (in included modules +# or in the superclass). # # Method parameter lists are extracted and displayed with the method # description. If a method calls +yield+, then the parameters passed to yield diff --git a/lib/rdoc/markup/document.rb b/lib/rdoc/markup/document.rb index 7077f357d3..6fbef33ae3 100644 --- a/lib/rdoc/markup/document.rb +++ b/lib/rdoc/markup/document.rb @@ -71,7 +71,9 @@ class RDoc::Markup::Document # Does this document have no parts? def empty? - @parts.empty? or (@parts.length == 1 and merged? and @parts.first.empty?) + @parts.empty? or + (@parts.length == 1 and RDoc::Markup::Document === @parts.first and + @parts.first.empty?) end ## @@ -83,11 +85,6 @@ class RDoc::Markup::Document # The information in +other+ is preferred over the receiver def merge other - if empty? then - @parts = other.parts - return self - end - other.parts.each do |other_part| self.parts.delete_if do |self_part| self_part.file and self_part.file == other_part.file @@ -99,13 +96,6 @@ class RDoc::Markup::Document self end - ## - # Does this Document contain other Documents? - - def merged? - RDoc::Markup::Document === @parts.first - end - def pretty_print q # :nodoc: start = @file ? "[doc (#{@file}): " : '[doc: ' diff --git a/lib/rdoc/markup/formatter.rb b/lib/rdoc/markup/formatter.rb index bf904bba68..b6e12f82e7 100644 --- a/lib/rdoc/markup/formatter.rb +++ b/lib/rdoc/markup/formatter.rb @@ -4,10 +4,6 @@ require 'rdoc/markup' # Base class for RDoc markup formatters # # Formatters use a visitor pattern to convert content into output. -# -# If you'd like to write your own Formatter use -# RDoc::Markup::FormatterTestCase. If you're writing a text-output formatter -# use RDoc::Markup::TextFormatterTestCase which provides extra test cases. class RDoc::Markup::Formatter diff --git a/lib/rdoc/markup/parser.rb b/lib/rdoc/markup/parser.rb index c18ce821fb..68616d7787 100644 --- a/lib/rdoc/markup/parser.rb +++ b/lib/rdoc/markup/parser.rb @@ -86,18 +86,11 @@ class RDoc::Markup::Parser # Builds a Heading of +level+ def build_heading level - type, text, = get - - text = case type - when :TEXT then - skip :NEWLINE - text - else - unget - '' - end - - RDoc::Markup::Heading.new level, text + _, text, = get # TEXT + heading = RDoc::Markup::Heading.new level, text + skip :NEWLINE + + heading end ## @@ -412,19 +405,13 @@ class RDoc::Markup::Parser @line += 1 token # === text => :HEADER then :TEXT - when s.scan(/(=+)(\s*)/) then + when s.scan(/(=+)\s*/) then level = s[1].length - header = [:HEADER, level, *token_pos(pos)] - - if s[2] =~ /^\r?\n/ then - s.pos -= s[2].length - header - else - pos = s.pos - s.scan(/.*/) - @tokens << header - [:TEXT, s.matched.sub(/\r$/, ''), *token_pos(pos)] - end + level = 6 if level > 6 + @tokens << [:HEADER, level, *token_pos(pos)] + pos = s.pos + s.scan(/.*/) + [:TEXT, s.matched.sub(/\r$/, ''), *token_pos(pos)] # --- (at least 3) and nothing else on the line => :RULE when s.scan(/(-{3,}) *$/) then [:RULE, s[1].length - 2, *token_pos(pos)] diff --git a/lib/rdoc/markup/pre_process.rb b/lib/rdoc/markup/pre_process.rb index 53e8e38ec1..03f919aa0e 100644 --- a/lib/rdoc/markup/pre_process.rb +++ b/lib/rdoc/markup/pre_process.rb @@ -13,8 +13,6 @@ require 'rdoc/encoding' class RDoc::Markup::PreProcess - attr_accessor :options - @registered = {} ## @@ -40,7 +38,6 @@ class RDoc::Markup::PreProcess def initialize(input_file_name, include_path) @input_file_name = input_file_name @include_path = include_path - @options = nil end ## @@ -57,120 +54,54 @@ class RDoc::Markup::PreProcess # If +code_object+ is given and the param is set as metadata on the # +code_object+. See RDoc::CodeObject#metadata - def handle text, code_object = nil, &block - encoding = if defined?(Encoding) then text.encoding else nil end + def handle text, code_object = nil # regexp helper (square brackets for optional) # $1 $2 $3 $4 $5 # [prefix][\]:directive:[spaces][param]newline - text.gsub!(/^([ \t]*(?:#|\/?\*)?[ \t]*)(\\?):(\w+):([ \t]*)(.+)?\n/) do + text.gsub!(/^([ \t]*#?[ \t]*)(\\?):(\w+):([ \t]*)(.+)?\n/) do # skip something like ':toto::' next $& if $4.empty? and $5 and $5[0, 1] == ':' # skip if escaped next "#$1:#$3:#$4#$5\n" unless $2.empty? - handle_directive $1, $3, $5, code_object, encoding, &block - end - - text - end - - #-- - # When 1.8.7 support is ditched prefix can be defaulted to '' - - def handle_directive prefix, directive, param, code_object = nil, - encoding = nil - blankline = "#{prefix.strip}\n" - directive = directive.downcase - - case directive - when 'arg', 'args' then - return blankline unless code_object - - code_object.params = param - - blankline - when 'category' then - if RDoc::Context === code_object then - section = code_object.add_section param, '' - code_object.temporary_section = section - end - - blankline # ignore category if we're not on an RDoc::Context - when 'doc' then - return blankline unless code_object - code_object.document_self = true - code_object.force_documentation = true - - blankline - when 'enddoc' then - return blankline unless code_object - code_object.done_documenting = true - - blankline - when 'include' then - filename = param.split.first - include_file filename, prefix, encoding - when 'main' then - @options.main_page = param if @options.respond_to? :main_page - - blankline - when 'nodoc' then - return blankline unless code_object - code_object.document_self = nil # notify nodoc - code_object.document_children = param !~ /all/i - - blankline - when 'notnew', 'not_new', 'not-new' then - return blankline unless RDoc::AnyMethod === code_object - - code_object.dont_rename_initialize = true - - blankline - when 'startdoc' then - return blankline unless code_object - - code_object.start_doc - code_object.force_documentation = true - - blankline - when 'stopdoc' then - return blankline unless code_object - - code_object.stop_doc - - blankline - when 'title' then - @options.default_title = param if @options.respond_to? :default_title= - - blankline - when 'yield', 'yields' then - return blankline unless code_object - # remove parameter &block - code_object.params.sub!(/,?\s*&\w+/, '') if code_object.params - - code_object.block_params = param - - blankline - else - result = yield directive, param if block_given? - - case result - when nil then - code_object.metadata[directive] = param if code_object + prefix = $1 + directive = $3.downcase + param = $5 + + case directive + when 'include' then + filename = param.split[0] + encoding = if defined?(Encoding) then text.encoding else nil end + include_file filename, prefix, encoding + when 'category' then + if RDoc::Context === code_object then + section = code_object.add_section param, '' + code_object.temporary_section = section + end - if RDoc::Markup::PreProcess.registered.include? directive then - handler = RDoc::Markup::PreProcess.registered[directive] - result = handler.call directive, param if handler - else + '' # ignore category if we're not on an RDoc::Context + else + result = yield directive, param if block_given? + + case result + when nil then + code_object.metadata[directive] = param if code_object + if RDoc::Markup::PreProcess.registered.include? directive then + handler = RDoc::Markup::PreProcess.registered[directive] + result = handler.call directive, param if handler + else + result = "#{prefix}:#{directive}: #{param}\n" + end + when false then result = "#{prefix}:#{directive}: #{param}\n" end - when false then - result = "#{prefix}:#{directive}: #{param}\n" - end - result + result + end end + + text end ## diff --git a/lib/rdoc/markup/to_html.rb b/lib/rdoc/markup/to_html.rb index f87aabad6f..b518fbf265 100644 --- a/lib/rdoc/markup/to_html.rb +++ b/lib/rdoc/markup/to_html.rb @@ -70,7 +70,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter @list = nil @from_path = '' - # external links + # external hyperlinks @markup.add_special(/((link:|https?:|mailto:|ftp:|www\.)\S+\w)/, :HYPERLINK) # and links of the form <text>[<url>] @@ -84,7 +84,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter # These methods handle special markup added by RDoc::Markup#add_special. ## - # +special+ is a potential link. The following schemes are handled: + # +special+ is a potential hyperlink. The following schemes are handled: # # <tt>mailto:</tt>:: # Inserted as-is. @@ -97,13 +97,12 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter def handle_special_HYPERLINK(special) url = special.text - gen_url url, url end ## - # This +special+ is a link where the label is different from the URL - # <tt>label[url]</tt> or <tt>{long label}[url]</tt> + # This +special+ is a hyperlink where the label is different from the URL + # label[url] or {long label}[url] def handle_special_TIDYLINK(special) text = special.text @@ -233,8 +232,8 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter end ## - # Generate a link for +url+, labeled with +text+. Handles the special cases - # for img: and link: described under handle_special_HYPERLINK + # Generate a hyperlink for +url+, labeled with +text+. Handles the special + # cases for img: and link: described under handle_special_HYPERLINK def gen_url(url, text) if url =~ /([A-Za-z]+):(.*)/ then diff --git a/lib/rdoc/markup/to_html_crossref.rb b/lib/rdoc/markup/to_html_crossref.rb index 450ea960b5..aeecc3f4d0 100644 --- a/lib/rdoc/markup/to_html_crossref.rb +++ b/lib/rdoc/markup/to_html_crossref.rb @@ -1,19 +1,92 @@ require 'rdoc/markup/to_html' -require 'rdoc/cross_reference' ## -# Subclass of the RDoc::Markup::ToHtml class that supports looking up method -# names, classes, etc to create links. RDoc::CrossReference is used to -# generate those links based on the current context. +# Subclass of the RDoc::Markup::ToHtml class that supports looking up words +# from a context. Those that are found will be hyperlinked. class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml - # :stopdoc: - ALL_CROSSREF_REGEXP = RDoc::CrossReference::ALL_CROSSREF_REGEXP - CLASS_REGEXP_STR = RDoc::CrossReference::CLASS_REGEXP_STR - CROSSREF_REGEXP = RDoc::CrossReference::CROSSREF_REGEXP - METHOD_REGEXP_STR = RDoc::CrossReference::METHOD_REGEXP_STR - # :startdoc: + ## + # Regular expression to match class references + # + # 1. There can be a '\\' in front of text to suppress the cross-reference + # 2. There can be a '::' in front of class names to reference from the + # top-level namespace. + # 3. The method can be followed by parenthesis (not recommended) + + CLASS_REGEXP_STR = '\\\\?((?:\:{2})?[A-Z]\w*(?:\:\:\w+)*)' + + ## + # Regular expression to match method references. + # + # See CLASS_REGEXP_STR + + METHOD_REGEXP_STR = '([a-z]\w*[!?=]?)(?:\([\w.+*/=<>-]*\))?' + + ## + # Regular expressions matching text that should potentially have + # cross-reference links generated are passed to add_special. Note that + # these expressions are meant to pick up text for which cross-references + # have been suppressed, since the suppression characters are removed by the + # code that is triggered. + + CROSSREF_REGEXP = /( + # A::B::C.meth + #{CLASS_REGEXP_STR}(?:[.#]|::)#{METHOD_REGEXP_STR} + + # Stand-alone method (preceded by a #) + | \\?\##{METHOD_REGEXP_STR} + + # Stand-alone method (preceded by ::) + | ::#{METHOD_REGEXP_STR} + + # A::B::C + # The stuff after CLASS_REGEXP_STR is a + # nasty hack. CLASS_REGEXP_STR unfortunately matches + # words like dog and cat (these are legal "class" + # names in Fortran 95). When a word is flagged as a + # potential cross-reference, limitations in the markup + # engine suppress other processing, such as typesetting. + # This is particularly noticeable for contractions. + # In order that words like "can't" not + # be flagged as potential cross-references, only + # flag potential class cross-references if the character + # after the cross-reference is a space, sentence + # punctuation, tag start character, or attribute + # marker. + | #{CLASS_REGEXP_STR}(?=[\s\)\.\?\!\,\;<\000]|\z) + + # Things that look like filenames + # The key thing is that there must be at least + # one special character (period, slash, or + # underscore). + | (?:\.\.\/)*[-\/\w]+[_\/\.][-\w\/\.]+ + + # Things that have markup suppressed + # Don't process things like '\<' in \<tt>, though. + # TODO: including < is a hack, not very satisfying. + | \\[^\s<] + )/x + + ## + # Version of CROSSREF_REGEXP used when <tt>--hyperlink-all</tt> is specified. + + ALL_CROSSREF_REGEXP = /( + # A::B::C.meth + #{CLASS_REGEXP_STR}(?:[.#]|::)#{METHOD_REGEXP_STR} + + # Stand-alone method + | \\?#{METHOD_REGEXP_STR} + + # A::B::C + | #{CLASS_REGEXP_STR}(?=[\s\)\.\?\!\,\;<\000]|\z) + + # Things that look like filenames + | (?:\.\.\/)*[-\/\w]+[_\/\.][-\w\/\.]+ + + # Things that have markup suppressed + | \\[^\s<] + )/x ## # RDoc::CodeObject for generating references @@ -29,7 +102,7 @@ class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml # Creates a new crossref resolver that generates links relative to +context+ # which lives at +from_path+ in the generated files. '#' characters on # references are removed unless +show_hash+ is true. Only method names - # preceded by '#' or '::' are linked, unless +hyperlink_all+ is true. + # preceded by '#' or '::' are hyperlinked, unless +hyperlink_all+ is true. def initialize(from_path, context, show_hash, hyperlink_all = false, markup = nil) @@ -38,36 +111,22 @@ class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml crossref_re = hyperlink_all ? ALL_CROSSREF_REGEXP : CROSSREF_REGEXP - @cross_reference = RDoc::CrossReference.new context - @markup.add_special crossref_re, :CROSSREF - @markup.add_special(/rdoc-ref:\S+\w/, :HYPERLINK) - @from_path = from_path + @from_path = from_path + @context = context + @show_hash = show_hash @hyperlink_all = hyperlink_all - @show_hash = show_hash - end - - ## - # Creates a link to the reference +name+ if the name exists. If +text+ is - # given it is used as the link text, otherwise +name+ is used. - - def cross_reference name, text = nil - lookup = name - name = name[1..-1] unless @show_hash if name[0, 1] == '#' - - text = name unless text - - link lookup, text + @seen = {} end ## # We're invoked when any text matches the CROSSREF pattern. If we find the - # corresponding reference, generate a link. If the name we're looking for - # contains no punctuation, we look for it up the module/class chain. For - # example, ToHtml is found, even without the <tt>RDoc::Markup::</tt> prefix, - # because we look for it in module Markup first. + # corresponding reference, generate a hyperlink. If the name we're looking + # for contains no punctuation, we look for it up the module/class chain. + # For example, ToHtml is found, even without the <tt>RDoc::Markup::</tt> + # prefix, because we look for it in module Markup first. def handle_special_CROSSREF(special) name = special.text @@ -79,41 +138,66 @@ class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml return name if name =~ /\A[a-z]*\z/ end - cross_reference name - end - - ## - # Handles <tt>rdoc-ref:</tt> scheme links and allows RDoc::Markup::ToHtml to - # handle other schemes. - - def handle_special_HYPERLINK special - return cross_reference $' if special.text =~ /\Ardoc-ref:/ + return @seen[name] if @seen.include? name - super - end - - ## - # Generates links for <tt>rdoc-ref:</tt> scheme URLs and allows - # RDoc::Markup::ToHtml to handle other schemes. - - def gen_url url, text - return super unless url =~ /\Ardoc-ref:/ + lookup = name - cross_reference $', text - end + name = name[1..-1] unless @show_hash if name[0, 1] == '#' - ## - # Creates an HTML link to +name+ with the given +text+. + # Find class, module, or method in class or module. + # + # Do not, however, use an if/elsif/else chain to do so. Instead, test + # each possible pattern until one matches. The reason for this is that a + # string like "YAML.txt" could be the txt() class method of class YAML (in + # which case it would match the first pattern, which splits the string + # into container and method components and looks up both) or a filename + # (in which case it would match the last pattern, which just checks + # whether the string as a whole is a known symbol). + + if /#{CLASS_REGEXP_STR}([.#]|::)#{METHOD_REGEXP_STR}/ =~ lookup then + type = $2 + type = '' if type == '.' # will find either #method or ::method + method = "#{type}#{$3}" + container = @context.find_symbol_module($1) + elsif /^([.#]|::)#{METHOD_REGEXP_STR}/ =~ lookup then + type = $1 + type = '' if type == '.' + method = "#{type}#{$2}" + container = @context + else + container = nil + end - def link name, text - ref = @cross_reference.resolve name, text + if container then + ref = container.find_local_symbol method - case ref - when String then - ref - else - "<a href=\"#{ref.as_href @from_path}\">#{text}</a>" + unless ref || RDoc::TopLevel === container then + ref = container.find_ancestor_local_symbol method + end end + + ref = @context.find_symbol lookup unless ref + ref = nil if RDoc::Alias === ref # external alias: can't link to it + + out = if lookup == '\\' then + lookup + elsif lookup =~ /^\\/ then + # we remove the \ only in front of what we know: + # other backslashes are treated later, only outside of <tt> + ref ? $' : lookup + elsif ref then + if ref.document_self then + "<a href=\"#{ref.as_href @from_path}\">#{name}</a>" + else + name + end + else + lookup + end + + @seen[lookup] = out + + out end end diff --git a/lib/rdoc/parser.rb b/lib/rdoc/parser.rb index ba7b858595..b2559fa3a9 100644 --- a/lib/rdoc/parser.rb +++ b/lib/rdoc/parser.rb @@ -106,8 +106,6 @@ class RDoc::Parser # Applies +directive+'s +value+ to +code_object+, if appropriate def self.process_directive code_object, directive, value - warn "RDoc::Parser::process_directive is deprecated and wil be removed in RDoc 4. Use RDoc::Markup::PreProcess#handle_directive instead" if $-w - case directive when 'nodoc' then code_object.document_self = nil # notify nodoc @@ -198,9 +196,6 @@ class RDoc::Parser @content = content @options = options @stats = stats - - @preprocess = RDoc::Markup::PreProcess.new @file_name, @options.rdoc_include - @preprocess.options = @options end end diff --git a/lib/rdoc/parser/c.rb b/lib/rdoc/parser/c.rb index 3da1820c50..a0282d69f1 100644 --- a/lib/rdoc/parser/c.rb +++ b/lib/rdoc/parser/c.rb @@ -645,7 +645,9 @@ class RDoc::Parser::C < RDoc::Parser meth_obj.call_seq = $1.strip end - look_for_directives_in meth_obj, comment + if comment.sub!(/\s*:(nodoc|doc|yields?|args?):\s*(.*)/, '') then + RDoc::Parser.process_directive meth_obj, $1, $2 + end end ## @@ -911,10 +913,12 @@ class RDoc::Parser::C < RDoc::Parser # * :title: My Awesome Project # */ # - # This method modifies the +comment+ + # This routine modifies its parameter + + def look_for_directives_in(context, comment) + preprocess = RDoc::Markup::PreProcess.new @file_name, @options.rdoc_include - def look_for_directives_in context, comment - @preprocess.handle comment, context do |directive, param| + preprocess.handle comment, context do |directive, param| case directive when 'main' then @options.main_page = param diff --git a/lib/rdoc/parser/ruby.rb b/lib/rdoc/parser/ruby.rb index c9a12a8fe8..8b7c9c3eff 100644 --- a/lib/rdoc/parser/ruby.rb +++ b/lib/rdoc/parser/ruby.rb @@ -405,9 +405,17 @@ class RDoc::Parser::Ruby < RDoc::Parser # # This routine modifies its +comment+ parameter. - def look_for_directives_in context, comment - @preprocess.handle comment, context do |directive, param| + def look_for_directives_in(context, comment) + preprocess = RDoc::Markup::PreProcess.new @file_name, @options.rdoc_include + + preprocess.handle comment, context do |directive, param| case directive + when 'enddoc' then + context.done_documenting = true + '' + when 'main' then + @options.main_page = param if @options.respond_to? :main_page + '' when 'method', 'singleton-method', 'attr', 'attr_accessor', 'attr_reader', 'attr_writer' then false # handled elsewhere @@ -415,6 +423,16 @@ class RDoc::Parser::Ruby < RDoc::Parser context.set_current_section param, comment comment.replace '' break + when 'startdoc' then + context.start_doc + context.force_documentation = true + '' + when 'stopdoc' then + context.stop_doc + '' + when 'title' then + @options.default_title = param if @options.respond_to? :default_title= + '' end end @@ -611,7 +629,6 @@ class RDoc::Parser::Ruby < RDoc::Parser cls_type = single == SINGLE ? RDoc::SingleClass : RDoc::NormalClass cls = declaration_context.add_class cls_type, given_name, superclass - cls.ignore unless container.document_children read_documentation_modifiers cls, RDoc::CLASS_MODIFIERS cls.record_location @top_level @@ -662,7 +679,7 @@ class RDoc::Parser::Ruby < RDoc::Parser ## # Parses a constant in +context+ with +comment+ - def parse_constant container, tk, comment + def parse_constant(container, tk, comment) offset = tk.seek line_no = tk.line_no @@ -701,8 +718,7 @@ class RDoc::Parser::Ruby < RDoc::Parser when TkRPAREN, TkRBRACE, TkRBRACK, TkEND then nest -= 1 when TkCOMMENT then - if nest <= 0 && - (@scanner.lex_state == EXPR_END || !@scanner.continue) then + if nest <= 0 && @scanner.lex_state == EXPR_END unget_tk tk break end @@ -717,6 +733,7 @@ class RDoc::Parser::Ruby < RDoc::Parser end container.add_module_alias mod, name, @top_level if mod + get_tk # TkNL break end when TkNL then @@ -1310,7 +1327,11 @@ class RDoc::Parser::Ruby < RDoc::Parser keep_comment = true when TkCLASS then - parse_class container, single, tk, comment + if container.document_children then + parse_class container, single, tk, comment + else + nest += 1 + end when TkMODULE then if container.document_children then @@ -1495,13 +1516,11 @@ class RDoc::Parser::Ruby < RDoc::Parser ## # Parses statements in the top-level +container+ - def parse_top_level_statements container + def parse_top_level_statements(container) comment = collect_first_comment - look_for_directives_in container, comment - + look_for_directives_in(container, comment) # HACK move if to RDoc::Context#comment= container.comment = comment if container.document_self unless comment.empty? - parse_statements container, NORMAL, nil, comment end @@ -1624,17 +1643,16 @@ class RDoc::Parser::Ruby < RDoc::Parser # Handles the directive for +context+ if the directive is listed in +allow+. # This method is called for directives following a definition. - def read_documentation_modifiers context, allow + def read_documentation_modifiers(context, allow) directive, value = read_directive allow return unless directive - @preprocess.handle_directive '', directive, value, context do |dir, param| - if %w[notnew not_new not-new].include? dir then - context.dont_rename_initialize = true - - true - end + case directive + when 'notnew', 'not_new', 'not-new' then + context.dont_rename_initialize = true + else + RDoc::Parser.process_directive context, directive, value end end diff --git a/lib/rdoc/parser/ruby_tools.rb b/lib/rdoc/parser/ruby_tools.rb index 678f721624..3f6190884e 100644 --- a/lib/rdoc/parser/ruby_tools.rb +++ b/lib/rdoc/parser/ruby_tools.rb @@ -153,8 +153,6 @@ module RDoc::Parser::RubyTools @token_listeners.each do |obj| obj.pop_token end if @token_listeners - - nil end end diff --git a/lib/rdoc/ri/driver.rb b/lib/rdoc/ri/driver.rb index 26304dca96..a99f96cb56 100644 --- a/lib/rdoc/ri/driver.rb +++ b/lib/rdoc/ri/driver.rb @@ -387,8 +387,6 @@ Options may also be set in the 'RI' environment variable. klass.superclass unless klass.module? end.compact.shift || 'Object' - superclass = superclass.full_name unless String === superclass - "#{name} < #{superclass}" end @@ -453,7 +451,7 @@ Options may also be set in the 'RI' environment variable. # Adds a list of +methods+ to +out+ with a heading of +name+ def add_method_list out, methods, name - return if methods.empty? + return unless methods out << RDoc::Markup::Heading.new(1, "#{name}:") out << RDoc::Markup::BlankLine.new @@ -520,13 +518,11 @@ Options may also be set in the 'RI' environment variable. found.each do |store, klass| comment = klass.comment - # TODO the store's cache should always return an empty Array - class_methods = store.class_methods[klass.full_name] || [] - instance_methods = store.instance_methods[klass.full_name] || [] - attributes = store.attributes[klass.full_name] || [] + class_methods = store.class_methods[klass.full_name] + instance_methods = store.instance_methods[klass.full_name] + attributes = store.attributes[klass.full_name] - if comment.empty? and - instance_methods.empty? and class_methods.empty? then + if comment.empty? and !(instance_methods or class_methods) then also_in << store next end @@ -535,17 +531,7 @@ Options may also be set in the 'RI' environment variable. unless comment.empty? then out << RDoc::Markup::Rule.new(1) - - if comment.merged? then - parts = comment.parts - parts = parts.zip [RDoc::Markup::BlankLine.new] * parts.length - parts.flatten! - parts.pop - - out.push(*parts) - else - out << comment - end + out << comment end if class_methods or instance_methods or not klass.constants.empty? then @@ -568,12 +554,13 @@ Options may also be set in the 'RI' environment variable. end) out << list - out << RDoc::Markup::BlankLine.new end add_method_list out, class_methods, 'Class methods' add_method_list out, instance_methods, 'Instance methods' add_method_list out, attributes, 'Attributes' + + out << RDoc::Markup::BlankLine.new end add_also_in out, also_in @@ -1103,11 +1090,11 @@ Options may also be set in the 'RI' environment variable. # NOTE: Given Foo::Bar, Bar is considered a class even though it may be a # method - def parse_name name + def parse_name(name) parts = name.split(/(::|#|\.)/) if parts.length == 1 then - if parts.first =~ /^[a-z]|^([%&*+\/<>^`|~-]|\+@|-@|<<|<=>?|===?|=>|=~|>>|\[\]=?|~@)$/ then + if parts.first =~ /^[a-z]/ then type = '.' meth = parts.pop else diff --git a/lib/rdoc/text.rb b/lib/rdoc/text.rb index 3ac55ed560..aec334b545 100644 --- a/lib/rdoc/text.rb +++ b/lib/rdoc/text.rb @@ -126,7 +126,7 @@ Ruby #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL} #{RUBY_RELEASE_DATE} Please file a bug report with the above information at: -https://github.com/rdoc/rdoc/issues +http://rubyforge.org/tracker/?atid=2472&group_id=627&func=browse EOF raise diff --git a/test/rdoc/test_rdoc_code_object.rb b/test/rdoc/test_rdoc_code_object.rb index 89dc4b1744..cdac7eeed6 100644 --- a/test/rdoc/test_rdoc_code_object.rb +++ b/test/rdoc/test_rdoc_code_object.rb @@ -67,30 +67,6 @@ class TestRDocCodeObject < XrefTestCase assert_equal Encoding::UTF_8, @co.comment.encoding end - def test_display_eh_document_self - assert @co.display? - - @co.document_self = false - - refute @co.display? - end - - def test_display_eh_ignore - assert @co.display? - - @co.ignore - - refute @co.display? - - @co.stop_doc - - refute @co.display? - - @co.done_documenting = false - - refute @co.display? - end - def test_document_children_equals @co.document_children = false refute @co.document_children @@ -180,22 +156,6 @@ class TestRDocCodeObject < XrefTestCase assert_nil @co.instance_variable_get(:@full_name) end - def test_ignore - @co.ignore - - refute @co.document_self - refute @co.document_children - assert @co.ignored? - end - - def test_ignore_eh - refute @co.ignored? - - @co.ignore - - assert @co.ignored? - end - def test_line @c1_m.line = 5 @@ -242,16 +202,10 @@ class TestRDocCodeObject < XrefTestCase end def test_record_location - @co.record_location @xref_data + c = RDoc::CodeObject.new + c.record_location @xref_data - assert_equal 'xref_data.rb', @co.file.relative_name - end - - def test_record_location_ignored - @co.ignore - @co.record_location @xref_data - - refute @co.ignored? + assert_equal 'xref_data.rb', c.file.relative_name end def test_start_doc @@ -264,16 +218,6 @@ class TestRDocCodeObject < XrefTestCase assert @co.document_children end - def test_start_doc_ignored - @co.ignore - - @co.start_doc - - assert @co.document_self - assert @co.document_children - refute @co.ignored? - end - def test_stop_doc @co.document_self = true @co.document_children = true diff --git a/test/rdoc/test_rdoc_generator_darkfish.rb b/test/rdoc/test_rdoc_generator_darkfish.rb index faea1ae34a..b99803bac1 100644 --- a/test/rdoc/test_rdoc_generator_darkfish.rb +++ b/test/rdoc/test_rdoc_generator_darkfish.rb @@ -38,7 +38,6 @@ class TestRDocGeneratorDarkfish < MiniTest::Unit::TestCase @top_level = RDoc::TopLevel.new 'file.rb' @klass = @top_level.add_class RDoc::NormalClass, 'Object' - @meth = RDoc::AnyMethod.new nil, 'method' @meth_bang = RDoc::AnyMethod.new nil, 'method!' @attr = RDoc::Attr.new nil, 'attr', 'RW', '' @@ -46,9 +45,6 @@ class TestRDocGeneratorDarkfish < MiniTest::Unit::TestCase @klass.add_method @meth @klass.add_method @meth_bang @klass.add_attribute @attr - - @ignored = @top_level.add_class RDoc::NormalClass, 'Ignored' - @ignored.ignore end def teardown @@ -87,8 +83,6 @@ class TestRDocGeneratorDarkfish < MiniTest::Unit::TestCase File.read('Object.html')) assert_match(/<meta content="text\/html; charset=#{encoding}"/, File.read('file_rb.html')) - - refute_match(/Ignored/, File.read('index.html')) end def test_generate_dry_run diff --git a/test/rdoc/test_rdoc_markup_document.rb b/test/rdoc/test_rdoc_markup_document.rb index 9eea019ae4..6b4b5892ab 100644 --- a/test/rdoc/test_rdoc_markup_document.rb +++ b/test/rdoc/test_rdoc_markup_document.rb @@ -124,24 +124,6 @@ class TestRDocMarkupDocument < MiniTest::Unit::TestCase assert_equal expected, result end - def test_merge_empty - original = @RM::Document.new - root = @RM::Document.new original - - replace = @RM::Document.new @RM::Paragraph.new 'replace' - replace.file = 'file.rb' - - other = @RM::Document.new replace - - result = root.merge other - - inner = @RM::Document.new @RM::Paragraph.new 'replace' - inner.file = 'file.rb' - expected = @RM::Document.new inner - - assert_equal expected, result - end - def test_push @d.push @RM::BlankLine.new, @RM::BlankLine.new diff --git a/test/rdoc/test_rdoc_markup_parser.rb b/test/rdoc/test_rdoc_markup_parser.rb index e214c4defc..98c16a18ef 100644 --- a/test/rdoc/test_rdoc_markup_parser.rb +++ b/test/rdoc/test_rdoc_markup_parser.rb @@ -248,23 +248,6 @@ the time assert_equal expected, @RMP.parse(str).parts end - def test_parse_heading_empty - str = <<-STR -=== -* bullet - STR - - expected = [ - @RM::Heading.new(3, ''), - @RM::BlankLine.new, - @RM::List.new(:BULLET, *[ - @RM::ListItem.new(nil, - @RM::Paragraph.new('bullet'))]), - ] - - assert_equal expected, @RMP.parse(str).parts - end - def test_parse_heading_heading str = '= =' @@ -1102,23 +1085,6 @@ the time assert_equal expected, @RMP.tokenize(str) end - def test_tokenize_heading_empty - str = <<-STR -=== -* bullet - STR - - expected = [ - [:HEADER, 3, 0, 0], - [:NEWLINE, "\n", 3, 0], - [:BULLET, "*", 0, 1], - [:TEXT, "bullet", 2, 1], - [:NEWLINE, "\n", 8, 1], - ] - - assert_equal expected, @RMP.tokenize(str) - end - def test_tokenize_heading_heading str = <<-STR = = @@ -1400,44 +1366,6 @@ Example heading: assert_equal expected, @RMP.tokenize(str) end - def test_tokenize_verbatim_rule - str = <<-STR - Verbatim section here that is double-underlined - =============================================== - STR - - expected = [ - [:TEXT, 'Verbatim section here that is double-underlined', 2, 0], - [:NEWLINE, "\n", 49, 0], - [:HEADER, 47, 2, 1], - [:NEWLINE, "\n", 49, 1], - ] - - assert_equal expected, @RMP.tokenize(str) - end - - def test_tokenize_verbatim_rule_fancy - str = <<-STR - A - b - =============================================== - c - STR - - expected = [ - [:TEXT, 'A', 2, 0], - [:NEWLINE, "\n", 3, 0], - [:TEXT, 'b', 4, 1], - [:NEWLINE, "\n", 5, 1], - [:HEADER, 47, 2, 2], - [:NEWLINE, "\n", 49, 2], - [:TEXT, 'c', 4, 3], - [:NEWLINE, "\n", 5, 3], - ] - - assert_equal expected, @RMP.tokenize(str) - end - # HACK move to Verbatim test case def test_verbatim_normalize v = @RM::Verbatim.new "foo\n", "\n", "\n", "bar\n" diff --git a/test/rdoc/test_rdoc_markup_pre_process.rb b/test/rdoc/test_rdoc_markup_pre_process.rb index 9a0a302b3e..587a680f28 100644 --- a/test/rdoc/test_rdoc_markup_pre_process.rb +++ b/test/rdoc/test_rdoc_markup_pre_process.rb @@ -5,7 +5,6 @@ require 'rubygems' require 'minitest/autorun' require 'rdoc/markup/pre_process' require 'rdoc/code_objects' -require 'rdoc/options' class TestRDocMarkupPreProcess < MiniTest::Unit::TestCase @@ -20,8 +19,6 @@ class TestRDocMarkupPreProcess < MiniTest::Unit::TestCase end def teardown - RDoc::Markup::PreProcess.registered.clear - @tempfile.close end @@ -76,14 +73,6 @@ contents of a string. end def test_handle - text = "# :main: M\n" - out = @pp.handle text - - assert_same out, text - assert_equal "#\n", text - end - - def test_handle_unregistered text = "# :x: y\n" out = @pp.handle text @@ -91,329 +80,142 @@ contents of a string. assert_equal "# :x: y\n", text end - def test_handle_directive_blankline - result = @pp.handle_directive '#', 'arg', 'a, b' - - assert_equal "#\n", result - end - - def test_handle_directive_downcase - method = RDoc::AnyMethod.new nil, 'm' - - @pp.handle_directive '', 'ARG', 'a, b', method - - assert_equal 'a, b', method.params - end - - def test_handle_directive_arg - method = RDoc::AnyMethod.new nil, 'm' - - @pp.handle_directive '', 'arg', 'a, b', method - - assert_equal 'a, b', method.params - end - - def test_handle_directive_arg_no_context - result = @pp.handle_directive '', 'arg', 'a, b', nil - - assert_equal "\n", result - end - - def test_handle_directive_args - method = RDoc::AnyMethod.new nil, 'm' - - @pp.handle_directive '', 'args', 'a, b', method - - assert_equal 'a, b', method.params - end - - def test_handle_directive_block - result = @pp.handle_directive '', 'x', 'y' do |directive, param| - '' - end - - assert_empty result - end + def test_handle_block + text = "# :x: y\n" - def test_handle_directive_block_false - result = @pp.handle_directive '', 'x', 'y' do |directive, param| + @pp.handle text do |directive, param| false end - assert_equal ":x: y\n", result - end + assert_equal "# :x: y\n", text - def test_handle_directive_block_nil - result = @pp.handle_directive '', 'x', 'y' do |directive, param| - nil + @pp.handle text do |directive, param| + '' end - assert_equal ":x: y\n", result + assert_equal "", text end - def test_handle_directive_category + def test_handle_category context = RDoc::Context.new original_section = context.current_section - @pp.handle_directive '', 'category', 'other', context + text = "# :category: other\n" - refute_equal original_section, context.current_section - end - - def test_handle_directive_doc - code_object = RDoc::CodeObject.new - code_object.document_self = false - code_object.force_documentation = false - - @pp.handle_directive '', 'doc', nil, code_object - - assert code_object.document_self - assert code_object.force_documentation - end - - def test_handle_directive_doc_no_context - result = @pp.handle_directive '', 'doc', nil - - assert_equal "\n", result - end - - def test_handle_directive_enddoc - code_object = RDoc::CodeObject.new - - @pp.handle_directive '', 'enddoc', nil, code_object - - assert code_object.done_documenting - end - - def test_handle_directive_include - @tempfile.write 'included' - @tempfile.flush - - result = @pp.handle_directive '', 'include', @file_name - - assert_equal 'included', result - end - - def test_handle_directive_main - @pp.options = RDoc::Options.new - - @pp.handle_directive '', 'main', 'M' - - assert_equal 'M', @pp.options.main_page - end + @pp.handle text, context - def test_handle_directive_notnew - m = RDoc::AnyMethod.new nil, 'm' - - @pp.handle_directive '', 'notnew', nil, m - - assert m.dont_rename_initialize + refute_equal original_section, context.current_section end - def test_handle_directive_not_new - m = RDoc::AnyMethod.new nil, 'm' - - @pp.handle_directive '', 'not_new', nil, m - - assert m.dont_rename_initialize - end + def test_handle_code_object + cd = RDoc::CodeObject.new + text = "# :x: y\n" + @pp.handle text, cd - def test_handle_directive_not_dash_new - m = RDoc::AnyMethod.new nil, 'm' + assert_equal "# :x: y\n", text + assert_equal 'y', cd.metadata['x'] - @pp.handle_directive '', 'not-new', nil, m + cd.metadata.clear + text = "# :x:\n" + @pp.handle text, cd - assert m.dont_rename_initialize + assert_equal "# :x: \n", text + assert_includes cd.metadata, 'x' end - def test_handle_directive_nodoc - code_object = RDoc::CodeObject.new - code_object.document_self = true - code_object.document_children = true - - @pp.handle_directive '', 'nodoc', nil, code_object + def test_handle_code_object_block + cd = RDoc::CodeObject.new + text = "# :x: y\n" + @pp.handle text, cd do + false + end - refute code_object.document_self - assert code_object.document_children - end + assert_equal "# :x: y\n", text + assert_empty cd.metadata - def test_handle_directive_nodoc_all - code_object = RDoc::CodeObject.new - code_object.document_self = true - code_object.document_children = true + @pp.handle text, cd do + nil + end - @pp.handle_directive '', 'nodoc', 'all', code_object + assert_equal "# :x: y\n", text + assert_equal 'y', cd.metadata['x'] - refute code_object.document_self - refute code_object.document_children - end + cd.metadata.clear - def test_handle_directive_nodoc_no_context - result = @pp.handle_directive '', 'nodoc', nil + @pp.handle text, cd do + '' + end - assert_equal "\n", result + assert_equal '', text + assert_empty cd.metadata end - def test_handle_directive_registered + def test_handle_registered RDoc::Markup::PreProcess.register 'x' + text = "# :x: y\n" + @pp.handle text - result = @pp.handle_directive '', 'x', 'y' + assert_equal '', text - assert_nil result + text = "# :x: y\n" - result = @pp.handle_directive '', 'x', 'y' do |directive, param| + @pp.handle text do |directive, param| false end - assert_equal ":x: y\n", result + assert_equal "# :x: y\n", text + + text = "# :x: y\n" - result = @pp.handle_directive '', 'x', 'y' do |directive, param| + @pp.handle text do |directive, param| '' end - assert_equal '', result + assert_equal "", text end - def test_handle_directive_registered_block + def test_handle_registered_block called = nil - RDoc::Markup::PreProcess.register 'x' do |directive, param| called = [directive, param] 'blah' end - result = @pp.handle_directive '', 'x', 'y' + text = "# :x: y\n" + @pp.handle text - assert_equal 'blah', result + assert_equal 'blah', text assert_equal %w[x y], called end - def test_handle_directive_registered_code_object + def test_handle_registered_code_object RDoc::Markup::PreProcess.register 'x' - code_object = RDoc::CodeObject.new - - @pp.handle_directive '', 'x', 'y', code_object - - assert_equal 'y', code_object.metadata['x'] - - code_object.metadata.clear - - result = @pp.handle_directive '', 'x', 'y' do |directive, param| - false - end - - assert_equal ":x: y\n", result - assert_empty code_object.metadata - - result = @pp.handle_directive '', 'x', 'y' do |directive, param| - '' - end - - assert_equal '', result - assert_empty code_object.metadata - end - - def test_handle_directive_startdoc - code_object = RDoc::CodeObject.new - code_object.stop_doc - code_object.force_documentation = false - - @pp.handle_directive '', 'startdoc', nil, code_object - - assert code_object.document_self - assert code_object.document_children - assert code_object.force_documentation - end - - def test_handle_directive_stopdoc - code_object = RDoc::CodeObject.new - - @pp.handle_directive '', 'stopdoc', nil, code_object - - refute code_object.document_self - refute code_object.document_children - end - - def test_handle_directive_title - @pp.options = RDoc::Options.new - - @pp.handle_directive '', 'title', 'T' - - assert_equal 'T', @pp.options.title - end - - def test_handle_directive_unhandled - code_object = RDoc::CodeObject.new - - @pp.handle_directive '', 'x', 'y', code_object - - assert_equal 'y', code_object.metadata['x'] - - code_object.metadata.clear + cd = RDoc::CodeObject.new - @pp.handle_directive '', 'x', '', code_object + text = "# :x: y\n" + @pp.handle text, cd - assert_includes code_object.metadata, 'x' - end + assert_equal '', text + assert_equal 'y', cd.metadata['x'] - def test_handle_directive_unhandled_block - code_object = RDoc::CodeObject.new + cd.metadata.clear + text = "# :x: y\n" - @pp.handle_directive '', 'x', 'y', code_object do + @pp.handle text do |directive, param| false end - assert_empty code_object.metadata - - @pp.handle_directive '', 'x', 'y', code_object do - nil - end - - assert_equal 'y', code_object.metadata['x'] + assert_equal "# :x: y\n", text + assert_empty cd.metadata - code_object.metadata.clear + text = "# :x: y\n" - @pp.handle_directive '', 'x', 'y', code_object do + @pp.handle text do |directive, param| '' end - assert_empty code_object.metadata - end - - def test_handle_directive_yield - method = RDoc::AnyMethod.new nil, 'm' - method.params = 'index, &block' - - @pp.handle_directive '', 'yield', 'item', method - - assert_equal 'item', method.block_params - assert_equal 'index', method.params - end - - def test_handle_directive_yield_block_param - method = RDoc::AnyMethod.new nil, 'm' - method.params = '&block' - - @pp.handle_directive '', 'yield', 'item', method - - assert_equal 'item', method.block_params - assert_empty method.params - end - - def test_handle_directive_yield_no_context - method = RDoc::AnyMethod.new nil, 'm' - - @pp.handle_directive '', 'yield', 'item', method - - assert_equal 'item', method.block_params - end - - def test_handle_directive_yields - method = RDoc::AnyMethod.new nil, 'm' - - @pp.handle_directive '', 'yields', 'item', method - - assert_equal 'item', method.block_params + assert_equal "", text + assert_empty cd.metadata end end diff --git a/test/rdoc/test_rdoc_markup_to_html.rb b/test/rdoc/test_rdoc_markup_to_html.rb index 9c26c00906..b43adf1560 100644 --- a/test/rdoc/test_rdoc_markup_to_html.rb +++ b/test/rdoc/test_rdoc_markup_to_html.rb @@ -306,14 +306,6 @@ class TestRDocMarkupToHtml < RDoc::Markup::FormatterTestCase @to.gen_url('link:example', 'example') end - def test_handle_special_HYPERLINK_link - special = RDoc::Markup::Special.new 0, 'link:README.txt' - - link = @to.handle_special_HYPERLINK special - - assert_equal '<a href="README.txt">README.txt</a>', link - end - def test_list_verbatim_2 str = "* one\n verb1\n verb2\n* two\n" diff --git a/test/rdoc/test_rdoc_markup_to_html_crossref.rb b/test/rdoc/test_rdoc_markup_to_html_crossref.rb index 2c566f0140..8c97941727 100644 --- a/test/rdoc/test_rdoc_markup_to_html_crossref.rb +++ b/test/rdoc/test_rdoc_markup_to_html_crossref.rb @@ -10,94 +10,159 @@ class TestRDocMarkupToHtmlCrossref < XrefTestCase def setup super - @to = RDoc::Markup::ToHtmlCrossref.new 'index.html', @c1, true + @xref = RDoc::Markup::ToHtmlCrossref.new 'index.html', @c1, true end - def test_convert_CROSSREF - result = @to.convert 'C1' + def assert_ref(path, ref) + assert_equal "\n<p><a href=\"#{path}\">#{ref}</a></p>\n", @xref.convert(ref) + end - assert_equal "\n<p><a href=\"C1.html\">C1</a></p>\n", result + def refute_ref(body, ref) + assert_equal "\n<p>#{body}</p>\n", @xref.convert(ref) end - def test_convert_HYPERLINK_rdoc_ref - result = @to.convert 'rdoc-ref:C1' + def test_handle_special_CROSSREF_C2 + @xref = RDoc::Markup::ToHtmlCrossref.new 'classes/C2.html', @c2, true + + refute_ref '#m', '#m' + + assert_ref '../C1.html#method-c-m', 'C1::m' + assert_ref '../C2/C3.html', 'C2::C3' + assert_ref '../C2/C3.html#method-i-m', 'C2::C3#m' + assert_ref '../C2/C3/H1.html', 'C3::H1' + assert_ref '../C4.html', 'C4' - assert_equal "\n<p><a href=\"C1.html\">C1</a></p>\n", result + assert_ref '../C3/H2.html', 'C3::H2' + refute_ref 'H1', 'H1' end - def test_gen_url - assert_equal '<a href="C1.html">Some class</a>', - @to.gen_url('rdoc-ref:C1', 'Some class') + def test_handle_special_CROSSREF_C2_C3 + @xref = RDoc::Markup::ToHtmlCrossref.new 'classes/C2/C3.html', @c2_c3, true + + assert_ref '../../C2/C3.html#method-i-m', '#m' + + assert_ref '../../C2/C3.html', 'C3' + assert_ref '../../C2/C3.html#method-i-m', 'C3#m' + + assert_ref '../../C2/C3/H1.html', 'H1' + assert_ref '../../C2/C3/H1.html', 'C3::H1' - assert_equal '<a href="http://example">HTTP example</a>', - @to.gen_url('http://example', 'HTTP example') + assert_ref '../../C4.html', 'C4' + + assert_ref '../../C3/H2.html', 'C3::H2' end - def test_handle_special_CROSSREF - assert_equal "<a href=\"C2/C3.html\">C2::C3</a>", SPECIAL('C2::C3') + def test_handle_special_CROSSREF_C3 + @xref = RDoc::Markup::ToHtmlCrossref.new 'classes/C3.html', @c3, true + + assert_ref '../C3.html', 'C3' + + refute_ref '#m', '#m' + refute_ref 'C3#m', 'C3#m' + + assert_ref '../C3/H1.html', 'H1' + + assert_ref '../C3/H1.html', 'C3::H1' + assert_ref '../C3/H2.html', 'C3::H2' + + assert_ref '../C4.html', 'C4' end - def test_handle_special_CROSSREF_show_hash_false - @to.show_hash = false + def test_handle_special_CROSSREF_C4 + @xref = RDoc::Markup::ToHtmlCrossref.new 'classes/C4.html', @c4, true - assert_equal "<a href=\"C1.html#method-i-m\">m</a>", - SPECIAL('#m') + # C4 ref inside a C4 containing a C4 should resolve to the contained class + assert_ref '../C4/C4.html', 'C4' end - def test_handle_special_HYPERLINK_rdoc - RDoc::TopLevel.new 'README.txt' - @to = RDoc::Markup::ToHtmlCrossref.new 'C2.html', @c2, true + def test_handle_special_CROSSREF_C4_C4 + @xref = RDoc::Markup::ToHtmlCrossref.new 'classes/C4/C4.html', @c4_c4, true - link = @to.handle_special_HYPERLINK hyper 'C2::C3' + # A C4 reference inside a C4 class contained within a C4 class should + # resolve to the inner C4 class. + assert_ref '../../C4/C4.html', 'C4' + end - assert_equal '<a href="C2/C3.html">C2::C3</a>', link + def test_handle_special_CROSSREF_class + assert_ref 'C1.html', 'C1' + refute_ref 'H1', 'H1' - link = @to.handle_special_HYPERLINK hyper 'C4' + assert_ref 'C2.html', 'C2' + assert_ref 'C2/C3.html', 'C2::C3' + assert_ref 'C2/C3/H1.html', 'C2::C3::H1' - assert_equal '<a href="C4.html">C4</a>', link + assert_ref 'C3.html', '::C3' + assert_ref 'C3/H1.html', '::C3::H1' - link = @to.handle_special_HYPERLINK hyper 'README.txt' + assert_ref 'C4/C4.html', 'C4::C4' + end - assert_equal '<a href="README_txt.html">README.txt</a>', link + def test_handle_special_CROSSREF_file + assert_ref 'xref_data_rb.html', 'xref_data.rb' end - def test_handle_special_TIDYLINK_rdoc - RDoc::TopLevel.new 'README.txt' - @to = RDoc::Markup::ToHtmlCrossref.new 'C2.html', @c2, true + def test_handle_special_CROSSREF_method + refute_ref 'm', 'm' + assert_ref 'C1.html#method-i-m', '#m' + assert_ref 'C1.html#method-c-m', '::m' - link = @to.handle_special_TIDYLINK tidy 'C2::C3' + assert_ref 'C1.html#method-i-m', 'C1#m' + assert_ref 'C1.html#method-c-m', 'C1.m' + assert_ref 'C1.html#method-c-m', 'C1::m' - assert_equal '<a href="C2/C3.html">tidy</a>', link + assert_ref 'C1.html#method-i-m', 'C1#m' + assert_ref 'C1.html#method-i-m', 'C1#m()' + assert_ref 'C1.html#method-i-m', 'C1#m(*)' - link = @to.handle_special_TIDYLINK tidy 'C4' + assert_ref 'C1.html#method-c-m', 'C1.m' + assert_ref 'C1.html#method-c-m', 'C1.m()' + assert_ref 'C1.html#method-c-m', 'C1.m(*)' - assert_equal '<a href="C4.html">tidy</a>', link + assert_ref 'C1.html#method-c-m', 'C1::m' + assert_ref 'C1.html#method-c-m', 'C1::m()' + assert_ref 'C1.html#method-c-m', 'C1::m(*)' - link = @to.handle_special_TIDYLINK tidy 'README.txt' + assert_ref 'C2/C3.html#method-i-m', 'C2::C3#m' - assert_equal '<a href="README_txt.html">tidy</a>', link - end + assert_ref 'C2/C3.html#method-i-m', 'C2::C3.m' - def test_link - assert_equal 'n', @to.link('n', 'n') + # TODO stop escaping - HTML5 allows anything but space + assert_ref 'C2/C3/H1.html#method-i-m-3F', 'C2::C3::H1#m?' - assert_equal '<a href="C1.html#method-c-m">m</a>', @to.link('m', 'm') + assert_ref 'C2/C3.html#method-i-m', '::C2::C3#m' + assert_ref 'C2/C3.html#method-i-m', '::C2::C3#m()' + assert_ref 'C2/C3.html#method-i-m', '::C2::C3#m(*)' end - def SPECIAL text - @to.handle_special_CROSSREF special text - end + def test_handle_special_CROSSREF_no_ref + assert_equal '', @xref.convert('') - def hyper reference - RDoc::Markup::Special.new 0, "rdoc-ref:#{reference}" + refute_ref 'bogus', 'bogus' + refute_ref 'bogus', '\bogus' + refute_ref '\bogus', '\\\bogus' + + refute_ref '#n', '\#n' + refute_ref '#n()', '\#n()' + refute_ref '#n(*)', '\#n(*)' + + refute_ref 'C1', '\C1' + refute_ref '::C3', '\::C3' + + refute_ref '::C3::H1#n', '::C3::H1#n' + refute_ref '::C3::H1#n(*)', '::C3::H1#n(*)' + refute_ref '::C3::H1#n', '\::C3::H1#n' end - def special text - RDoc::Markup::Special.new 0, text + def test_handle_special_CROSSREF_show_hash_false + @xref.show_hash = false + + assert_equal "\n<p><a href=\"C1.html#method-i-m\">m</a></p>\n", + @xref.convert('#m') end - def tidy reference - RDoc::Markup::Special.new 0, "{tidy}[rdoc-ref:#{reference}]" + def test_handle_special_CROSSREF_special + assert_equal "\n<p><a href=\"C2/C3.html\">C2::C3</a>;method(*)</p>\n", + @xref.convert('C2::C3;method(*)') end end diff --git a/test/rdoc/test_rdoc_parser_ruby.rb b/test/rdoc/test_rdoc_parser_ruby.rb index 6086b3ec13..4904d5dfca 100644 --- a/test/rdoc/test_rdoc_parser_ruby.rb +++ b/test/rdoc/test_rdoc_parser_ruby.rb @@ -313,6 +313,22 @@ class C; end comment end + def test_look_for_directives_in_enddoc + util_parser "" + + @parser.look_for_directives_in @top_level, "# :enddoc:\n" + + assert @top_level.done_documenting + end + + def test_look_for_directives_in_main + util_parser "" + + @parser.look_for_directives_in @top_level, "# :main: new main page\n" + + assert_equal 'new main page', @options.main_page + end + def test_look_for_directives_in_method util_parser "" @@ -329,6 +345,31 @@ class C; end assert_equal "# :singleton-method: my_method\n", comment end + def test_look_for_directives_in_startdoc + util_parser "" + + @top_level.stop_doc + assert !@top_level.document_self + assert !@top_level.document_children + + @parser.look_for_directives_in @top_level, "# :startdoc:\n" + + assert @top_level.document_self + assert @top_level.document_children + end + + def test_look_for_directives_in_stopdoc + util_parser "" + + assert @top_level.document_self + assert @top_level.document_children + + @parser.look_for_directives_in @top_level, "# :stopdoc:\n" + + assert !@top_level.document_self + assert !@top_level.document_children + end + def test_look_for_directives_in_section util_parser "" @@ -343,6 +384,14 @@ class C; end assert_equal '', comment end + def test_look_for_directives_in_title + util_parser "" + + @parser.look_for_directives_in @top_level, "# :title: new title\n" + + assert_equal 'new title', @options.title + end + def test_look_for_directives_in_unhandled util_parser "" @@ -748,7 +797,12 @@ end @parser.parse_class @top_level, RDoc::Parser::Ruby::NORMAL, tk, comment - assert_empty @top_level.classes.first.comment + foo = @top_level.classes.first + assert_equal 'Foo', foo.full_name + assert_equal 'my class', foo.comment + assert_equal [@top_level], foo.in_files + assert_equal 0, foo.offset + assert_equal 1, foo.line end def test_parse_multi_ghost_methods @@ -2173,45 +2227,6 @@ end assert_empty @top_level.comment end - def test_parse_top_level_statements_stopdoc_integration - content = <<-CONTENT -# :stopdoc: - -class Example - def method_name - end -end - CONTENT - - util_parser content - - @parser.parse_top_level_statements @top_level - - assert_equal 1, @top_level.classes.length - assert_empty @top_level.modules - - assert @top_level.find_module_named('Example').ignored? - end - - # This tests parse_comment - def test_parse_top_level_statements_constant_nodoc_integration - content = <<-CONTENT -class A - C = A # :nodoc: -end - CONTENT - - util_parser content - - @parser.parse_top_level_statements @top_level - - klass = @top_level.find_module_named('A') - - c = klass.constants.first - - assert_nil c.document_self, 'C should not be documented' - end - def test_parse_yield_in_braces_with_parens klass = RDoc::NormalClass.new 'Foo' klass.parent = @top_level diff --git a/test/rdoc/test_rdoc_ri_driver.rb b/test/rdoc/test_rdoc_ri_driver.rb index e219993e57..da7d160047 100644 --- a/test/rdoc/test_rdoc_ri_driver.rb +++ b/test/rdoc/test_rdoc_ri_driver.rb @@ -5,7 +5,6 @@ require 'tmpdir' require 'fileutils' require 'stringio' require 'rdoc/ri/driver' -require 'rdoc/rdoc' class TestRDocRIDriver < MiniTest::Unit::TestCase @@ -224,7 +223,7 @@ class TestRDocRIDriver < MiniTest::Unit::TestCase def test_add_method_list_none out = @RM::Document.new - @driver.add_method_list out, [], 'Class' + @driver.add_method_list out, nil, 'Class' assert_equal @RM::Document.new, out end @@ -250,46 +249,6 @@ class TestRDocRIDriver < MiniTest::Unit::TestCase assert_equal expected, @driver.classes end - def test_class_document - util_store - - tl1 = RDoc::TopLevel.new 'one.rb' - tl2 = RDoc::TopLevel.new 'two.rb' - - @cFoo.add_comment 'one', tl1 - @cFoo.add_comment 'two', tl2 - @store.save_class @cFoo - - found = [ - [@store, @store.load_class(@cFoo.full_name)] - ] - - out = @driver.class_document @cFoo.full_name, found, [], [] - - expected = @RM::Document.new - @driver.add_class expected, 'Foo', [] - @driver.add_includes expected, [] - @driver.add_from expected, @store - expected << @RM::Rule.new(1) - - doc = @RM::Document.new(@RM::Paragraph.new('one')) - doc.file = 'one.rb' - expected.push doc - expected << @RM::BlankLine.new - doc = @RM::Document.new(@RM::Paragraph.new('two')) - doc.file = 'two.rb' - expected.push doc - - expected << @RM::Rule.new(1) - expected << @RM::Heading.new(1, 'Instance methods:') - expected << @RM::BlankLine.new - expected << @RM::Verbatim.new('inherit') - expected << @RM::Verbatim.new('override') - expected << @RM::BlankLine.new - - assert_equal expected, out - end - def test_complete store = RDoc::RI::Store.new @home_ri store.cache[:ancestors] = { @@ -674,24 +633,8 @@ Foo::Bar#bother def test_list_methods_matching util_store - assert_equal %w[ - Foo::Bar#attr - Foo::Bar#blah - Foo::Bar#bother - Foo::Bar::new - ], - @driver.list_methods_matching('Foo::Bar.').sort - end - - def test_list_methods_matching_inherit - util_multi_store - - assert_equal %w[ - Bar#baz - Bar#inherit - Bar#override - ], - @driver.list_methods_matching('Bar.').sort + assert_equal %w[Foo::Bar#attr Foo::Bar#blah Foo::Bar#bother Foo::Bar::new], + @driver.list_methods_matching('Foo::Bar.') end def test_list_methods_matching_regexp @@ -862,42 +805,6 @@ Foo::Bar#bother assert_equal 'baz', meth, 'Foo::Bar#baz method' end - def test_parse_name_special - specials = %w[ - % - & - * - + - +@ - - - -@ - / - < - << - <= - <=> - == - === - => - =~ - > - >> - [] - []= - ^ - ` - | - ~ - ~@ - ] - - specials.each do |special| - parsed = @driver.parse_name special - - assert_equal ['', '.', special], parsed - end - end - def _test_setup_pager # this test doesn't do anything anymore :( @driver.use_stdout = false @@ -957,28 +864,29 @@ Foo::Bar#bother def util_multi_store util_store - @store1 = @store - @top_level = RDoc::TopLevel.new 'file.rb' - @home_ri2 = "#{@home_ri}2" @store2 = RDoc::RI::Store.new @home_ri2 # as if seen in a namespace like class Ambiguous::Other - @mAmbiguous = @top_level.add_module RDoc::NormalModule, 'Ambiguous' + @mAmbiguous = RDoc::NormalModule.new 'Ambiguous' - @cFoo = @top_level.add_class RDoc::NormalClass, 'Foo' + @cFoo = RDoc::NormalClass.new 'Foo' - @cBar = @top_level.add_class RDoc::NormalClass, 'Bar', 'Foo' - @cFoo_Baz = @cFoo.add_class RDoc::NormalClass, 'Baz' + @cBar = RDoc::NormalClass.new 'Bar' + @cBar.superclass = 'Foo' + @cFoo_Baz = RDoc::NormalClass.new 'Baz' + @cFoo_Baz.parent = @cFoo - @baz = @cBar.add_method RDoc::AnyMethod.new(nil, 'baz') + @baz = RDoc::AnyMethod.new nil, 'baz' @baz.record_location @top_level + @cBar.add_method @baz - @override = @cBar.add_method RDoc::AnyMethod.new(nil, 'override') + @override = RDoc::AnyMethod.new nil, 'override' @override.comment = 'must be displayed' @override.record_location @top_level + @cBar.add_method @override @store2.save_class @mAmbiguous @store2.save_class @cBar @@ -990,8 +898,6 @@ Foo::Bar#bother @store2.save_cache @driver.stores = [@store1, @store2] - - RDoc::RDoc.reset end def util_store @@ -999,42 +905,53 @@ Foo::Bar#bother @top_level = RDoc::TopLevel.new 'file.rb' - @cFoo = @top_level.add_class RDoc::NormalClass, 'Foo' - @mInc = @top_level.add_module RDoc::NormalModule, 'Inc' - @cAmbiguous = @top_level.add_class RDoc::NormalClass, 'Ambiguous' + @cFoo = RDoc::NormalClass.new 'Foo' + @mInc = RDoc::NormalModule.new 'Inc' + @cAmbiguous = RDoc::NormalClass.new 'Ambiguous' doc = @RM::Document.new @RM::Paragraph.new('Include thingy') - @cFooInc = @cFoo.add_include RDoc::Include.new('Inc', doc) + + @cFooInc = RDoc::Include.new 'Inc', doc @cFooInc.record_location @top_level + @cFoo.add_include @cFooInc - @cFoo_Bar = @cFoo.add_class RDoc::NormalClass, 'Bar' + @cFoo_Bar = RDoc::NormalClass.new 'Bar' + @cFoo_Bar.parent = @cFoo - @blah = @cFoo_Bar.add_method RDoc::AnyMethod.new(nil, 'blah') + @blah = RDoc::AnyMethod.new nil, 'blah' @blah.call_seq = "blah(5) => 5\nblah(6) => 6\n" @blah.record_location @top_level - @bother = @cFoo_Bar.add_method RDoc::AnyMethod.new(nil, 'bother') + @bother = RDoc::AnyMethod.new nil, 'bother' @bother.block_params = "stuff" @bother.params = "(things)" @bother.record_location @top_level - @new = @cFoo_Bar.add_method RDoc::AnyMethod.new nil, 'new' + @new = RDoc::AnyMethod.new nil, 'new' @new.record_location @top_level @new.singleton = true - @attr = @cFoo_Bar.add_attribute RDoc::Attr.new nil, 'attr', 'RW', '' + @cFoo_Bar.add_method @blah + @cFoo_Bar.add_method @bother + @cFoo_Bar.add_method @new + + @attr = RDoc::Attr.new nil, 'attr', 'RW', '' @attr.record_location @top_level - @cFoo_Baz = @cFoo.add_class RDoc::NormalClass, 'Baz' - @cFoo_Baz.record_location @top_level + @cFoo_Bar.add_attribute @attr + + @cFoo_Baz = RDoc::NormalClass.new 'Baz' + @cFoo_Baz.parent = @cFoo - @inherit = @cFoo.add_method RDoc::AnyMethod.new(nil, 'inherit') + @inherit = RDoc::AnyMethod.new nil, 'inherit' @inherit.record_location @top_level + @cFoo.add_method @inherit # overriden by Bar in multi_store - @overriden = @cFoo.add_method RDoc::AnyMethod.new(nil, 'override') + @overriden = RDoc::AnyMethod.new nil, 'override' @overriden.comment = 'must not be displayed' @overriden.record_location @top_level + @cFoo.add_method @overriden @store.save_class @cFoo @store.save_class @cFoo_Bar @@ -1053,8 +970,6 @@ Foo::Bar#bother @store.save_cache @driver.stores = [@store] - - RDoc::RDoc.reset end end diff --git a/test/rdoc/xref_test_case.rb b/test/rdoc/xref_test_case.rb index a001700d3b..00c6e8e09d 100644 --- a/test/rdoc/xref_test_case.rb +++ b/test/rdoc/xref_test_case.rb @@ -43,11 +43,6 @@ class XrefTestCase < MiniTest::Unit::TestCase @c2_b = @c2.method_list.first @c2_c3 = @xref_data.find_module_named 'C2::C3' - @c2_c3_m = @c2_c3.method_list.first # C2::C3#m - - @c2_c3_h1 = @xref_data.find_module_named 'C2::C3::H1' - @c2_c3_h1_meh = @c2_c3_h1.method_list.first # C2::C3::H1#m? - @c3 = @xref_data.find_module_named 'C3' @c4 = @xref_data.find_module_named 'C4' @c4_c4 = @xref_data.find_module_named 'C4::C4' |