mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
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
This commit is contained in:
parent
f6a38e180e
commit
18911e99d2
8 changed files with 96 additions and 67 deletions
|
@ -9,8 +9,9 @@ require 'strscan'
|
||||||
# RDoc::Markup::ToHTML.
|
# RDoc::Markup::ToHTML.
|
||||||
#
|
#
|
||||||
# The parser only handles the block-level constructs Paragraph, List,
|
# The parser only handles the block-level constructs Paragraph, List,
|
||||||
# ListItem, Heading, Verbatim, BlankLine and Rule. Inline markup such as
|
# ListItem, Heading, Verbatim, BlankLine, Rule and BlockQuote.
|
||||||
# <tt>\+blah\+</tt> is handled separately by RDoc::Markup::AttributeManager.
|
# 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
|
# 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.
|
# RDoc markup to format text in your program read RDoc::Markup.
|
||||||
|
@ -381,6 +382,17 @@ class RDoc::Markup::Parser
|
||||||
when :TEXT then
|
when :TEXT then
|
||||||
unget
|
unget
|
||||||
parse_text parent, indent
|
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
|
when *LIST_TOKENS then
|
||||||
unget
|
unget
|
||||||
parent << build_list(indent)
|
parent << build_list(indent)
|
||||||
|
@ -504,8 +516,12 @@ class RDoc::Markup::Parser
|
||||||
# text:: followed by spaces or end of line => :NOTE
|
# text:: followed by spaces or end of line => :NOTE
|
||||||
when @s.scan(/(.*?)::( +|\r?$)/) then
|
when @s.scan(/(.*?)::( +|\r?$)/) then
|
||||||
[:NOTE, @s[1], *token_pos(pos)]
|
[: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
|
# anything else: :TEXT
|
||||||
else @s.scan(/(.*?)( )?\r?$/)
|
else
|
||||||
|
@s.scan(/(.*?)( )?\r?$/)
|
||||||
token = [:TEXT, @s[1], *token_pos(pos)]
|
token = [:TEXT, @s[1], *token_pos(pos)]
|
||||||
|
|
||||||
if @s[2] then
|
if @s[2] then
|
||||||
|
|
|
@ -164,7 +164,7 @@ class RDoc::Options
|
||||||
##
|
##
|
||||||
# Files matching this pattern will be excluded
|
# Files matching this pattern will be excluded
|
||||||
|
|
||||||
attr_accessor :exclude
|
attr_writer :exclude
|
||||||
|
|
||||||
##
|
##
|
||||||
# The list of files to be processed
|
# The list of files to be processed
|
||||||
|
@ -493,6 +493,20 @@ class RDoc::Options
|
||||||
end
|
end
|
||||||
end
|
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
|
# Completes any unfinished option setup business such as filtering for
|
||||||
# existent files, creating a regexp for #exclude and setting a default
|
# existent files, creating a regexp for #exclude and setting a default
|
||||||
|
@ -505,13 +519,7 @@ class RDoc::Options
|
||||||
root = @root.to_s
|
root = @root.to_s
|
||||||
@rdoc_include << root unless @rdoc_include.include?(root)
|
@rdoc_include << root unless @rdoc_include.include?(root)
|
||||||
|
|
||||||
if @exclude.nil? or Regexp === @exclude then
|
@exclude = self.exclude
|
||||||
# done, #finish is being re-run
|
|
||||||
elsif @exclude.empty? then
|
|
||||||
@exclude = nil
|
|
||||||
else
|
|
||||||
@exclude = Regexp.new(@exclude.join("|"))
|
|
||||||
end
|
|
||||||
|
|
||||||
finish_page_dir
|
finish_page_dir
|
||||||
|
|
||||||
|
|
|
@ -26,28 +26,28 @@ class RDoc::Stats::Normal < RDoc::Stats::Quiet
|
||||||
files_so_far,
|
files_so_far,
|
||||||
@num_files)
|
@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?
|
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
|
# Clean the line with whitespaces so that leftover output from the
|
||||||
# previous line doesn't show up.
|
# previous line doesn't show up.
|
||||||
$stdout.print("\r" + (" " * @last_width) + ("\b" * @last_width) + "\r") if @last_width && @last_width > 0
|
$stdout.print("\r\e[K") if @last_width && @last_width > 0
|
||||||
@last_width = line.size
|
@last_width = progress_bar.size + filename.size
|
||||||
$stdout.print("#{line}\r")
|
term = "\r"
|
||||||
else
|
else
|
||||||
$stdout.puts(line)
|
term = "\n"
|
||||||
end
|
end
|
||||||
|
$stdout.print(progress_bar, filename, term)
|
||||||
$stdout.flush
|
$stdout.flush
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,6 @@ module RDoc
|
||||||
##
|
##
|
||||||
# RDoc version you are using
|
# RDoc version you are using
|
||||||
|
|
||||||
VERSION = '6.1.0.beta2'
|
VERSION = '6.1.0.beta3'
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
require 'bundler/errors'
|
|
||||||
begin
|
begin
|
||||||
gem 'minitest', '~> 5.0'
|
gem 'minitest', '~> 5.0'
|
||||||
rescue NoMethodError, Gem::LoadError, Bundler::GemfileNotFound
|
rescue NoMethodError, Gem::LoadError
|
||||||
# for ruby tests
|
# for ruby tests
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -89,6 +89,12 @@ class TestRDocGeneratorJsonIndex < RDoc::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_generate
|
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)
|
srcdir = File.expand_path('lib/rdoc', @pwd)
|
||||||
if !File.directory? srcdir
|
if !File.directory? srcdir
|
||||||
# for Ruby core repository
|
# for Ruby core repository
|
||||||
|
@ -96,33 +102,12 @@ class TestRDocGeneratorJsonIndex < RDoc::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
orig_file = Pathname(File.join srcdir, 'generator/template/json_index/js/navigation.js')
|
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_file = Pathname(File.join @tmpdir, 'js/navigation.js')
|
||||||
generated_mtime = generated_file.mtime
|
|
||||||
|
|
||||||
# This is dirty hack on JRuby for MiniTest 4
|
# 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'
|
'.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 = File.read 'js/search_index.js'
|
||||||
|
|
||||||
json =~ /\Avar search_data = /
|
json =~ /\Avar search_data = /
|
||||||
|
|
|
@ -1045,6 +1045,41 @@ the time
|
||||||
assert_equal expected, @RMP.parse(" 1\n 2\n\n 3").parts
|
assert_equal expected, @RMP.parse(" 1\n 2\n\n 3").parts
|
||||||
end
|
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
|
def test_peek_token
|
||||||
parser = util_parser
|
parser = util_parser
|
||||||
|
|
||||||
|
|
|
@ -69,13 +69,6 @@ class TestRDocRDoc < RDoc::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_gather_files
|
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__
|
a = File.expand_path __FILE__
|
||||||
b = File.expand_path '../test_rdoc_text.rb', __FILE__
|
b = File.expand_path '../test_rdoc_text.rb', __FILE__
|
||||||
|
|
||||||
|
@ -189,13 +182,6 @@ class TestRDocRDoc < RDoc::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_normalized_file_list_with_dot_doc
|
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 = []
|
expected_files = []
|
||||||
files = temp_dir do |dir|
|
files = temp_dir do |dir|
|
||||||
a = File.expand_path('a.rb')
|
a = File.expand_path('a.rb')
|
||||||
|
|
Loading…
Reference in a new issue