[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]