summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraycabta <aycabta@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-12-08 17:39:52 +0000
committeraycabta <aycabta@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-12-08 17:39:52 +0000
commit18911e99d2960433f4e77e5f6ce28bf187dad5a9 (patch)
tree53e7e346b56da5d75973fa2447b2175ee08b62c8
parentf6a38e180e5abc4db445b8e50d698ced71dbea87 (diff)
Merge RDoc 6.1.0.beta3 from upstream
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66286 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--lib/rdoc/markup/parser.rb22
-rw-r--r--lib/rdoc/options.rb24
-rw-r--r--lib/rdoc/stats/normal.rb34
-rw-r--r--lib/rdoc/version.rb2
-rw-r--r--test/rdoc/minitest_helper.rb3
-rw-r--r--test/rdoc/test_rdoc_generator_json_index.rb29
-rw-r--r--test/rdoc/test_rdoc_markup_parser.rb35
-rw-r--r--test/rdoc/test_rdoc_rdoc.rb14
8 files changed, 96 insertions, 67 deletions
diff --git a/lib/rdoc/markup/parser.rb b/lib/rdoc/markup/parser.rb
index f08587e676..14f1f6c719 100644
--- a/lib/rdoc/markup/parser.rb
+++ b/lib/rdoc/markup/parser.rb
@@ -9,8 +9,9 @@ require 'strscan'
# 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
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
# 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
diff --git a/lib/rdoc/options.rb b/lib/rdoc/options.rb
index 99d7aaaec1..801a84b21f 100644
--- a/lib/rdoc/options.rb
+++ b/lib/rdoc/options.rb
@@ -164,7 +164,7 @@ class RDoc::Options
##
# 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
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
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
diff --git a/lib/rdoc/stats/normal.rb b/lib/rdoc/stats/normal.rb
index a3a6ff377e..0a22f0582b 100644
--- a/lib/rdoc/stats/normal.rb
+++ b/lib/rdoc/stats/normal.rb
@@ -26,28 +26,28 @@ class RDoc::Stats::Normal < RDoc::Stats::Quiet
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 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?
+ # 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
+
# 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
diff --git a/lib/rdoc/version.rb b/lib/rdoc/version.rb
index 7ad9d47a25..5e48f073da 100644
--- a/lib/rdoc/version.rb
+++ b/lib/rdoc/version.rb
@@ -3,6 +3,6 @@ module RDoc
##
# RDoc version you are using
- VERSION = '6.1.0.beta2'
+ VERSION = '6.1.0.beta3'
end
diff --git a/test/rdoc/minitest_helper.rb b/test/rdoc/minitest_helper.rb
index 9fb0cd676b..1814669bf9 100644
--- a/test/rdoc/minitest_helper.rb
+++ b/test/rdoc/minitest_helper.rb
@@ -1,8 +1,7 @@
# 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
diff --git a/test/rdoc/test_rdoc_generator_json_index.rb b/test/rdoc/test_rdoc_generator_json_index.rb
index 04bf2df340..ab8f6f1521 100644
--- a/test/rdoc/test_rdoc_generator_json_index.rb
+++ b/test/rdoc/test_rdoc_generator_json_index.rb
@@ -89,6 +89,12 @@ class TestRDocGeneratorJsonIndex < RDoc::TestCase
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::TestCase
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 = /
diff --git a/test/rdoc/test_rdoc_markup_parser.rb b/test/rdoc/test_rdoc_markup_parser.rb
index 6d4953bc06..344d67df39 100644
--- a/test/rdoc/test_rdoc_markup_parser.rb
+++ b/test/rdoc/test_rdoc_markup_parser.rb
@@ -1045,6 +1045,41 @@ the time
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
diff --git a/test/rdoc/test_rdoc_rdoc.rb b/test/rdoc/test_rdoc_rdoc.rb
index 97e98cffb7..4014ecfa54 100644
--- a/test/rdoc/test_rdoc_rdoc.rb
+++ b/test/rdoc/test_rdoc_rdoc.rb
@@ -69,13 +69,6 @@ class TestRDocRDoc < RDoc::TestCase
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
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')