ruby-changes:54068
From: aycabta <ko1@a...>
Date: Sun, 9 Dec 2018 02:40:00 +0900 (JST)
Subject: [ruby-changes:54068] aycabta:r66286 (trunk): Merge RDoc 6.1.0.beta3 from upstream
aycabta 2018-12-09 02:39:52 +0900 (Sun, 09 Dec 2018) New Revision: 66286 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=66286 Log: Merge RDoc 6.1.0.beta3 from upstream Modified files: trunk/lib/rdoc/markup/parser.rb trunk/lib/rdoc/options.rb trunk/lib/rdoc/stats/normal.rb trunk/lib/rdoc/version.rb trunk/test/rdoc/minitest_helper.rb trunk/test/rdoc/test_rdoc_generator_json_index.rb trunk/test/rdoc/test_rdoc_markup_parser.rb trunk/test/rdoc/test_rdoc_rdoc.rb Index: lib/rdoc/markup/parser.rb =================================================================== --- lib/rdoc/markup/parser.rb (revision 66285) +++ lib/rdoc/markup/parser.rb (revision 66286) @@ -9,8 +9,9 @@ require 'strscan' https://github.com/ruby/ruby/blob/trunk/lib/rdoc/markup/parser.rb#L9 # RDoc::Markup::ToHTML. # # The parser only handles the block-level constructs Paragraph, List, -# ListItem, Heading, Verbatim, BlankLine and Rule. Inline markup such as -# <tt>\+blah\+</tt> is handled separately by RDoc::Markup::AttributeManager. +# ListItem, Heading, Verbatim, BlankLine, Rule and BlockQuote. +# Inline markup such as <tt>\+blah\+</tt> is handled separately by +# RDoc::Markup::AttributeManager. # # To see what markup the Parser implements read RDoc. To see how to use # RDoc markup to format text in your program read RDoc::Markup. @@ -381,6 +382,17 @@ class RDoc::Markup::Parser https://github.com/ruby/ruby/blob/trunk/lib/rdoc/markup/parser.rb#L382 when :TEXT then unget parse_text parent, indent + when :BLOCKQUOTE then + type, _, column = get + if type == :NEWLINE + type, _, column = get + end + unget if type + bq = RDoc::Markup::BlockQuote.new + p :blockquote_start => [data, column] if @debug + parse bq, column + p :blockquote_end => indent if @debug + parent << bq when *LIST_TOKENS then unget parent << build_list(indent) @@ -504,8 +516,12 @@ class RDoc::Markup::Parser https://github.com/ruby/ruby/blob/trunk/lib/rdoc/markup/parser.rb#L516 # text:: followed by spaces or end of line => :NOTE when @s.scan(/(.*?)::( +|\r?$)/) then [:NOTE, @s[1], *token_pos(pos)] + # >>> followed by end of line => :BLOCKQUOTE + when @s.scan(/>>> *(\w+)?$/) then + [:BLOCKQUOTE, @s[1], *token_pos(pos)] # anything else: :TEXT - else @s.scan(/(.*?)( )?\r?$/) + else + @s.scan(/(.*?)( )?\r?$/) token = [:TEXT, @s[1], *token_pos(pos)] if @s[2] then Index: lib/rdoc/version.rb =================================================================== --- lib/rdoc/version.rb (revision 66285) +++ lib/rdoc/version.rb (revision 66286) @@ -3,6 +3,6 @@ module RDoc https://github.com/ruby/ruby/blob/trunk/lib/rdoc/version.rb#L3 ## # RDoc version you are using - VERSION = '6.1.0.beta2' + VERSION = '6.1.0.beta3' end Index: lib/rdoc/options.rb =================================================================== --- lib/rdoc/options.rb (revision 66285) +++ lib/rdoc/options.rb (revision 66286) @@ -164,7 +164,7 @@ class RDoc::Options https://github.com/ruby/ruby/blob/trunk/lib/rdoc/options.rb#L164 ## # Files matching this pattern will be excluded - attr_accessor :exclude + attr_writer :exclude ## # The list of files to be processed @@ -494,6 +494,20 @@ class RDoc::Options https://github.com/ruby/ruby/blob/trunk/lib/rdoc/options.rb#L494 end ## + # Create a regexp for #exclude + + def exclude + if @exclude.nil? or Regexp === @exclude then + # done, #finish is being re-run + @exclude + elsif @exclude.empty? then + nil + else + Regexp.new(@exclude.join("|")) + end + end + + ## # Completes any unfinished option setup business such as filtering for # existent files, creating a regexp for #exclude and setting a default # #template. @@ -505,13 +519,7 @@ class RDoc::Options https://github.com/ruby/ruby/blob/trunk/lib/rdoc/options.rb#L519 root = @root.to_s @rdoc_include << root unless @rdoc_include.include?(root) - if @exclude.nil? or Regexp === @exclude then - # done, #finish is being re-run - elsif @exclude.empty? then - @exclude = nil - else - @exclude = Regexp.new(@exclude.join("|")) - end + @exclude = self.exclude finish_page_dir Index: lib/rdoc/stats/normal.rb =================================================================== --- lib/rdoc/stats/normal.rb (revision 66285) +++ lib/rdoc/stats/normal.rb (revision 66286) @@ -26,28 +26,28 @@ class RDoc::Stats::Normal < RDoc::Stats: https://github.com/ruby/ruby/blob/trunk/lib/rdoc/stats/normal.rb#L26 files_so_far, @num_files) - # Print a progress bar, but make sure it fits on a single line. Filename - # will be truncated if necessary. - size = IO.respond_to?(:console_size) ? IO.console_size : IO.console.winsize - terminal_width = size[1].to_i.nonzero? || 80 - max_filename_size = terminal_width - progress_bar.size + if $stdout.tty? + # Print a progress bar, but make sure it fits on a single line. Filename + # will be truncated if necessary. + size = IO.respond_to?(:console_size) ? IO.console_size : IO.console.winsize + terminal_width = size[1].to_i.nonzero? || 80 + max_filename_size = (terminal_width - progress_bar.size) - 1 - if filename.size > max_filename_size then - # Turn "some_long_filename.rb" to "...ong_filename.rb" - filename = filename[(filename.size - max_filename_size) .. -1] - filename[0..2] = "..." - end + if filename.size > max_filename_size then + # Turn "some_long_filename.rb" to "...ong_filename.rb" + filename = filename[(filename.size - max_filename_size) .. -1] + filename[0..2] = "..." + end - line = "#{progress_bar}#{filename}" - if $stdout.tty? # Clean the line with whitespaces so that leftover output from the # previous line doesn't show up. - $stdout.print("\r" + (" " * @last_width) + ("\b" * @last_width) + "\r") if @last_width && @last_width > 0 - @last_width = line.size - $stdout.print("#{line}\r") + $stdout.print("\r\e[K") if @last_width && @last_width > 0 + @last_width = progress_bar.size + filename.size + term = "\r" else - $stdout.puts(line) + term = "\n" end + $stdout.print(progress_bar, filename, term) $stdout.flush end Index: test/rdoc/minitest_helper.rb =================================================================== --- test/rdoc/minitest_helper.rb (revision 66285) +++ test/rdoc/minitest_helper.rb (revision 66286) @@ -1,8 +1,7 @@ https://github.com/ruby/ruby/blob/trunk/test/rdoc/minitest_helper.rb#L1 # frozen_string_literal: true -require 'bundler/errors' begin gem 'minitest', '~> 5.0' -rescue NoMethodError, Gem::LoadError, Bundler::GemfileNotFound +rescue NoMethodError, Gem::LoadError # for ruby tests end Index: test/rdoc/test_rdoc_generator_json_index.rb =================================================================== --- test/rdoc/test_rdoc_generator_json_index.rb (revision 66285) +++ test/rdoc/test_rdoc_generator_json_index.rb (revision 66286) @@ -89,6 +89,12 @@ class TestRDocGeneratorJsonIndex < RDoc: https://github.com/ruby/ruby/blob/trunk/test/rdoc/test_rdoc_generator_json_index.rb#L89 end def test_generate + @g.generate + + assert_file 'js/searcher.js' + assert_file 'js/navigation.js' + assert_file 'js/search_index.js' + srcdir = File.expand_path('lib/rdoc', @pwd) if !File.directory? srcdir # for Ruby core repository @@ -96,33 +102,12 @@ class TestRDocGeneratorJsonIndex < RDoc: https://github.com/ruby/ruby/blob/trunk/test/rdoc/test_rdoc_generator_json_index.rb#L102 end orig_file = Pathname(File.join srcdir, 'generator/template/json_index/js/navigation.js') - orig_time = orig_file.mtime - - now = Time.now - @g.generate - - assert_file 'js/searcher.js' - assert_file 'js/navigation.js' - assert_file 'js/search_index.js' - generated_file = Pathname(File.join @tmpdir, 'js/navigation.js') - generated_mtime = generated_file.mtime # This is dirty hack on JRuby for MiniTest 4 - assert orig_file.mtime.inspect == generated_mtime.inspect, + assert orig_file.mtime.inspect == generated_file.mtime.inspect, '.js files should be tha same timestamp of original' - assert generated_mtime < now, proc {t = Time.now; <<~INSPECT} - .js files should be the same timestamp, - path : #{generated_file} - mtime: #{generated_mtime} - orig : #{orig_time} -> #{orig_file.mtime}, #{orig_file.mtime-orig_time} - now : #{now} -> #{t}, #{t-now} - INSPECT - - generated_search_index = Pathname(File.join @tmpdir, 'js/search_index.js') - assert generated_search_index.mtime > (now - 1), 'search_index.js should be generated timestamp' - json = File.read 'js/search_index.js' json =~ /\Avar search_data = / Index: test/rdoc/test_rdoc_rdoc.rb =================================================================== --- test/rdoc/test_rdoc_rdoc.rb (revision 66285) +++ test/rdoc/test_rdoc_rdoc.rb (revision 66286) @@ -69,13 +69,6 @@ class TestRDocRDoc < RDoc::TestCase https://github.com/ruby/ruby/blob/trunk/test/rdoc/test_rdoc_rdoc.rb#L69 end def test_gather_files - # TODO: dummy finish - # RDoc::Options#@exclude is initialized as an empty array. - # Then, #finish converts it to a regexp or nil and reassign it to @exclude. - # RDoc#gather_files assumes that #finish has been already called. - # So, it forces to assign nil to @exclude. - @rdoc.options.exclude = nil - a = File.expand_path __FILE__ b = File.expand_path '../test_rdoc_text.rb', __FILE__ @@ -189,13 +182,6 @@ class TestRDocRDoc < RDoc::TestCase https://github.com/ruby/ruby/blob/trunk/test/rdoc/test_rdoc_rdoc.rb#L182 end def test_normalized_file_list_with_dot_doc - # TODO: dummy finish - # RDoc::Options#@exclude is initialized as an empty array. - # Then, #finish converts it to a regexp or nil and reassign it to @exclude. - # RDoc#normalized_file_list assumes that #finish has been already called. - # So, it forces to assign nil to @exclude. - @rdoc.options.exclude = nil - expected_files = [] files = temp_dir do |dir| a = File.expand_path('a.rb') Index: test/rdoc/test_rdoc_markup_parser.rb =================================================================== --- test/rdoc/test_rdoc_markup_parser.rb (revision 66285) +++ test/rdoc/test_rdoc_markup_parser.rb (revision 66286) @@ -1045,6 +1045,41 @@ the time https://github.com/ruby/ruby/blob/trunk/test/rdoc/test_rdoc_markup_parser.rb#L1045 assert_equal expected, @RMP.parse(" 1\n 2\n\n 3").parts end + def test_parse_block_quote + expected = [ + @RM::BlockQuote.new(@RM::Paragraph.new("foo")) + ] + assert_equal expected, @RMP.parse(<<-DOC).parts +>>> + foo + DOC + + expected = [ + @RM::BlockQuote.new(@RM::Paragraph.new("foo"), + @RM::Verbatim.new("code\n"), + @RM::Paragraph.new("bar")) + ] + assert_equal expected, @RMP.parse(<<-DOC).parts +>>> + foo + code + bar + DOC + + expected = [ + @RM::BlockQuote.new(@RM::Paragraph.new("foo"), + @RM::BlockQuote.new(@RM::Paragraph.new("bar")), + @RM::Paragraph.new("zot")) + ] + assert_equal expected, @RMP.parse(<<-DOC).parts +>>> + foo + >>> + bar + zot + DOC + end + def test_peek_token parser = util_parser -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/